Changeset - r13980:ffcce91f0a79
[Not reviewed]
master
0 1 0
rubidium - 15 years ago 2009-12-18 21:35:55
rubidium@openttd.org
(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
1 file changed with 17 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/roadveh_cmd.cpp
Show inline comments
 
@@ -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)) {
0 comments (0 inline, 0 general)