(svn r10117) -Fix [FS#863]: When deleting the vehicles of bankrupt players, delete trains as

a whole rather than each part individually, as that leads to invalid tests on
parts that have already been deleted.
This commit is contained in:
maedhros 2007-06-12 17:10:52 +00:00
parent 73790d9cd6
commit 49ba521e77
1 changed files with 24 additions and 1 deletions

View File

@ -355,7 +355,30 @@ void ChangeOwnershipOfPlayerItems(PlayerID old_player, PlayerID new_player)
DeleteWindowById(WC_VEHICLE_VIEW, v->index);
DeleteWindowById(WC_VEHICLE_DETAILS, v->index);
DeleteWindowById(WC_VEHICLE_ORDERS, v->index);
DeleteVehicle(v);
if (v->IsPrimaryVehicle() || (v->type == VEH_TRAIN && IsFreeWagon(v))) {
switch (v->type) {
default: NOT_REACHED();
case VEH_TRAIN: {
Vehicle *u = v;
do {
Vehicle *next = GetNextVehicle(u);
DeleteVehicle(u);
u = next;
} while (u != NULL);
} break;
case VEH_ROAD:
case VEH_SHIP:
DeleteVehicle(v);
break;
case VEH_AIRCRAFT:
DeleteVehicleChain(v);
break;
}
}
} else {
v->owner = new_player;
v->group_id = DEFAULT_GROUP;