00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "TimerAgent.h"
00010
00011 #include "OptionAgent.h"
00012
00013
00014 void
00015 TimerAgent::own_init()
00016 {
00017 m_timeinterval = OptionAgent::agent()->getAsInt("timeinterval", 100);
00018 m_lastTime = SDL_GetTicks();
00019 m_nextTime = m_lastTime;
00020 m_deltaTime = 1;
00021 m_count = 0;
00022 }
00023
00024
00025
00026
00027 int
00028 TimerAgent::getTimeInterval()
00029 {
00030 int result = m_timeinterval;
00031
00032 if (SDL_GetModState() & KMOD_SHIFT) {
00033 result = m_timeinterval / 4;
00034 }
00035 return result;
00036 }
00037
00038
00039
00040
00041 void
00042 TimerAgent::own_update()
00043 {
00044 m_count++;
00045
00046 Uint32 now = SDL_GetTicks();
00047 if (now < m_nextTime) {
00048 SDL_Delay(m_nextTime - now);
00049 }
00050
00051 now = SDL_GetTicks();
00052
00053 m_nextTime = now + getTimeInterval();
00054
00055 m_deltaTime = now - m_lastTime;
00056 m_lastTime = now;
00057 }