mirror of https://github.com/OpenTTD/OpenTTD
(svn r5037) -Fix: assert when GetVehicleTrackdir() returns wrong trackdir - introduced by r5033 (thanks yanek)
parent
a6f7d7c57b
commit
078399d314
|
@ -301,10 +301,7 @@ public:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set origin (tile, trackdir)
|
if (!SetOriginFromVehiclePos(v)) return UINT_MAX;
|
||||||
TileIndex src_tile = v->tile;
|
|
||||||
Trackdir src_td = GetVehicleTrackdir(v);
|
|
||||||
Yapf().SetOrigin(src_tile, TrackdirToTrackdirBits(src_td));
|
|
||||||
|
|
||||||
// set destination tile, trackdir
|
// set destination tile, trackdir
|
||||||
// get available trackdirs on the destination tile
|
// get available trackdirs on the destination tile
|
||||||
|
@ -327,6 +324,21 @@ public:
|
||||||
return dist;
|
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)
|
static Depot* stFindNearestDepot(Vehicle* v, TileIndex tile, Trackdir td)
|
||||||
{
|
{
|
||||||
Tpf pf;
|
Tpf pf;
|
||||||
|
|
Loading…
Reference in New Issue