mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-04 06:00:15 +00:00
(svn r11027) -Fix: do not unconditionally assume that a tile has a depot.
This commit is contained in:
parent
a06b8a510b
commit
2cd15f732c
18
src/depot.h
18
src/depot.h
@ -12,6 +12,7 @@
|
||||
#include "road_map.h"
|
||||
#include "rail_map.h"
|
||||
#include "water_map.h"
|
||||
#include "station_map.h"
|
||||
|
||||
struct Depot;
|
||||
DECLARE_OLD_POOL(Depot, Depot, 3, 8000)
|
||||
@ -63,7 +64,7 @@ static inline bool IsTileDepotType(TileIndex tile, TransportType type)
|
||||
return IsTileType(tile, MP_RAILWAY) && GetRailTileType(tile) == RAIL_TILE_DEPOT;
|
||||
|
||||
case TRANSPORT_ROAD:
|
||||
return IsTileType(tile, MP_ROAD) && GetRoadTileType(tile) == ROAD_TILE_DEPOT;
|
||||
return IsTileType(tile, MP_ROAD) && GetRoadTileType(tile) == ROAD_TILE_DEPOT;
|
||||
|
||||
case TRANSPORT_WATER:
|
||||
return IsTileType(tile, MP_WATER) && GetWaterTileType(tile) == WATER_TILE_DEPOT;
|
||||
@ -74,6 +75,21 @@ static inline bool IsTileDepotType(TileIndex tile, TransportType type)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the given tile a tile with a depot on it?
|
||||
* @param tile the tile to check
|
||||
* @return true if and only if there is a depot on the tile.
|
||||
*/
|
||||
static inline bool IsDepotTile(TileIndex tile)
|
||||
{
|
||||
switch (GetTileType(tile)) {
|
||||
case MP_ROAD: return GetRoadTileType(tile) == ROAD_TILE_DEPOT;
|
||||
case MP_WATER: return GetWaterTileType(tile) == WATER_TILE_DEPOT;
|
||||
case MP_RAILWAY: return GetRailTileType(tile) == RAIL_TILE_DEPOT;
|
||||
case MP_STATION: return IsHangar(tile);
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find out if the slope of the tile is suitable to build a depot of given direction
|
||||
|
@ -1634,7 +1634,7 @@ CommandCost CmdDepotMassAutoReplace(TileIndex tile, uint32 flags, uint32 p1, uin
|
||||
CommandCost cost;
|
||||
VehicleType vehicle_type = (VehicleType)GB(p1, 0, 8);
|
||||
|
||||
if (!IsTileOwner(tile, _current_player)) return CMD_ERROR;
|
||||
if (!IsDepotTile(tile) || !IsTileOwner(tile, _current_player)) return CMD_ERROR;
|
||||
|
||||
/* Get the list of vehicles in the depot */
|
||||
BuildDepotVehicleList(vehicle_type, tile, &vl, &engine_list_length, &engine_count, NULL, NULL, NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user