Fix road/tram type check when moving depot orders to another depot
This commit is contained in:
@@ -205,6 +205,21 @@ static inline bool HasRoadTypeTram(TileIndex t)
|
|||||||
return GetRoadTypeTram(t) != INVALID_ROADTYPE;
|
return GetRoadTypeTram(t) != INVALID_ROADTYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the present road types of a tile.
|
||||||
|
* @param t The tile to query.
|
||||||
|
* @return Present road types.
|
||||||
|
*/
|
||||||
|
static inline RoadTramTypes GetPresentRoadTramTypes(TileIndex t)
|
||||||
|
{
|
||||||
|
RoadTramTypes result = (RoadTramTypes)0;
|
||||||
|
if (MayHaveRoad(t)) {
|
||||||
|
if (GetRoadTypeRoad(t) != INVALID_ROADTYPE) result |= RTTB_ROAD;
|
||||||
|
if (GetRoadTypeTram(t) != INVALID_ROADTYPE) result |= RTTB_TRAM;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a tile has a road or a tram road type.
|
* Check if a tile has a road or a tram road type.
|
||||||
* @param t The tile to check.
|
* @param t The tile to check.
|
||||||
|
@@ -2460,7 +2460,7 @@ public:
|
|||||||
if (IsDepotTile(tile) && GetDepotVehicleType(tile) == this->vli.vtype) {
|
if (IsDepotTile(tile) && GetDepotVehicleType(tile) == this->vli.vtype) {
|
||||||
if (this->vli.type != VL_DEPOT_LIST) return;
|
if (this->vli.type != VL_DEPOT_LIST) return;
|
||||||
if (!IsInfraTileUsageAllowed(this->vli.vtype, this->vli.company, tile)) return;
|
if (!IsInfraTileUsageAllowed(this->vli.vtype, this->vli.company, tile)) return;
|
||||||
if (this->vli.vtype == VEH_ROAD && GetPresentRoadTypes(Depot::Get(this->vli.index)->xy) != GetRoadTypes(tile)) return;
|
if (this->vli.vtype == VEH_ROAD && GetPresentRoadTramTypes(Depot::Get(this->vli.index)->xy) != GetPresentRoadTramTypes(tile)) return;
|
||||||
|
|
||||||
DestinationID dest = (this->vli.vtype == VEH_AIRCRAFT) ? GetStationIndex(tile) : GetDepotIndex(tile);
|
DestinationID dest = (this->vli.vtype == VEH_AIRCRAFT) ? GetStationIndex(tile) : GetDepotIndex(tile);
|
||||||
DoCommandP(0, this->vli.index | (this->vli.vtype << 16) | (OT_GOTO_DEPOT << 20), dest, CMD_MASS_CHANGE_ORDER);
|
DoCommandP(0, this->vli.index | (this->vli.vtype << 16) | (OT_GOTO_DEPOT << 20), dest, CMD_MASS_CHANGE_ORDER);
|
||||||
|
Reference in New Issue
Block a user