| 1298 | } |
| 1299 | |
| 1300 | ApplyTrackModsResult applyTrackModsToTrackNetwork(const World::Pos3& pos, Vehicles::TrackAndDirection::_TrackAndDirection trackAndDirection, CompanyId company, uint8_t trackType, uint8_t flags, ModSection modSelection, uint8_t trackModObjIds) |
| 1301 | { |
| 1302 | ApplyTrackModsResult result{}; |
| 1303 | result.cost = 0; |
| 1304 | result.allPlacementsFailed = true; |
| 1305 | result.networkTooComplex = false; |
| 1306 | |
| 1307 | if (modSelection == Track::ModSection::single) |
| 1308 | { |
| 1309 | LocationOfInterest interest{ pos, trackAndDirection._data, company, trackType }; |
| 1310 | applyTrackModToTrack(interest, flags, nullptr, modSelection, trackType, trackModObjIds, result.cost, company, result.allPlacementsFailed); |
| 1311 | return result; |
| 1312 | } |
| 1313 | |
| 1314 | RoutingResults routingResults{ kTrackModHashSetSize }; |
| 1315 | |
| 1316 | auto filterFunction = [flags, modSelection, trackType, trackModObjIds, &result, company, &routingResults](const LocationOfInterest& interest) { |
| 1317 | return applyTrackModToTrack(interest, flags, &routingResults, modSelection, trackType, trackModObjIds, result.cost, company, result.allPlacementsFailed); |
| 1318 | }; |
| 1319 | findAllTracksFilterTransform(routingResults, TrackNetworkSearchFlags::none, pos, trackAndDirection, company, trackType, filterFunction, kNullTransformFunction); |
| 1320 | result.networkTooComplex = routingResults.reachableLocs.count >= routingResults.reachableLocs.maxEntries; |
| 1321 | return result; |
| 1322 | } |
| 1323 | |
| 1324 | currency32_t removeTrackModsToTrackNetwork(const World::Pos3& pos, Vehicles::TrackAndDirection::_TrackAndDirection trackAndDirection, CompanyId company, uint8_t trackType, uint8_t flags, ModSection modSelection, uint8_t trackModObjIds) |
| 1325 | { |
no test coverage detected