(svn r8393) -Fix

-Codechange: CheckCompatibleRail() is only called for tiles which are known to contain a piece of rail. Simplify the function accordingly by eliminating unnecessary checks.
-Fix (?): Also fix an inconsistency in deciding what a compatible rail type is between level crossings and other rail tiles. It is unknown if this caused any problems.
This commit is contained in:
tron 2007-01-24 18:03:36 +00:00
parent 09502deabe
commit 18effde565
1 changed files with 4 additions and 20 deletions

View File

@ -2804,29 +2804,13 @@ static int GetDirectionToVehicle(const Vehicle *v, int x, int y)
/* Check if the vehicle is compatible with the specified tile */
static bool CheckCompatibleRail(const Vehicle *v, TileIndex tile)
{
switch (GetTileType(tile)) {
case MP_TUNNELBRIDGE:
case MP_RAILWAY:
case MP_STATION:
// normal tracks, jump to owner check
break;
case MP_STREET:
// tracks over roads, do owner check of tracks
return
IsTileOwner(tile, v->owner) && (
!IsFrontEngine(v) ||
IsCompatibleRail(v->u.rail.railtype, GetRailTypeCrossing(tile))
);
default:
return true;
}
return
IsTileOwner(tile, v->owner) && (
!IsFrontEngine(v) ||
HASBIT(v->u.rail.compatible_railtypes, GetRailType(tile))
HASBIT(
v->u.rail.compatible_railtypes,
IsTileType(tile, MP_STREET) ? GetRailTypeCrossing(tile) : GetRailType(tile)
)
);
}