mirror of https://github.com/OpenTTD/OpenTTD
(svn r9878) -Fix (9874): some vehicle count's were not properly updated on delete or autoreplace of vehicles.
parent
a58bd26b74
commit
4570a8954a
|
@ -175,7 +175,6 @@ static int32 ReplaceVehicle(Vehicle **w, byte flags, int32 total_cost)
|
||||||
new_v = GetVehicle(_new_vehicle_id);
|
new_v = GetVehicle(_new_vehicle_id);
|
||||||
*w = new_v; //we changed the vehicle, so MaybeReplaceVehicle needs to work on the new one. Now we tell it what the new one is
|
*w = new_v; //we changed the vehicle, so MaybeReplaceVehicle needs to work on the new one. Now we tell it what the new one is
|
||||||
|
|
||||||
new_v->group_id = old_v->group_id;
|
|
||||||
/* refit if needed */
|
/* refit if needed */
|
||||||
if (replacement_cargo_type != CT_NO_REFIT) {
|
if (replacement_cargo_type != CT_NO_REFIT) {
|
||||||
if (CmdFailed(DoCommand(0, new_v->index, replacement_cargo_type, DC_EXEC, GetCmdRefitVeh(new_v)))) {
|
if (CmdFailed(DoCommand(0, new_v->index, replacement_cargo_type, DC_EXEC, GetCmdRefitVeh(new_v)))) {
|
||||||
|
@ -205,7 +204,7 @@ static int32 ReplaceVehicle(Vehicle **w, byte flags, int32 total_cost)
|
||||||
new_v->profit_this_year = old_v->profit_this_year;
|
new_v->profit_this_year = old_v->profit_this_year;
|
||||||
new_v->profit_last_year = old_v->profit_last_year;
|
new_v->profit_last_year = old_v->profit_last_year;
|
||||||
new_v->service_interval = old_v->service_interval;
|
new_v->service_interval = old_v->service_interval;
|
||||||
new_v->group_id = old_v->group_id;
|
DoCommand(0, old_v->group_id, new_v->index, flags, CMD_ADD_VEHICLE_GROUP);
|
||||||
new_front = true;
|
new_front = true;
|
||||||
new_v->unitnumber = old_v->unitnumber; // use the same unit number
|
new_v->unitnumber = old_v->unitnumber; // use the same unit number
|
||||||
new_v->dest_tile = old_v->dest_tile;
|
new_v->dest_tile = old_v->dest_tile;
|
||||||
|
|
|
@ -584,7 +584,8 @@ void DestroyVehicle(Vehicle *v)
|
||||||
GetPlayer(v->owner)->num_engines[v->engine_type]--;
|
GetPlayer(v->owner)->num_engines[v->engine_type]--;
|
||||||
if (v->owner == _local_player) InvalidateAutoreplaceWindow(v->engine_type);
|
if (v->owner == _local_player) InvalidateAutoreplaceWindow(v->engine_type);
|
||||||
|
|
||||||
if (!IsDefaultGroupID(v->group_id) && IsValidGroupID(v->group_id)) GetGroup(v->group_id)->num_engines[v->engine_type]--;
|
if (IsValidGroupID(v->group_id)) GetGroup(v->group_id)->num_engines[v->engine_type]--;
|
||||||
|
DecreaseGroupNumVehicle(v->group_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
DeleteVehicleNews(v->index, INVALID_STRING_ID);
|
DeleteVehicleNews(v->index, INVALID_STRING_ID);
|
||||||
|
|
Loading…
Reference in New Issue