|
|
//
|
|
|
// G A M E.O.N.E - LOW LEVEL LIB V1.0
|
|
|
// Copyright (C) 2001 LEVEL ONE ENTERTAINMENT,
|
|
|
// Licensed under the terms of LGPL.
|
|
|
//:---------------------------------------------------------------------------
|
|
|
//:Description
|
|
|
//
|
|
|
// FRAMEWORK util timer, wait class
|
|
|
//
|
|
|
// CTimer
|
|
|
// CWait
|
|
|
//
|
|
|
|
|
|
#ifndef _CTIMER_H
|
|
|
#define _CTIMER_H
|
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
|
// CWait
|
|
|
// Ablauftimer mit manuellen Reset
|
|
|
/************************************************************************/
|
|
|
class CWait
|
|
|
{
|
|
|
public:
|
|
|
CWait()
|
|
|
{
|
|
|
Set(0.0f);
|
|
|
m_pause = false;
|
|
|
}
|
|
|
|
|
|
CWait(float wait)
|
|
|
{
|
|
|
Set(wait);
|
|
|
m_pause = false;
|
|
|
}
|
|
|
|
|
|
/************************************************************************/
|
|
|
/* Action(delta)... liefert true wenn timer abgelaufen */
|
|
|
/************************************************************************/
|
|
|
bool Action(float delta )
|
|
|
{
|
|
|
if( m_time <= 0.0f )
|
|
|
{
|
|
|
return true; // timer trigger
|
|
|
}
|
|
|
|
|
|
if( m_pause ) return false;
|
|
|
|
|
|
m_time -= delta;
|
|
|
if( m_time <= 0.0f ){
|
|
|
m_time = 0.0f;
|
|
|
return true;
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
bool IsActive()
|
|
|
{
|
|
|
return (m_time > 0.0f ) ? true : false;
|
|
|
}
|
|
|
|
|
|
void Set(float wait)
|
|
|
{
|
|
|
m_wait = m_time = wait; // Timer WAIT setzen
|
|
|
}
|
|
|
|
|
|
void Reset()
|
|
|
{
|
|
|
m_time = m_wait; // wait neu setzen
|
|
|
}
|
|
|
|
|
|
void Load(float ntime)
|
|
|
{
|
|
|
m_time = ntime; // wert setzen
|
|
|
}
|
|
|
|
|
|
void Stop()
|
|
|
{
|
|
|
m_pause = true;
|
|
|
}
|
|
|
|
|
|
void Start()
|
|
|
{
|
|
|
m_pause = false;
|
|
|
}
|
|
|
|
|
|
void Pause()
|
|
|
{
|
|
|
m_pause = !m_pause;
|
|
|
}
|
|
|
|
|
|
float TimeLeft()
|
|
|
{
|
|
|
return m_time;
|
|
|
}
|
|
|
|
|
|
float Time()
|
|
|
{
|
|
|
return m_wait - m_time;
|
|
|
}
|
|
|
|
|
|
float Frac()
|
|
|
{
|
|
|
if( m_wait > 0.0f ) return m_time / m_wait;
|
|
|
return 0.0f;
|
|
|
}
|
|
|
|
|
|
bool operator >=(float v ) { return m_time >= v; }
|
|
|
bool operator <=(float v ) { return m_time <= v; }
|
|
|
bool operator <(float v ) { return m_time < v; }
|
|
|
bool operator >(float v ) { return m_time > v; }
|
|
|
bool operator ==(float v ) { return m_time == v; }
|
|
|
|
|
|
private:
|
|
|
|
|
|
float m_time; // aktuelle zeit, 0 = abgelaufen
|
|
|
float m_wait; // Load Wert, gesetzt durch Set()
|
|
|
bool m_pause; // wenn true f<>r timer stop
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
|
/* Periodischer Timer, resetet sich nach ablauf */
|
|
|
/************************************************************************/
|
|
|
class CTimer
|
|
|
{
|
|
|
public:
|
|
|
|
|
|
/************************************************************************/
|
|
|
/* Construction */
|
|
|
/************************************************************************/
|
|
|
CTimer()
|
|
|
{
|
|
|
Set(0);
|
|
|
m_pause = false;
|
|
|
}
|
|
|
|
|
|
CTimer(float wait)
|
|
|
{
|
|
|
Set(wait);
|
|
|
m_pause = false;
|
|
|
}
|
|
|
|
|
|
/************************************************************************/
|
|
|
/* Action(delta)... liefert true wenn timer abgelaufen */
|
|
|
/************************************************************************/
|
|
|
bool Action(float delta )
|
|
|
{
|
|
|
if( m_pause ) return false;
|
|
|
|
|
|
m_time -= delta;
|
|
|
if( m_time < 0.0f )
|
|
|
{
|
|
|
m_time += m_wait;
|
|
|
m_count ++;
|
|
|
return true; // timer trigger
|
|
|
}
|
|
|
else
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
/************************************************************************/
|
|
|
/* Attribute */
|
|
|
/************************************************************************/
|
|
|
void Set(float wait)
|
|
|
{
|
|
|
m_time = m_wait = wait; // Timer WAIT setzen
|
|
|
}
|
|
|
|
|
|
void Load(float ntime)
|
|
|
{
|
|
|
m_time = ntime; // wert setzen
|
|
|
}
|
|
|
|
|
|
void Reset()
|
|
|
{
|
|
|
m_time = m_wait; // wait neu setzen
|
|
|
m_count = 0;
|
|
|
}
|
|
|
|
|
|
void Stop()
|
|
|
{
|
|
|
m_pause = true;
|
|
|
}
|
|
|
|
|
|
void Start()
|
|
|
{
|
|
|
m_pause = false;
|
|
|
}
|
|
|
|
|
|
void Pause()
|
|
|
{
|
|
|
m_pause = !m_pause;
|
|
|
}
|
|
|
|
|
|
int GetCount()
|
|
|
{
|
|
|
return m_count;
|
|
|
}
|
|
|
|
|
|
operator int ()
|
|
|
{
|
|
|
return m_count;
|
|
|
}
|
|
|
|
|
|
float TimeLeft()
|
|
|
{
|
|
|
return m_time;
|
|
|
}
|
|
|
|
|
|
float Time()
|
|
|
{
|
|
|
return m_wait - m_time;
|
|
|
}
|
|
|
|
|
|
float Frac()
|
|
|
{
|
|
|
if( m_wait > 0.0f ) return m_time / m_wait;
|
|
|
return 0.0f;
|
|
|
}
|
|
|
|
|
|
private:
|
|
|
|
|
|
float m_time;
|
|
|
float m_wait;
|
|
|
int m_count;
|
|
|
bool m_pause;
|
|
|
|
|
|
};
|
|
|
|
|
|
#endif // _CTIMER_H
|
|
|
|