(svn r9894) -Fix (r9892): catenary was drawn on road bridges ;)
authorrubidium
Sun, 20 May 2007 22:43:26 +0000
changeset 7159 aec2b7823dc6
parent 7158 ffb31324aa5e
child 7160 fc25fe36c045
(svn r9894) -Fix (r9892): catenary was drawn on road bridges ;)
src/tunnelbridge_cmd.cpp
--- a/src/tunnelbridge_cmd.cpp	Sun May 20 22:04:24 2007 +0000
+++ b/src/tunnelbridge_cmd.cpp	Sun May 20 22:43:26 2007 +0000
@@ -209,11 +209,12 @@
 	/* type of bridge */
 	if (HASBIT(p2, 15)) {
 		railtype = INVALID_RAILTYPE; // road bridge
-		roadtypes = (RoadTypes)GB(p2, 8, 2);
-		if (roadtypes > ROADTYPES_ALL || roadtypes == ROADTYPES_NONE) return CMD_ERROR;
+		roadtypes = (RoadTypes)GB(p2, 8, 3);
+		if (!AreValidRoadTypes(roadtypes)) return CMD_ERROR;
 	} else {
 		if (!ValParamRailtype(GB(p2, 8, 8))) return CMD_ERROR;
 		railtype = (RailType)GB(p2, 8, 8);
+		roadtypes = ROADTYPES_NONE;
 	}
 
 	x = TileX(end_tile);
@@ -462,10 +463,9 @@
 	int32 ret;
 
 	_build_tunnel_endtile = 0;
-
-	if (HASBIT(p1, 9)) {
+	if (!HASBIT(p1, 9)) {
 		if (!ValParamRailtype(p1)) return CMD_ERROR;
-	} else if (GB(p1, 0, 4) > ROADTYPES_ALL || GB(p1, 0, 4) == ROADTYPES_NONE) {
+	} else if (!AreValidRoadTypes((RoadTypes)GB(p1, 0, 3))) {
 		return CMD_ERROR;
 	}
 
@@ -527,8 +527,8 @@
 			UpdateSignalsOnSegment(start_tile, direction);
 			YapfNotifyTrackLayoutChange(start_tile, AxisToTrack(DiagDirToAxis(direction)));
 		} else {
-			MakeRoadTunnel(start_tile, _current_player, direction,                 (RoadTypes)GB(p1, 0, 4));
-			MakeRoadTunnel(end_tile,   _current_player, ReverseDiagDir(direction), (RoadTypes)GB(p1, 0, 4));
+			MakeRoadTunnel(start_tile, _current_player, direction,                 (RoadTypes)GB(p1, 0, 3));
+			MakeRoadTunnel(end_tile,   _current_player, ReverseDiagDir(direction), (RoadTypes)GB(p1, 0, 3));
 		}
 	}
 
@@ -887,9 +887,11 @@
 
 		image += GetTunnelDirection(ti->tile) * 2;
 		DrawGroundSprite(image, PAL_NONE);
-		if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
+		if (GetTunnelTransportType(ti->tile) == TRANSPORT_RAIL && GetRailType(ti->tile) == RAILTYPE_ELECTRIC) {
+			DrawCatenary(ti);
+		}
 
-		AddSortableSpriteToDraw(image+1, PAL_NONE, ti->x + TILE_SIZE - 1, ti->y + TILE_SIZE - 1, 1, 1, 8, (byte)ti->z);
+		AddSortableSpriteToDraw(image + 1, PAL_NONE, ti->x + TILE_SIZE - 1, ti->y + TILE_SIZE - 1, 1, 1, 8, (byte)ti->z);
 		DrawBridgeMiddle(ti);
 	} else if (IsBridge(ti->tile)) { // XXX is this necessary?
 		const PalSpriteID *psid;
@@ -925,7 +927,9 @@
 			DrawGroundSprite(SPR_FLAT_SNOWY_TILE + _tileh_to_sprite[ti->tileh], PAL_NONE);
 		}
 
-		if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
+		if (GetBridgeTransportType(ti->tile) == TRANSPORT_RAIL && GetRailType(ti->tile) == RAILTYPE_ELECTRIC) {
+			DrawCatenary(ti);
+		}
 
 		image = psid->sprite;