1.1 --- a/core/TimerSys.cpp Sat Jul 14 01:46:28 2007 +0000
1.2 +++ b/core/TimerSys.cpp Sat Jul 14 01:55:15 2007 +0000
1.3 @@ -207,6 +207,7 @@
1.4 m_FreeTimers.push(pTimer);
1.5 }
1.6
1.7 +CStack<ITimer *> s_tokill;
1.8 void TimerSystem::MapChange()
1.9 {
1.10 ITimer *pTimer;
1.11 @@ -215,13 +216,29 @@
1.12 for (iter=m_SingleTimers.begin(); iter!=m_SingleTimers.end(); iter++)
1.13 {
1.14 pTimer = (*iter);
1.15 - pTimer->m_ToExec = pTimer->m_ToExec - m_LastExecTime + GetSimulatedTime();
1.16 + if (pTimer->m_Flags & TIMER_FLAG_NO_MAPCHANGE)
1.17 + {
1.18 + s_tokill.push(pTimer);
1.19 + } else {
1.20 + pTimer->m_ToExec = pTimer->m_ToExec - m_LastExecTime + GetSimulatedTime();
1.21 + }
1.22 }
1.23
1.24 for (iter=m_LoopTimers.begin(); iter!=m_LoopTimers.end(); iter++)
1.25 {
1.26 pTimer = (*iter);
1.27 - pTimer->m_ToExec = pTimer->m_ToExec - m_LastExecTime + GetSimulatedTime();
1.28 + if (pTimer->m_Flags & TIMER_FLAG_NO_MAPCHANGE)
1.29 + {
1.30 + s_tokill.push(pTimer);
1.31 + } else {
1.32 + pTimer->m_ToExec = pTimer->m_ToExec - m_LastExecTime + GetSimulatedTime();
1.33 + }
1.34 + }
1.35 +
1.36 + while (!s_tokill.empty())
1.37 + {
1.38 + KillTimer(s_tokill.front());
1.39 + s_tokill.pop();
1.40 }
1.41
1.42 m_LastExecTime = GetSimulatedTime();