MCPcopy Create free account
hub / github.com/OpenLoco/OpenLoco / isRoadRoutingResultBetter

Function isRoadRoutingResultBetter

src/OpenLoco/src/Vehicles/VehicleHead.cpp:5248–5323  ·  view source on GitHub ↗

0x0047E2B6

Source from the content-addressed store, hash-verified

5246
5247 // 0x0047E2B6
5248 static bool isRoadRoutingResultBetter(const RoutingResult& base, const RoutingResult& newResult)
5249 {
5250 // Routing results for road only have two signal states: null and noSignals (route found to destination)
5251 // Unfortunately vanilla copied over some logic from track which has more signal
5252 // state and so the logic here is a bit convoluted.
5253
5254 const bool newReachedTarget = newResult.bestDistToTarget == 0;
5255 const bool baseReachedTarget = base.bestDistToTarget == 0;
5256
5257 // None of this logic makes much sense but i think it matches vanilla
5258 if (newReachedTarget && newResult.signalState != RouteSignalState::null)
5259 {
5260 if (base.signalState == RouteSignalState::null)
5261 {
5262 return true;
5263 }
5264 if (!baseReachedTarget)
5265 {
5266 return true;
5267 }
5268
5269 return newResult.bestTrackWeighting < base.bestTrackWeighting;
5270 }
5271
5272 if (baseReachedTarget && base.signalState != RouteSignalState::null)
5273 {
5274 return false;
5275 }
5276
5277 if (newResult.signalState == RouteSignalState::null)
5278 {
5279 if (newResult.bestDistToTarget < base.bestDistToTarget)
5280 {
5281 return true;
5282 }
5283 else if (newResult.bestDistToTarget == base.bestDistToTarget)
5284 {
5285 return newResult.bestTrackWeighting < base.bestTrackWeighting;
5286 }
5287 return false;
5288 }
5289 else
5290 {
5291 if (base.signalState == RouteSignalState::null)
5292 {
5293 return true;
5294 }
5295 if (newResult.bestDistToTarget < base.bestDistToTarget)
5296 {
5297 return true;
5298 }
5299 else if (newResult.bestDistToTarget == base.bestDistToTarget)
5300 {
5301 return newResult.bestTrackWeighting < base.bestTrackWeighting;
5302 }
5303 return false;
5304 }
5305

Callers 1

roadPathingFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected