(svn r9878) -Fix (9874): some vehicle count's were not properly updated on delete or autoreplace of vehicles.
authorrubidium
Sat, 19 May 2007 12:29:09 +0000
changeset 7143 59366b8e133b
parent 7142 2061428f1937
child 7144 f058df019ea2
(svn r9878) -Fix (9874): some vehicle count's were not properly updated on delete or autoreplace of vehicles.
src/autoreplace_cmd.cpp
src/vehicle.cpp
--- a/src/autoreplace_cmd.cpp	Sat May 19 11:18:22 2007 +0000
+++ b/src/autoreplace_cmd.cpp	Sat May 19 12:29:09 2007 +0000
@@ -175,7 +175,6 @@
 		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
 
-		new_v->group_id = old_v->group_id;
 		/* refit if needed */
 		if (replacement_cargo_type != CT_NO_REFIT) {
 			if (CmdFailed(DoCommand(0, new_v->index, replacement_cargo_type, DC_EXEC, GetCmdRefitVeh(new_v)))) {
@@ -205,7 +204,7 @@
 			new_v->profit_this_year = old_v->profit_this_year;
 			new_v->profit_last_year = old_v->profit_last_year;
 			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_v->unitnumber = old_v->unitnumber; // use the same unit number
 			new_v->dest_tile  = old_v->dest_tile;
--- a/src/vehicle.cpp	Sat May 19 11:18:22 2007 +0000
+++ b/src/vehicle.cpp	Sat May 19 12:29:09 2007 +0000
@@ -584,7 +584,8 @@
 		GetPlayer(v->owner)->num_engines[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);