(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

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
rubidium 15 years ago
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…
Cancel
Save