mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r18532) -Codechange/Fix (r18404): don't leave the road stop between tiles, just stay on it. This prevents the rare cases where a road vehicle would stop exactly on the border where it could not load
This commit is contained in:
parent
6f1982d151
commit
21324b69d9
|
@ -1313,7 +1313,23 @@ again:
|
|||
v->cur_speed = 0;
|
||||
return false;
|
||||
}
|
||||
if (IsRoadStop(v->tile)) RoadStop::GetByTile(v->tile, GetRoadStopType(v->tile))->Leave(v);
|
||||
|
||||
/* If we are a drive through road stop and the next tile is of
|
||||
* the same road stop and the next tile isn't this one (i.e. we
|
||||
* are not reversing), then keep the reservation and state.
|
||||
* This way we will not be shortly unregister from the road
|
||||
* stop. It also makes it possible to load when on the edge of
|
||||
* two road stops; otherwise you could get vehicles that should
|
||||
* be loading but are not actually loading. */
|
||||
if (IsDriveThroughStopTile(v->tile) &&
|
||||
RoadStop::IsDriveThroughRoadStopContinuation(v->tile, tile) &&
|
||||
v->tile != tile) {
|
||||
/* So, keep 'our' state */
|
||||
dir = (Trackdir)v->state;
|
||||
} else if (IsRoadStop(v->tile)) {
|
||||
/* We're not continuing our drive through road stop, so leave. */
|
||||
RoadStop::GetByTile(v->tile, GetRoadStopType(v->tile))->Leave(v);
|
||||
}
|
||||
}
|
||||
|
||||
if (!HasBit(r, VETS_ENTERED_WORMHOLE)) {
|
||||
|
|
Loading…
Reference in New Issue