00001 #include "SdlArs.h"
00002
00003 namespace Ars
00004 {
00005 Uint32 TimerCallback(Uint32 Interval, void* param)
00006 {
00007 return static_cast<Timer*>(param)->TimerHit(Interval);
00008 }
00009
00010
00011 Timer::Timer( MessageClient *pOwner ) :
00012 m_TimerID(0),
00013 m_bAutoRestart(false),
00014 m_iCounter(0),
00015 m_pOwner(pOwner)
00016 {
00017
00018 }
00019
00020
00021 Timer::~Timer(void)
00022 {
00023 StopTimer();
00024 }
00025
00026
00027 void Timer::StartTimer(unsigned long int Interval, bool bAutoRestart)
00028 {
00029 m_bAutoRestart = bAutoRestart;
00030 if (!m_TimerID)
00031 m_TimerID = SDL_AddTimer(Interval, &TimerCallback, this);
00032 }
00033
00034
00035 void Timer::StopTimer(void)
00036 {
00037 if (m_TimerID)
00038 {
00039 SDL_RemoveTimer(m_TimerID);
00040 m_TimerID = 0;
00041 }
00042 }
00043
00044
00045 Uint32 Timer::TimerHit(Uint32 Interval)
00046 {
00047 m_iCounter++;
00048 ArsSendMessage( CtrlMessage( Message::CTRL_TIMER, m_pOwner, this, m_iCounter ) );
00049 if (!m_bAutoRestart)
00050 StopTimer();
00051
00052 return Interval;
00053 }
00054
00055 }