|
@@ -206,13 +206,13 @@ static void AdjustTileh(TileIndex tile,
|
|
|
* Returns the Z position of a Pylon Control Point.
|
|
|
*
|
|
|
* @param tile The tile the pylon should stand on.
|
|
|
* @param PCPpos The PCP of the tile.
|
|
|
* @return The Z position of the PCP.
|
|
|
*/
|
|
|
static byte GetPCPElevation(TileIndex tile, DiagDirection PCPpos)
|
|
|
static int GetPCPElevation(TileIndex tile, DiagDirection PCPpos)
|
|
|
{
|
|
|
/* The elevation of the "pylon"-sprite should be the elevation at the PCP.
|
|
|
* PCPs are always on a tile edge.
|
|
|
*
|
|
|
* This position can be outside of the tile, i.e. ?_pcp_offset == TILE_SIZE > TILE_SIZE - 1.
|
|
|
* So we have to move it inside the tile, because if the neighboured tile has a foundation,
|
|
@@ -222,13 +222,13 @@ static byte GetPCPElevation(TileIndex ti
|
|
|
* To catch all cases we round the Z position to the next (TILE_HEIGHT / 2).
|
|
|
* This will return the correct elevation for slopes and will also detect non-continuous elevation on edges.
|
|
|
*
|
|
|
* Also note that the result of GetSlopePixelZ() is very special on bridge-ramps.
|
|
|
*/
|
|
|
|
|
|
byte z = GetSlopePixelZ(TileX(tile) * TILE_SIZE + min(x_pcp_offsets[PCPpos], TILE_SIZE - 1), TileY(tile) * TILE_SIZE + min(y_pcp_offsets[PCPpos], TILE_SIZE - 1));
|
|
|
int z = GetSlopePixelZ(TileX(tile) * TILE_SIZE + min(x_pcp_offsets[PCPpos], TILE_SIZE - 1), TileY(tile) * TILE_SIZE + min(y_pcp_offsets[PCPpos], TILE_SIZE - 1));
|
|
|
return (z + 2) & ~3; // this means z = (z + TILE_HEIGHT / 4) / (TILE_HEIGHT / 2) * (TILE_HEIGHT / 2);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Draws wires on a tunnel tile
|
|
|
*
|