Changeset - r24864:33763bff9b7e
[Not reviewed]
master
0 1 0
Charles Pigott - 3 years ago 2021-02-13 22:18:12
charlespigott@googlemail.com
Fix #8594: [NRT] Road pathfinder did not account for roadtype speed limits
1 file changed with 6 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/pathfinder/follow_track.hpp
Show inline comments
 
@@ -466,13 +466,18 @@ public:
 
		if (!IsWaterTT() && IsBridgeTile(m_old_tile)) {
 
			int spd = GetBridgeSpec(GetBridgeType(m_old_tile))->speed;
 
			if (IsRoadTT()) spd *= 2;
 
			if (max_speed > spd) max_speed = spd;
 
			max_speed = std::min(max_speed, spd);
 
		}
 
		/* Check for speed limit imposed by railtype */
 
		if (IsRailTT()) {
 
			uint16 rail_speed = GetRailTypeInfo(GetRailType(m_old_tile))->max_speed;
 
			if (rail_speed > 0) max_speed = std::min<int>(max_speed, rail_speed);
 
		}
 
		if (IsRoadTT()) {
 
			/* max_speed is already in roadvehicle units, no need to further modify (divide by 2) */
 
			uint16 road_speed = GetRoadTypeInfo(GetRoadType(m_old_tile, GetRoadTramType(RoadVehicle::From(m_veh)->roadtype)))->max_speed;
 
			if (road_speed > 0) max_speed = std::min<int>(max_speed, road_speed);
 
		}
 

	
 
		/* if min speed was requested, return it */
 
		if (pmin_speed != nullptr) *pmin_speed = min_speed;
0 comments (0 inline, 0 general)