summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortron <tron@openttd.org>2007-01-24 18:03:36 +0000
committertron <tron@openttd.org>2007-01-24 18:03:36 +0000
commit18effde5658a58b00511a398825e02ecc4df3cee (patch)
tree7a704466bd9fa7a4e5851b6849773f83e8277052
parent09502deabe8c03830a76193771c4427da3882b29 (diff)
downloadopenttd-18effde5658a58b00511a398825e02ecc4df3cee.tar.xz
(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.
-rw-r--r--src/train_cmd.cpp24
1 files changed, 4 insertions, 20 deletions
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp
index d5ea4570d..e4f67cb4f 100644
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
@@ -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)
+ )
);
}