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

Function applyRoadModsToTrackNetwork

src/OpenLoco/src/Vehicles/Routing.cpp:1505–1527  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1503 }
1504
1505 ApplyTrackModsResult applyRoadModsToTrackNetwork(const World::Pos3& pos, Vehicles::TrackAndDirection::_RoadAndDirection roadAndDirection, CompanyId company, uint8_t roadType, uint8_t flags, ModSection modSelection, uint8_t roadModObjIds)
1506 {
1507 ApplyTrackModsResult result{};
1508 result.cost = 0;
1509 result.allPlacementsFailed = true;
1510 result.networkTooComplex = false;
1511
1512 if (modSelection == Track::ModSection::single)
1513 {
1514 LocationOfInterest interest{ pos, roadAndDirection._data, company, roadType };
1515 applyRoadModToRoad(interest, flags, nullptr, modSelection, roadType, roadModObjIds, result.cost, company, result.allPlacementsFailed);
1516 return result;
1517 }
1518
1519 RoutingResults routingResults{ kTrackModHashSetSize };
1520
1521 auto filterFunction = [flags, modSelection, roadType, roadModObjIds, &result, company, &routingResults](const LocationOfInterest& interest) {
1522 return applyRoadModToRoad(interest, flags, &routingResults, modSelection, roadType, roadModObjIds, result.cost, company, result.allPlacementsFailed);
1523 };
1524 findAllRoadsFilterTransform(routingResults, TrackNetworkSearchFlags::none, pos, roadAndDirection, company, roadType, filterFunction, kNullTransformFunction);
1525 result.networkTooComplex = routingResults.reachableLocs.count >= routingResults.reachableLocs.maxEntries;
1526 return result;
1527 }
1528
1529 // 0x0047A8F0
1530 static bool removeRoadModToTrack(const LocationOfInterest& interest, const uint8_t flags, RoutingResults* results, ModSection modSelection, uint8_t roadObjectId, uint8_t roadModObjectIds, currency32_t& totalCost, CompanyId companyId)

Callers 1

createRoadModFunction · 0.85

Calls 2

applyRoadModToRoadFunction · 0.85

Tested by

no test coverage detected