(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)

This commit is contained in:
tron
2006-03-07 07:51:05 +00:00
parent a172b194c2
commit 313754011d
5 changed files with 32 additions and 34 deletions

View File

@@ -428,36 +428,6 @@ not_valid_below:;
return cost;
}
static bool DoCheckTunnelInWay(TileIndex tile, uint z, DiagDirection dir)
{
TileIndexDiff delta = TileOffsByDir(dir);
uint height;
do {
tile -= delta;
height = GetTileZ(tile);
} while (z < height);
if (z == height &&
IsTileType(tile, MP_TUNNELBRIDGE) &&
GB(_m[tile].m5, 4, 4) == 0 &&
GetTunnelDirection(tile) == dir) {
_error_message = STR_5003_ANOTHER_TUNNEL_IN_THE_WAY;
return false;
}
return true;
}
bool CheckTunnelInWay(TileIndex tile, int z)
{
return
DoCheckTunnelInWay(tile, z, DIAGDIR_NE) &&
DoCheckTunnelInWay(tile, z, DIAGDIR_SE) &&
DoCheckTunnelInWay(tile, z, DIAGDIR_SW) &&
DoCheckTunnelInWay(tile, z, DIAGDIR_NW);
}
/** Build Tunnel.
* @param x,y start tile coord of tunnel
@@ -504,8 +474,8 @@ int32 CmdBuildTunnel(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (start_z == end_z) break;
if (!_cheats.crossing_tunnels.value && !CheckTunnelInWay(end_tile, start_z)) {
return CMD_ERROR;
if (!_cheats.crossing_tunnels.value && IsTunnelInWay(end_tile, start_z)) {
return_cmd_error(STR_5003_ANOTHER_TUNNEL_IN_THE_WAY);
}
cost += _price.build_tunnel;