From: <wjp...@us...> - 2007-12-28 22:43:39
|
Revision: 4945 http://gemrb.svn.sourceforge.net/gemrb/?rev=4945&view=rev Author: wjpalenstijn Date: 2007-12-28 14:42:57 -0800 (Fri, 28 Dec 2007) Log Message: ----------- don't call InitRound() more than once per round (#1672691) Modified Paths: -------------- gemrb/trunk/gemrb/plugins/Core/Game.cpp gemrb/trunk/gemrb/plugins/Core/Game.h Modified: gemrb/trunk/gemrb/plugins/Core/Game.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/Game.cpp 2007-12-28 10:22:28 UTC (rev 4944) +++ gemrb/trunk/gemrb/plugins/Core/Game.cpp 2007-12-28 22:42:57 UTC (rev 4945) @@ -59,6 +59,7 @@ memset( script_timers,0, sizeof(script_timers)); weather = new Particles(200); weather->SetRegion(0, 0, core->Width, core->Height); + LastScriptUpdate = 0; //loading master areas int mtab = core->LoadTable("mastarea"); @@ -1053,8 +1054,13 @@ void Game::UpdateScripts() { - bool StartTurn = GameTime%ROUND_SIZE==0; + // This function is called more than once for each value of GameTime. + // We keep track of the last GameTime we were called in to prevent + // InitRound() being called more than once per round. + bool StartTurn = (GameTime%ROUND_SIZE==0) && (GameTime != LastScriptUpdate); + LastScriptUpdate = GameTime; + if (StartTurn) { size_t acnt=Attackers.size(); if (acnt) { Modified: gemrb/trunk/gemrb/plugins/Core/Game.h =================================================================== --- gemrb/trunk/gemrb/plugins/Core/Game.h 2007-12-28 10:22:28 UTC (rev 4944) +++ gemrb/trunk/gemrb/plugins/Core/Game.h 2007-12-28 22:42:57 UTC (rev 4945) @@ -199,6 +199,7 @@ ieDword Ticks; ieDword interval; // 1000/AI_UPDATE (a tenth of a round in ms) ieDword GameTime; + ieDword LastScriptUpdate; // GameTime at which UpdateScripts last ran ieDword RealTime; ieWord WhichFormation; ieWord Formations[5]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |