core/TimerSys.cpp
changeset 1108 fafe809b16ca
parent 727 fade10824d88
child 1142 13547d08e3a8
     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();