summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--train_cmd.c8
-rw-r--r--tunnelbridge_cmd.c16
-rw-r--r--vehicle.c5
3 files changed, 10 insertions, 19 deletions
diff --git a/train_cmd.c b/train_cmd.c
index 5853116b1..1ce1631ee 100644
--- a/train_cmd.c
+++ b/train_cmd.c
@@ -2049,13 +2049,13 @@ static bool CheckCompatibleRail(const Vehicle *v, TileIndex tile)
case MP_TUNNELBRIDGE:
if ((_map5[tile] & 0xC0) == 0xC0) { // is bridge middle part?
- TileInfo ti;
- FindLandscapeHeightByTile(&ti, tile);
+ uint height;
+ uint tileh = GetTileSlope(tile, &height);
// correct Z position of a train going under a bridge on slopes
- if (CORRECT_Z(ti.tileh)) ti.z += 8;
+ if (CORRECT_Z(tileh)) height += 8;
- if (v->z_pos != ti.z) return true; // train is going over bridge
+ if (v->z_pos != height) return true; // train is going over bridge
}
break;
diff --git a/tunnelbridge_cmd.c b/tunnelbridge_cmd.c
index 156ea8a23..62418e2d3 100644
--- a/tunnelbridge_cmd.c
+++ b/tunnelbridge_cmd.c
@@ -905,9 +905,7 @@ int32 DoConvertTunnelBridgeRail(uint tile, uint totype, bool exec)
static uint GetBridgeHeight(const TileInfo *ti)
{
uint delta;
- TileInfo ti_end;
- uint tile = ti->tile;
- uint z_correction = 0;
+ TileIndex tile = ti->tile;
// find the end tile of the bridge.
delta = (_map5[tile] & 1) ? TILE_XY(0,1) : TILE_XY(1,0);
@@ -916,14 +914,10 @@ static uint GetBridgeHeight(const TileInfo *ti)
tile += delta;
} while (_map5[tile] & 0x40); // while bridge middle parts
- // if the end of the bridge is on a tileh 7, the z coordinate is 1 tile too low
- // correct it.
- FindLandscapeHeightByTile(&ti_end, tile);
- if (HASBIT(1 << 7, ti_end.tileh))
- z_correction += 8;
-
- // return the height there (the height of the NORTH CORNER)
- return TilePixelHeight(tile) + z_correction;
+ /* Return the height there (the height of the NORTH CORNER)
+ * If the end of the bridge is on a tileh 7 (all raised, except north corner),
+ * the z coordinate is 1 height level too low. Compensate for that */
+ return TilePixelHeight(tile) + (GetTileSlope(tile, NULL) == 7 ? 8 : 0);
}
static const byte _bridge_foundations[2][16] = {
diff --git a/vehicle.c b/vehicle.c
index ffe2e392e..915da38da 100644
--- a/vehicle.c
+++ b/vehicle.c
@@ -82,10 +82,7 @@ static inline uint Correct_Z(uint tileh)
uint GetCorrectTileHeight(TileIndex tile)
{
- TileInfo ti;
-
- FindLandscapeHeightByTile(&ti, tile);
- return Correct_Z(ti.tileh);
+ return Correct_Z(GetTileSlope(tile, NULL));
}
bool EnsureNoVehicleZ(TileIndex tile, byte z)