(svn r12177) -Codechange: use 'side' parameter in GetTileTrackStatus so there can be less checks in pathfinders for depots/stations/tunnels/bridges

This commit is contained in:
smatz
2008-02-18 16:11:31 +00:00
parent a0a225ab02
commit 29125c0e68
13 changed files with 68 additions and 30 deletions

View File

@@ -2083,17 +2083,14 @@ set_ground:
}
static uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode)
static uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
if (mode != TRANSPORT_RAIL) return 0;
switch (GetRailTileType(tile)) {
default: NOT_REACHED();
case RAIL_TILE_NORMAL: {
TrackBits rails = GetTrackBits(tile);
uint32 ret = rails * 0x101;
return (rails == TRACK_BIT_CROSS) ? ret | 0x40 : ret;
}
case RAIL_TILE_NORMAL:
return GetTrackBits(tile) * 0x101;
case RAIL_TILE_SIGNALS: {
uint32 ret = GetTrackBits(tile) * 0x101;
@@ -2117,8 +2114,16 @@ static uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint
return ret;
}
case RAIL_TILE_DEPOT: return AxisToTrackBits(DiagDirToAxis(GetRailDepotDirection(tile))) * 0x101;
case RAIL_TILE_WAYPOINT: return GetRailWaypointBits(tile) * 0x101;
case RAIL_TILE_DEPOT: {
DiagDirection dir = GetRailDepotDirection(tile);
if (side != INVALID_DIAGDIR && side != dir) return 0;
return AxisToTrackBits(DiagDirToAxis(dir)) * 0x101;
}
case RAIL_TILE_WAYPOINT:
return GetRailWaypointBits(tile) * 0x101;
}
}