(svn r26371) -Fix [FS#5831]: Calling DoCommandP during the gameloop cleared pending persistent storage changes.

This commit is contained in:
frosch
2014-02-23 22:03:08 +00:00
parent c6ce57e8a7
commit a32d18cbb9
6 changed files with 105 additions and 50 deletions

View File

@@ -1355,15 +1355,14 @@ void StateGameLoop()
}
if (HasModalProgress()) return;
ClearPersistentStorageChanges(false);
Layouter::ReduceLineCache();
if (_game_mode == GM_EDITOR) {
BasePersistentStorageArray::SwitchMode(PSM_ENTER_GAMELOOP);
RunTileLoop();
CallVehicleTicks();
CallLandscapeTick();
ClearPersistentStorageChanges(true);
BasePersistentStorageArray::SwitchMode(PSM_LEAVE_GAMELOOP);
UpdateLandscapingLimits();
CallWindowTickEvent();
@@ -1382,12 +1381,13 @@ void StateGameLoop()
* for multiplayer compatibility */
Backup<CompanyByte> cur_company(_current_company, OWNER_NONE, FILE_LINE);
BasePersistentStorageArray::SwitchMode(PSM_ENTER_GAMELOOP);
AnimateAnimatedTiles();
IncreaseDate();
RunTileLoop();
CallVehicleTicks();
CallLandscapeTick();
ClearPersistentStorageChanges(true);
BasePersistentStorageArray::SwitchMode(PSM_LEAVE_GAMELOOP);
#ifndef DEBUG_DUMP_COMMANDS
AI::GameLoop();