changeset 15891:67b39929d6a2 draft

(svn r20573) -Codechange: free/reserve some bits in the sell vehicle command to increase the vehicle pool limit
author rubidium <rubidium@openttd.org>
date Thu, 19 Aug 2010 20:45:29 +0000
parents 52d3e250c976
children f3b72d36846c
files src/ai/api/ai_vehicle.cpp src/depot_gui.cpp src/train_cmd.cpp src/train_gui.cpp src/vehicle_cmd.cpp
diffstat 5 files changed, 17 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/ai/api/ai_vehicle.cpp
+++ b/src/ai/api/ai_vehicle.cpp
@@ -137,7 +137,7 @@
 	EnforcePrecondition(false, IsValidVehicle(vehicle_id));
 
 	const Vehicle *v = ::Vehicle::Get(vehicle_id);
-	return AIObject::DoCommand(0, vehicle_id | (v->type == VEH_TRAIN ? 1 : 0) << 16, 0, GetCmdSellVeh(v));
+	return AIObject::DoCommand(0, vehicle_id | (v->type == VEH_TRAIN ? 1 : 0) << 20, 0, GetCmdSellVeh(v));
 }
 
 /* static */ bool AIVehicle::_SellWagonInternal(VehicleID vehicle_id, int wagon, bool sell_attached_wagons)
@@ -148,7 +148,7 @@
 	const Train *v = ::Train::Get(vehicle_id);
 	while (wagon-- > 0) v = v->GetNextUnit();
 
-	return AIObject::DoCommand(0, v->index | (sell_attached_wagons ? 1 : 0) << 16, 0, CMD_SELL_VEHICLE);
+	return AIObject::DoCommand(0, v->index | (sell_attached_wagons ? 1 : 0) << 20, 0, CMD_SELL_VEHICLE);
 }
 
 /* static */ bool AIVehicle::SellWagon(VehicleID vehicle_id, int wagon)
--- a/src/depot_gui.cpp
+++ b/src/depot_gui.cpp
@@ -976,7 +976,7 @@
 				this->SetDirty();
 
 				int sell_cmd = (v->type == VEH_TRAIN && (widget == DEPOT_WIDGET_SELL_CHAIN || _ctrl_pressed)) ? 1 : 0;
-				DoCommandP(v->tile, v->index | sell_cmd << 16 | MAKE_ORDER_BACKUP_FLAG, 0, GetCmdSellVeh(v->type));
+				DoCommandP(v->tile, v->index | sell_cmd << 20 | MAKE_ORDER_BACKUP_FLAG, 0, GetCmdSellVeh(v->type));
 				break;
 			}
 
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
@@ -1383,7 +1383,7 @@
 
 			/* If we deleted a window then open a new one for the 'new' train */
 			if (IsLocalCompany() && w != NULL) ShowVehicleViewWindow(new_head);
-		} else if (v->IsPrimaryVehicle() && data & (MAKE_ORDER_BACKUP_FLAG >> 16)) {
+		} else if (v->IsPrimaryVehicle() && data & (MAKE_ORDER_BACKUP_FLAG >> 20)) {
 			OrderBackup::Backup(v, user);
 		}
 
--- a/src/train_gui.cpp
+++ b/src/train_gui.cpp
@@ -43,7 +43,7 @@
 	if (found != NULL) {
 		found = found->Last();
 		/* put the new wagon at the end of the loco. */
-		DoCommandP(0, _new_vehicle_id | (found->index << 16), 0, CMD_MOVE_RAIL_VEHICLE);
+		DoCommandP(0, _new_vehicle_id, found->index, CMD_MOVE_RAIL_VEHICLE);
 		InvalidateWindowClassesData(WC_TRAINS_LIST, 0);
 	}
 }
--- a/src/vehicle_cmd.cpp
+++ b/src/vehicle_cmd.cpp
@@ -79,7 +79,7 @@
  * @param p1 various bitstuffed data
  *  bits  0-15: vehicle type being built.
  *  bits 16-31: vehicle type specific bits passed on to the vehicle build functions.
- * @param p2 unused
+ * @param p2 User
  * @param text unused
  * @return the cost of this operation or an error
  */
@@ -159,16 +159,16 @@
  * @param tile unused.
  * @param flags for command.
  * @param p1 various bitstuffed data.
- *  bits  0-15: vehicle ID being sold.
- *  bits 16-30: vehicle type specific bits passed on to the vehicle build functions.
+ *  bits  0-19: vehicle ID being sold.
+ *  bits 20-30: vehicle type specific bits passed on to the vehicle build functions.
  *  bit     31: make a backup of the vehicle's order (if an engine).
- * @param p2 unused.
+ * @param p2 User.
  * @param text unused.
  * @return the cost of this operation or an error.
  */
 CommandCost CmdSellVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 {
-	Vehicle *v = Vehicle::GetIfValid(GB(p1, 0, 16));
+	Vehicle *v = Vehicle::GetIfValid(GB(p1, 0, 20));
 	if (v == NULL) return CMD_ERROR;
 
 	Vehicle *front = v->First();
@@ -191,7 +191,7 @@
 	}
 
 	if (v->type == VEH_TRAIN) {
-		ret = CmdSellRailWagon(flags, v, GB(p1, 16, 16), p2);
+		ret = CmdSellRailWagon(flags, v, GB(p1, 20, 12), p2);
 	} else {
 		ret = CommandCost(EXPENSES_NEW_VEHICLES, -front->value);
 
@@ -301,7 +301,7 @@
  * Refits a vehicle to the specified cargo type.
  * @param tile unused
  * @param flags type of operation
- * @param p1 vehicle ID of the train to refit
+ * @param p1 vehicle ID to refit
  * @param p2 various bitstuffed elements
  * - p2 = (bit 0-7) - the new cargo type to refit to
  * - p2 = (bit 8-15) - the new cargo subtype to refit to
@@ -506,7 +506,7 @@
 	CommandCost last_error = CMD_ERROR;
 	bool had_success = false;
 	for (uint i = 0; i < list.Length(); i++) {
-		CommandCost ret = DoCommand(tile, list[i]->index | (1 << 16), 0, flags, sell_command);
+		CommandCost ret = DoCommand(tile, list[i]->index | (1 << 20), 0, flags, sell_command);
 		if (ret.Succeeded()) {
 			cost.AddCost(ret);
 			had_success = true;
@@ -684,7 +684,7 @@
 
 		if (cost.Failed()) {
 			/* Can't build a part, then sell the stuff we already made; clear up the mess */
-			if (w_front != NULL) DoCommand(w_front->tile, w_front->index | (1 << 16), 0, flags, GetCmdSellVeh(w_front));
+			if (w_front != NULL) DoCommand(w_front->tile, w_front->index | (1 << 20), 0, flags, GetCmdSellVeh(w_front));
 			return cost;
 		}
 
@@ -704,8 +704,8 @@
 				if (result.Failed()) {
 					/* The train can't be joined to make the same consist as the original.
 					 * Sell what we already made (clean up) and return an error.           */
-					DoCommand(w_front->tile, w_front->index | 1 << 16, 0, flags, GetCmdSellVeh(w_front));
-					DoCommand(w_front->tile, w->index       | 1 << 16, 0, flags, GetCmdSellVeh(w));
+					DoCommand(w_front->tile, w_front->index | 1 << 20, 0, flags, GetCmdSellVeh(w_front));
+					DoCommand(w_front->tile, w->index       | 1 << 20, 0, flags, GetCmdSellVeh(w));
 					return result; // return error and the message returned from CMD_MOVE_RAIL_VEHICLE
 				}
 			} else {
@@ -795,7 +795,7 @@
 	if (!CheckCompanyHasMoney(total_cost)) {
 		if (flags & DC_EXEC) {
 			/* The vehicle has already been bought, so now it must be sold again. */
-			DoCommand(w_front->tile, w_front->index | 1 << 16, 0, flags, GetCmdSellVeh(w_front));
+			DoCommand(w_front->tile, w_front->index | 1 << 20, 0, flags, GetCmdSellVeh(w_front));
 		}
 		return total_cost;
 	}