summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--functions.h3
-rw-r--r--rail_cmd.c2
-rw-r--r--road_cmd.c2
-rw-r--r--tile.h7
-rw-r--r--tunnelbridge_cmd.c6
-rw-r--r--vehicle.c17
6 files changed, 9 insertions, 28 deletions
diff --git a/functions.h b/functions.h
index 3d47bca61..11730800c 100644
--- a/functions.h
+++ b/functions.h
@@ -193,9 +193,8 @@ bool ScrollWindowTo(int x, int y, Window * w);
bool ScrollMainWindowToTile(TileIndex tile);
bool ScrollMainWindowTo(int x, int y);
void DrawSprite(uint32 img, int x, int y);
-uint GetCorrectTileHeight(TileIndex tile);
bool EnsureNoVehicle(TileIndex tile);
-bool EnsureNoVehicleZ(TileIndex tile, byte z);
+bool EnsureNoVehicleOnGround(TileIndex tile);
void MarkAllViewportsDirty(int left, int top, int right, int bottom);
void ShowCostOrIncomeAnimation(int x, int y, int z, int32 cost);
void ShowFeederIncomeAnimation(int x, int y, int z, int32 cost);
diff --git a/rail_cmd.c b/rail_cmd.c
index 773c981cd..89a03d047 100644
--- a/rail_cmd.c
+++ b/rail_cmd.c
@@ -349,7 +349,7 @@ int32 CmdRemoveSingleRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
GetTransportTypeUnderBridge(tile) != TRANSPORT_RAIL ||
GetRailBitsUnderBridge(tile) != trackbit ||
(_current_player != OWNER_WATER && !CheckTileOwnership(tile)) ||
- !EnsureNoVehicleZ(tile, TilePixelHeight(tile))) {
+ !EnsureNoVehicleOnGround(tile)) {
return CMD_ERROR;
}
diff --git a/road_cmd.c b/road_cmd.c
index e1d7a09a3..52c2df2b2 100644
--- a/road_cmd.c
+++ b/road_cmd.c
@@ -125,7 +125,7 @@ int32 CmdRemoveRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
switch (GetTileType(tile)) {
case MP_TUNNELBRIDGE:
- if (!EnsureNoVehicleZ(tile, TilePixelHeight(tile))) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
if (!IsBridge(tile) ||
!IsBridgeMiddle(tile) ||
diff --git a/tile.h b/tile.h
index ebb1bb89a..f4c098cf1 100644
--- a/tile.h
+++ b/tile.h
@@ -32,13 +32,6 @@ Slope GetTileSlope(TileIndex tile, uint *h);
uint GetTileZ(TileIndex tile);
uint GetTileMaxZ(TileIndex tile);
-static inline bool CorrectZ(Slope tileh)
-{
- /* tile height must be corrected if the north corner is not raised, but
- * any other corner is. These are the cases 1 till 7 */
- return IS_INT_INSIDE(tileh, 1, 8);
-}
-
static inline uint TileHeight(TileIndex tile)
{
assert(tile < MapSize());
diff --git a/tunnelbridge_cmd.c b/tunnelbridge_cmd.c
index 3076cc236..bae9977f0 100644
--- a/tunnelbridge_cmd.c
+++ b/tunnelbridge_cmd.c
@@ -608,7 +608,7 @@ static int32 DoClearBridge(TileIndex tile, uint32 flags)
int32 cost;
// check if we own the tile below the bridge..
- if (_current_player != OWNER_WATER && (!CheckTileOwnership(tile) || !EnsureNoVehicleZ(tile, TilePixelHeight(tile))))
+ if (_current_player != OWNER_WATER && (!CheckTileOwnership(tile) || !EnsureNoVehicleOnGround(tile)))
return CMD_ERROR;
if (GetTransportTypeUnderBridge(tile) == TRANSPORT_RAIL) {
@@ -626,7 +626,7 @@ static int32 DoClearBridge(TileIndex tile, uint32 flags)
/* delete canal under bridge */
// check for vehicles under bridge
- if (!EnsureNoVehicleZ(tile, TilePixelHeight(tile))) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
if (flags & DC_EXEC) {
SetClearUnderBridge(tile);
@@ -752,7 +752,7 @@ int32 DoConvertTunnelBridgeRail(TileIndex tile, RailType totype, bool exec)
IsTransportUnderBridge(tile) &&
GetTransportTypeUnderBridge(tile) == TRANSPORT_RAIL) {
// only check for train under bridge
- if (!CheckTileOwnership(tile) || !EnsureNoVehicleZ(tile, TilePixelHeight(tile)))
+ if (!CheckTileOwnership(tile) || !EnsureNoVehicleOnGround(tile))
return CMD_ERROR;
if (GetRailType(tile) == totype) return CMD_ERROR;
diff --git a/vehicle.c b/vehicle.c
index 2522bf5e1..a2a4e323a 100644
--- a/vehicle.c
+++ b/vehicle.c
@@ -131,30 +131,19 @@ static void *EnsureNoVehicleProcZ(Vehicle *v, void *data)
const TileInfo *ti = data;
if (v->tile != ti->tile || v->type == VEH_Disaster) return NULL;
- if (!IS_INT_INSIDE(ti->z - v->z_pos, 0, TILE_HEIGHT + 1)) return NULL;
+ if (v->z_pos > ti->z) return NULL;
VehicleInTheWayErrMsg(v);
return v;
}
-static inline uint Correct_Z(Slope tileh)
-{
- // needs z correction for slope-type graphics that have the NORTHERN tile lowered
- return CorrectZ(tileh) ? TILE_HEIGHT : 0;
-}
-
-uint GetCorrectTileHeight(TileIndex tile)
-{
- return Correct_Z(GetTileSlope(tile, NULL));
-}
-bool EnsureNoVehicleZ(TileIndex tile, byte z)
+bool EnsureNoVehicleOnGround(TileIndex tile)
{
TileInfo ti;
ti.tile = tile;
- ti.z = z + GetCorrectTileHeight(tile);
-
+ ti.z = GetTileMaxZ(tile);
return VehicleFromPos(tile, &ti, EnsureNoVehicleProcZ) == NULL;
}