mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-11 16:54:42 +00:00
(svn r20572) -Codechange: free/reserve some bits in the wagon move command to increase the vehicle pool limit
This commit is contained in:
parent
e89a0fb7f9
commit
646fbb628a
@ -102,7 +102,7 @@
|
|||||||
while (dest_wagon-- > 0) w = w->GetNextUnit();
|
while (dest_wagon-- > 0) w = w->GetNextUnit();
|
||||||
}
|
}
|
||||||
|
|
||||||
return AIObject::DoCommand(0, v->index | ((w == NULL ? ::INVALID_VEHICLE : w->index) << 16), move_attached_wagons ? 1 : 0, CMD_MOVE_RAIL_VEHICLE);
|
return AIObject::DoCommand(0, v->index | (move_attached_wagons ? 1 : 0) << 20, w == NULL ? ::INVALID_VEHICLE : w->index, CMD_MOVE_RAIL_VEHICLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* static */ bool AIVehicle::MoveWagon(VehicleID source_vehicle_id, int source_wagon, int dest_vehicle_id, int dest_wagon)
|
/* static */ bool AIVehicle::MoveWagon(VehicleID source_vehicle_id, int source_wagon, int dest_vehicle_id, int dest_wagon)
|
||||||
|
@ -309,7 +309,7 @@ static inline CommandCost StartStopVehicle(const Vehicle *v, bool evaluate_callb
|
|||||||
*/
|
*/
|
||||||
static inline CommandCost MoveVehicle(const Vehicle *v, const Vehicle *after, DoCommandFlag flags, bool whole_chain)
|
static inline CommandCost MoveVehicle(const Vehicle *v, const Vehicle *after, DoCommandFlag flags, bool whole_chain)
|
||||||
{
|
{
|
||||||
return DoCommand(0, v->index | (after != NULL ? after->index : INVALID_VEHICLE) << 16, whole_chain ? 1 : 0, flags, CMD_MOVE_RAIL_VEHICLE);
|
return DoCommand(0, v->index | (whole_chain ? 1 : 0) << 20, after != NULL ? after->index : INVALID_VEHICLE, flags, CMD_MOVE_RAIL_VEHICLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -163,7 +163,7 @@ static void TrainDepotMoveVehicle(const Vehicle *wagon, VehicleID sel, const Veh
|
|||||||
|
|
||||||
if (wagon == v) return;
|
if (wagon == v) return;
|
||||||
|
|
||||||
DoCommandP(v->tile, v->index + ((wagon == NULL ? INVALID_VEHICLE : wagon->index) << 16), _ctrl_pressed ? 1 : 0, CMD_MOVE_RAIL_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_MOVE_VEHICLE));
|
DoCommandP(v->tile, v->index | (_ctrl_pressed ? 1 : 0) << 20, wagon == NULL ? INVALID_VEHICLE : wagon->index, CMD_MOVE_RAIL_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_MOVE_VEHICLE));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -205,7 +205,7 @@ CommandCost CmdRenameGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
|||||||
* @param p1 index of array group
|
* @param p1 index of array group
|
||||||
* - p1 bit 0-15 : GroupID
|
* - p1 bit 0-15 : GroupID
|
||||||
* @param p2 vehicle to add to a group
|
* @param p2 vehicle to add to a group
|
||||||
* - p2 bit 0-15 : VehicleID
|
* - p2 bit 0-19 : VehicleID
|
||||||
* @param text unused
|
* @param text unused
|
||||||
* @return the cost of this operation or an error
|
* @return the cost of this operation or an error
|
||||||
*/
|
*/
|
||||||
|
@ -583,7 +583,7 @@ void DrawTrainEngine(int left, int right, int preferred_x, int y, EngineID engin
|
|||||||
* @param ret[out] the vehicle that has been built.
|
* @param ret[out] the vehicle that has been built.
|
||||||
* @return the cost of this operation or an error.
|
* @return the cost of this operation or an error.
|
||||||
*/
|
*/
|
||||||
CommandCost CmdBuildRailWagon(TileIndex tile, DoCommandFlag flags, const Engine *e, Vehicle **ret)
|
static CommandCost CmdBuildRailWagon(TileIndex tile, DoCommandFlag flags, const Engine *e, Vehicle **ret)
|
||||||
{
|
{
|
||||||
const RailVehicleInfo *rvi = &e->u.rail;
|
const RailVehicleInfo *rvi = &e->u.rail;
|
||||||
|
|
||||||
@ -647,7 +647,7 @@ CommandCost CmdBuildRailWagon(TileIndex tile, DoCommandFlag flags, const Engine
|
|||||||
w->engine_type == e->index && ///< Same type
|
w->engine_type == e->index && ///< Same type
|
||||||
w->First() != v && ///< Don't connect to ourself
|
w->First() != v && ///< Don't connect to ourself
|
||||||
!(w->vehstatus & VS_CRASHED)) { ///< Not crashed/flooded
|
!(w->vehstatus & VS_CRASHED)) { ///< Not crashed/flooded
|
||||||
DoCommand(0, v->index | (w->Last()->index << 16), 1, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
|
DoCommand(0, v->index | 1 << 20, w->Last()->index, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -663,7 +663,7 @@ static void NormalizeTrainVehInDepot(const Train *u)
|
|||||||
FOR_ALL_TRAINS(v) {
|
FOR_ALL_TRAINS(v) {
|
||||||
if (v->IsFreeWagon() && v->tile == u->tile &&
|
if (v->IsFreeWagon() && v->tile == u->tile &&
|
||||||
v->track == TRACK_BIT_DEPOT) {
|
v->track == TRACK_BIT_DEPOT) {
|
||||||
if (DoCommand(0, v->index | (u->index << 16), 1, DC_EXEC,
|
if (DoCommand(0, v->index | 1 << 20, u->index, DC_EXEC,
|
||||||
CMD_MOVE_RAIL_VEHICLE).Failed())
|
CMD_MOVE_RAIL_VEHICLE).Failed())
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1143,17 +1143,17 @@ static void NormaliseTrainHead(Train *head)
|
|||||||
* @param flags type of operation
|
* @param flags type of operation
|
||||||
* Note: DC_AUTOREPLACE is set when autoreplace tries to undo its modifications or moves vehicles to temporary locations inside the depot.
|
* Note: DC_AUTOREPLACE is set when autoreplace tries to undo its modifications or moves vehicles to temporary locations inside the depot.
|
||||||
* @param p1 various bitstuffed elements
|
* @param p1 various bitstuffed elements
|
||||||
* - p1 (bit 0 - 15) source vehicle index
|
* - p1 (bit 0 - 19) source vehicle index
|
||||||
* - p1 (bit 16 - 31) what wagon to put the source wagon AFTER, XXX - INVALID_VEHICLE to make a new line
|
* - p1 (bit 20) move all vehicles following the source vehicle
|
||||||
* @param p2 (bit 0) move all vehicles following the source vehicle
|
* @param p2 what wagon to put the source wagon AFTER, XXX - INVALID_VEHICLE to make a new line
|
||||||
* @param text unused
|
* @param text unused
|
||||||
* @return the cost of this operation or an error
|
* @return the cost of this operation or an error
|
||||||
*/
|
*/
|
||||||
CommandCost CmdMoveRailVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
|
CommandCost CmdMoveRailVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
|
||||||
{
|
{
|
||||||
VehicleID s = GB(p1, 0, 16);
|
VehicleID s = GB(p1, 0, 20);
|
||||||
VehicleID d = GB(p1, 16, 16);
|
VehicleID d = GB(p2, 0, 20);
|
||||||
bool move_chain = HasBit(p2, 0);
|
bool move_chain = HasBit(p1, 20);
|
||||||
|
|
||||||
Train *src = Train::GetIfValid(s);
|
Train *src = Train::GetIfValid(s);
|
||||||
if (src == NULL) return CMD_ERROR;
|
if (src == NULL) return CMD_ERROR;
|
||||||
|
@ -700,7 +700,7 @@ CommandCost CmdCloneVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
|
|||||||
if (v->type == VEH_TRAIN && !Train::From(v)->IsFrontEngine()) {
|
if (v->type == VEH_TRAIN && !Train::From(v)->IsFrontEngine()) {
|
||||||
/* this s a train car
|
/* this s a train car
|
||||||
* add this unit to the end of the train */
|
* add this unit to the end of the train */
|
||||||
CommandCost result = DoCommand(0, (w_rear->index << 16) | w->index, 1, flags, CMD_MOVE_RAIL_VEHICLE);
|
CommandCost result = DoCommand(0, w->index | 1 << 20, w_rear->index, flags, CMD_MOVE_RAIL_VEHICLE);
|
||||||
if (result.Failed()) {
|
if (result.Failed()) {
|
||||||
/* The train can't be joined to make the same consist as the original.
|
/* 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. */
|
* Sell what we already made (clean up) and return an error. */
|
||||||
|
Loading…
Reference in New Issue
Block a user