(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

@@ -398,6 +398,24 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
UpdateSignalsInBuffer();
}
/* convert owner of stations (including deleted ones, but excluding buoys) */
Station *st;
FOR_ALL_STATIONS(st) {
if (st->owner == old_owner) {
/* if a company goes bankrupt, set owner to OWNER_NONE so the sign doesn't disappear immediately
* also, drawing station window would cause reading invalid company's colour */
st->owner = new_owner == INVALID_OWNER ? OWNER_NONE : new_owner;
}
}
/* do the same for waypoints (we need to do this here so deleted waypoints are converted too) */
Waypoint *wp;
FOR_ALL_WAYPOINTS(wp) {
if (wp->owner == old_owner) {
wp->owner = new_owner == INVALID_OWNER ? OWNER_NONE : new_owner;
}
}
/* In all cases clear replace engine rules.
* Even if it was copied, it could interfere with new owner's rules */
RemoveAllEngineReplacementForCompany(GetCompany(old_owner));