(svn r5580) -Regression: Under certain circumstances it was possible to remove/convert bridges while a vehicle was on it. Fix this by properly calculating the height of a bridge

This commit is contained in:
tron 2006-07-22 07:28:04 +00:00
parent 16b923260c
commit af7fa1df24
1 changed files with 6 additions and 7 deletions

View File

@ -597,13 +597,12 @@ static int32 DoClearTunnel(TileIndex tile, uint32 flags)
static uint GetBridgeHeightRamp(TileIndex t)
{
/* Return the height there (the height of the NORTH CORNER)
* If the end of the bridge is on a tile with all corners except the north corner raised,
* the z coordinate is 1 height level too low. Compensate for that */
return
TilePixelHeight(t) +
(GetTileSlope(t, NULL) == SLOPE_WSE ? TILE_HEIGHT : 0) +
TILE_HEIGHT;
uint h;
uint tileh = GetTileSlope(t, &h);
uint f = GetBridgeFoundation(tileh, DiagDirToAxis(GetBridgeRampDirection(t)));
// one height level extra if the ramp is on a flat foundation
return h + TILE_HEIGHT + (IS_INT_INSIDE(f, 1, 15) ? TILE_HEIGHT : 0);
}