mirror of https://github.com/OpenTTD/OpenTTD
(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.release/0.6
parent
73790d9cd6
commit
49ba521e77
|
@ -355,7 +355,30 @@ void ChangeOwnershipOfPlayerItems(PlayerID old_player, PlayerID new_player)
|
||||||
DeleteWindowById(WC_VEHICLE_VIEW, v->index);
|
DeleteWindowById(WC_VEHICLE_VIEW, v->index);
|
||||||
DeleteWindowById(WC_VEHICLE_DETAILS, v->index);
|
DeleteWindowById(WC_VEHICLE_DETAILS, v->index);
|
||||||
DeleteWindowById(WC_VEHICLE_ORDERS, 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 {
|
} else {
|
||||||
v->owner = new_player;
|
v->owner = new_player;
|
||||||
v->group_id = DEFAULT_GROUP;
|
v->group_id = DEFAULT_GROUP;
|
||||||
|
|
Loading…
Reference in New Issue