Files
@ r3478:523ece58cb16
Branch filter:
Location: cpp/openttd-patchpack/source/tunnel_map.c - annotation
r3478:523ece58cb16
946 B
text/x-c
(svn r4323) -Regression: Clear the slot assignments of all vehicles heading twoards a road stop if that road stop gets removed
This issue was fixed in r2210 and reintroduced in r4259 when the multistop handling was overhauled.
This issue was fixed in r2210 and reintroduced in r4259 when the multistop handling was overhauled.
r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3184:028654b02189 r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3154:4ad5fba6d52a r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3184:028654b02189 r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c r3156:c9d8084e145c | /* $Id$ */
#include "stdafx.h"
#include "openttd.h"
#include "tile.h"
#include "tunnel_map.h"
TileIndex GetOtherTunnelEnd(TileIndex tile)
{
DiagDirection dir = GetTunnelDirection(tile);
TileIndexDiff delta = TileOffsByDir(dir);
uint z = GetTileZ(tile);
dir = ReverseDiagDir(dir);
do {
tile += delta;
} while (
!IsTunnelTile(tile) ||
GetTunnelDirection(tile) != dir ||
GetTileZ(tile) != z
);
return tile;
}
static bool IsTunnelInWayDir(TileIndex tile, uint z, DiagDirection dir)
{
TileIndexDiff delta = TileOffsByDir(dir);
uint height;
do {
tile -= delta;
height = GetTileZ(tile);
} while (z < height);
return
z == height &&
IsTunnelTile(tile) &&
GetTunnelDirection(tile) == dir;
}
bool IsTunnelInWay(TileIndex tile, uint z)
{
return
IsTunnelInWayDir(tile, z, DIAGDIR_NE) ||
IsTunnelInWayDir(tile, z, DIAGDIR_SE) ||
IsTunnelInWayDir(tile, z, DIAGDIR_SW) ||
IsTunnelInWayDir(tile, z, DIAGDIR_NW);
}
|