changeset 5827:832de2ec189f draft

(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.
author tron <tron@openttd.org>
date Wed, 24 Jan 2007 18:03:36 +0000
parents 4272fa35d44d
children 9dc7252be011
files src/train_cmd.cpp
diffstat 1 files changed, 4 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
@@ -2804,29 +2804,13 @@
 /* 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)
+			)
 		);
 }