0x0047E2B6
| 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 |