Changeset - r3918:2735a9be7286
[Not reviewed]
master
0 1 0
KUDr - 18 years ago 2006-05-30 15:04:59
kudr@openttd.org
(svn r5037) -Fix: assert when GetVehicleTrackdir() returns wrong trackdir - introduced by r5033 (thanks yanek)
1 file changed with 16 insertions and 4 deletions:
0 comments (0 inline, 0 general)
yapf/yapf_road.cpp
Show inline comments
 
@@ -301,10 +301,7 @@ public:
 
			return 0;
 
		}
 

	
 
		// set origin (tile, trackdir)
 
		TileIndex src_tile = v->tile;
 
		Trackdir src_td = GetVehicleTrackdir(v);
 
		Yapf().SetOrigin(src_tile, TrackdirToTrackdirBits(src_td));
 
		if (!SetOriginFromVehiclePos(v)) return UINT_MAX;
 

	
 
		// set destination tile, trackdir
 
		//   get available trackdirs on the destination tile
 
@@ -327,6 +324,21 @@ public:
 
		return dist;
 
	}
 

	
 
	/** Return true if the valid origin (tile/trackdir) was set from the current vehicle position. */
 
	FORCEINLINE bool SetOriginFromVehiclePos(const Vehicle *v)
 
	{
 
		// set origin (tile, trackdir)
 
		TileIndex src_tile = v->tile;
 
		Trackdir src_td = GetVehicleTrackdir(v);
 
		if ((GetTileTrackStatus(src_tile, TRANSPORT_ROAD) & TrackdirToTrackdirBits(src_td)) == 0) {
 
			// sometimes the roadveh is not on the road (it resides on non-existing track)
 
			// how should we handle that situation?
 
			return false;
 
		}
 
		Yapf().SetOrigin(src_tile, TrackdirToTrackdirBits(src_td));
 
		return true;
 
	}
 

	
 
	static Depot* stFindNearestDepot(Vehicle* v, TileIndex tile, Trackdir td)
 
	{
 
		Tpf pf;
0 comments (0 inline, 0 general)