Changeset - r8716:fe14dd1f6c9e
[Not reviewed]
master
0 4 0
rubidium - 16 years ago 2008-03-22 10:56:08
rubidium@openttd.org
(svn r12390) -Fix [FS#1851]: trams failing to turn on bridge heads/tunnel entrances.
4 files changed with 26 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/road_func.h
Show inline comments
 
@@ -115,6 +115,20 @@ static inline RoadBits DiagDirToRoadBits
 
}
 

	
 
/**
 
 * Create the road-part which belongs to the given Axis
 
 *
 
 * This function returns a RoadBits value which belongs to
 
 * the given Axis.
 
 *
 
 * @param a The Axis
 
 * @return The result RoadBits which the selected road-part set
 
 */
 
static inline RoadBits AxisToRoadBits(Axis a)
 
{
 
	return a == AXIS_X ? ROAD_X : ROAD_Y;
 
}
 

	
 
/**
 
 * Finds out, whether given player has all given RoadTypes available
 
 * @param PlayerID ID of player
 
 * @param rts RoadTypes to test
src/road_map.cpp
Show inline comments
 
@@ -14,7 +14,7 @@
 
#include "tunnelbridge_map.h"
 

	
 

	
 
RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt)
 
RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt, bool straight_tunnel_bridge_entrance)
 
{
 
	if (!HasTileRoadType(tile, rt)) return ROAD_NONE;
 

	
 
@@ -34,7 +34,9 @@ RoadBits GetAnyRoadBits(TileIndex tile, 
 

	
 
		case MP_TUNNELBRIDGE:
 
			if (GetTunnelBridgeTransportType(tile) != TRANSPORT_ROAD) return ROAD_NONE;
 
			return DiagDirToRoadBits(ReverseDiagDir(GetTunnelBridgeDirection(tile)));
 
			return straight_tunnel_bridge_entrance ?
 
					AxisToRoadBits(DiagDirToAxis(GetTunnelBridgeDirection(tile))) :
 
					DiagDirToRoadBits(ReverseDiagDir(GetTunnelBridgeDirection(tile)));
 

	
 
		default: return ROAD_NONE;
 
	}
src/road_map.h
Show inline comments
 
@@ -328,11 +328,16 @@ static inline DiagDirection GetRoadDepot
 
 * - road tunnels: entrance is treated as road piece
 
 * - bridge ramps: start of the ramp is treated as road piece
 
 * - bridge middle parts: bridge itself is ignored
 
 *
 
 * If straight_tunnel_bridge_entrance is set a ROAD_X or ROAD_Y
 
 * for bridge ramps and tunnel entrances is returned depending
 
 * on the orientation of the tunnel or bridge.
 
 * @param tile the tile to get the road bits for
 
 * @param rt   the road type to get the road bits form
 
 * @param stbe whether to return straight road bits for tunnels/bridges.
 
 * @return the road bits of the given tile
 
 */
 
RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt);
 
RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt, bool straight_tunnel_bridge_entrance = false);
 

	
 
/**
 
 * Get the accessible track bits for the given tile.
src/roadveh_cmd.cpp
Show inline comments
 
@@ -1461,7 +1461,7 @@ static Trackdir FollowPreviousRoadVehicl
 
	};
 
	RoadBits required = required_roadbits[dir & 0x07];
 

	
 
	if ((required & GetAnyRoadBits(tile, v->u.road.roadtype)) == ROAD_NONE) {
 
	if ((required & GetAnyRoadBits(tile, v->u.road.roadtype, true)) == ROAD_NONE) {
 
		dir = INVALID_TRACKDIR;
 
	}
 

	
 
@@ -1698,7 +1698,7 @@ again:
 
		uint turn_around_start_frame = RVC_TURN_AROUND_START_FRAME;
 

	
 
		RoadBits tram;
 
		if (v->u.road.roadtype == ROADTYPE_TRAM && CountBits(tram = GetAnyRoadBits(v->tile, ROADTYPE_TRAM)) == 1) {
 
		if (v->u.road.roadtype == ROADTYPE_TRAM && CountBits(tram = GetAnyRoadBits(v->tile, ROADTYPE_TRAM, true)) == 1) {
 
			/*
 
			 * The tram is turning around with one tram 'roadbit'. This means that
 
			 * it is using the 'big' corner 'drive data'. However, to support the
0 comments (0 inline, 0 general)