(svn r15588) -Fix: change owner of waypoints and deleted stations when merging companies or when a company benkrupts

This commit is contained in:
smatz
2009-02-26 14:07:42 +00:00
parent 1362d2c16b
commit e7c2479216
3 changed files with 39 additions and 11 deletions

View File

@@ -1615,14 +1615,6 @@ bool AfterLoadGame()
}
}
}
/* Give owners to waypoints, based on rail tracks it is sitting on.
* If none is available, specify OWNER_NONE */
Waypoint *wp;
FOR_ALL_WAYPOINTS(wp) {
Owner owner = (IsRailWaypointTile(wp->xy) ? GetTileOwner(wp->xy) : OWNER_NONE);
wp->owner = IsValidCompanyID(owner) ? owner : OWNER_NONE;
}
}
if (CheckSavegameVersion(102)) {
@@ -1722,6 +1714,26 @@ bool AfterLoadGame()
}
}
if (CheckSavegameVersion(114)) {
/* There could be (deleted) stations with invalid owner, set owner to OWNER NONE.
* The conversion affects oil rigs and buoys too, but it doesn't matter as
* they have st->owner == OWNER_NONE already. */
Station *st;
FOR_ALL_STATIONS(st) {
if (!IsValidCompanyID(st->owner)) st->owner = OWNER_NONE;
}
/* Give owners to waypoints, based on rail tracks it is sitting on.
* If none is available, specify OWNER_NONE.
* This code was in CheckSavegameVersion(101) in the past, but in some cases,
* the owner of waypoints could be incorrect. */
Waypoint *wp;
FOR_ALL_WAYPOINTS(wp) {
Owner owner = IsTileType(wp->xy, MP_RAILWAY) ? GetTileOwner(wp->xy) : OWNER_NONE;
wp->owner = IsValidCompanyID(owner) ? owner : OWNER_NONE;
}
}
GamelogPrintDebug(1);
bool ret = InitializeWindowsAndCaches();