(svn r14348) -Fix (r1667): signs were not updated on company bankrupcy/sell, they have colour of invalid player

This commit is contained in:
smatz 2008-09-16 20:57:49 +00:00
parent 94c5c9f21d
commit 74892fbdf6
2 changed files with 13 additions and 0 deletions

View File

@ -45,6 +45,7 @@
#include "gfx_func.h" #include "gfx_func.h"
#include "autoreplace_func.h" #include "autoreplace_func.h"
#include "player_gui.h" #include "player_gui.h"
#include "signs_base.h"
#include "table/strings.h" #include "table/strings.h"
#include "table/sprites.h" #include "table/sprites.h"
@ -467,6 +468,11 @@ void ChangeOwnershipOfPlayerItems(PlayerID old_player, PlayerID new_player)
} }
} }
Sign *si;
FOR_ALL_SIGNS(si) {
if (si->owner == old_player) si->owner = new_player == PLAYER_SPECTATOR ? OWNER_NONE : new_player;
}
/* Change color of existing windows */ /* Change color of existing windows */
if (new_player != PLAYER_SPECTATOR) ChangeWindowOwner(old_player, new_player); if (new_player != PLAYER_SPECTATOR) ChangeWindowOwner(old_player, new_player);

View File

@ -2560,6 +2560,13 @@ bool AfterLoadGame()
} }
} }
if (CheckSavegameVersion(103)) {
/* signs with invalid owner left from older savegames */
Sign *si;
FOR_ALL_SIGNS(si) {
if (si->owner != OWNER_NONE && !IsValidPlayerID(si->owner)) si->owner = OWNER_NONE;
}
}
GamelogPrintDebug(1); GamelogPrintDebug(1);