Changeset - r11281:2a8f284d1a02
[Not reviewed]
master
0 2 0
rubidium - 16 years ago 2009-03-07 18:19:53
rubidium@openttd.org
(svn r15635) -Fix [FS#2707]: don't allow more than 64 road vehicles to reserve a slot at a single road stop. 255 + 1 gives trouble, but 64 is even more than the roadstop would be able to handle within the slot timeout time.
2 files changed with 6 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/roadveh_cmd.cpp
Show inline comments
 
@@ -1691,7 +1691,7 @@ again:
 
				if (IsDriveThroughStopTile(next_tile) && (GetRoadStopType(next_tile) == type) && GetStationIndex(v->tile) == GetStationIndex(next_tile)) {
 
					RoadStop *rs_n = GetRoadStopByTile(next_tile, type);
 

	
 
					if (rs_n->IsFreeBay(HasBit(v->u.road.state, RVS_USING_SECOND_BAY))) {
 
					if (rs_n->IsFreeBay(HasBit(v->u.road.state, RVS_USING_SECOND_BAY)) && rs_n->num_vehicles < RoadStop::MAX_VEHICLES) {
 
						/* Bay in next stop along is free - use it */
 
						ClearSlot(v);
 
						rs_n->num_vehicles++;
 
@@ -1927,6 +1927,10 @@ void RoadVehicle::OnNewDay()
 
				);
 
				/* Now we find the nearest road stop that has a free slot */
 
				for (; rs != NULL; rs = rs->GetNextRoadStop(this)) {
 
					if (rs->num_vehicles >= RoadStop::MAX_VEHICLES) {
 
						DEBUG(ms, 4, " stop 0x%X's queue is full, not treating further", rs->xy);
 
						continue;
 
					}
 
					dist = RoadFindPathToStop(this, rs->xy);
 
					if (dist == UINT_MAX) {
 
						DEBUG(ms, 4, " stop 0x%X is unreachable, not treating further", rs->xy);
src/station_base.h
Show inline comments
 
@@ -52,6 +52,7 @@ struct RoadStop : PoolItem<RoadStop, Roa
 
	static const int  cDebugCtorLevel =  5;  ///< Debug level on which Contructor / Destructor messages are printed
 
	static const uint LIMIT           = 16;  ///< The maximum amount of roadstops that are allowed at a single station
 
	static const uint MAX_BAY_COUNT   =  2;  ///< The maximum number of loading bays
 
	static const uint MAX_VEHICLES    = 64;  ///< The maximum number of vehicles that can allocate a slot to this roadstop
 

	
 
	TileIndex        xy;                    ///< Position on the map
 
	byte             status;                ///< Current status of the Stop. Like which spot is taken. Access using *Bay and *Busy functions.
0 comments (0 inline, 0 general)