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

Function getAvailableCompatibleBridges

src/OpenLoco/src/Objects/ObjectUtils.cpp:189–273  ·  view source on GitHub ↗

0x0042C518, 0x0042C490

Source from the content-addressed store, hash-verified

187
188 // 0x0042C518, 0x0042C490
189 sfl::static_vector<uint8_t, Limits::kMaxBridgeObjects> getAvailableCompatibleBridges(uint8_t trackType, TransportMode transportMode)
190 {
191 auto currentYear = getCurrentYear();
192 sfl::static_vector<uint8_t, Limits::kMaxBridgeObjects> bridgeList;
193
194 if (transportMode == TransportMode::road)
195 {
196 trackType &= ~(1 << 7);
197 auto roadObj = ObjectManager::get<RoadObject>(trackType);
198 for (auto i = 0; i < roadObj->numBridges; i++)
199 {
200 auto bridge = roadObj->bridges[i];
201 if (bridge == 0xFF)
202 {
203 continue;
204 }
205 auto bridgeObj = ObjectManager::get<BridgeObject>(bridge);
206 if (currentYear < bridgeObj->designedYear)
207 {
208 continue;
209 }
210 bridgeList.push_back(bridge);
211 }
212 }
213
214 if (transportMode == TransportMode::rail)
215 {
216 auto trackObj = ObjectManager::get<TrackObject>(trackType);
217 for (auto i = 0; i < trackObj->numBridges; i++)
218 {
219 auto bridge = trackObj->bridges[i];
220 if (bridge == 0xFF)
221 {
222 continue;
223 }
224 auto bridgeObj = ObjectManager::get<BridgeObject>(bridge);
225 if (currentYear < bridgeObj->designedYear)
226 {
227 continue;
228 }
229 bridgeList.push_back(bridge);
230 }
231 }
232
233 for (uint8_t i = 0; i < ObjectManager::getMaxObjects(ObjectType::bridge); i++)
234 {
235 auto bridgeObj = ObjectManager::get<BridgeObject>(i);
236 if (bridgeObj == nullptr)
237 {
238 continue;
239 }
240
241 uint8_t numCompatible;
242 const uint8_t* mods;
243
244 if (transportMode == TransportMode::road)
245 {
246 numCompatible = bridgeObj->roadNumCompatible;

Callers 7

placeRoadBridgeFunction · 0.85
sub_4834C0Function · 0.85
openAtTrackFunction · 0.85
openAtRoadFunction · 0.85
sub_4A3A50Function · 0.85

Calls 5

getCurrentYearFunction · 0.85
getMaxObjectsFunction · 0.85
findFunction · 0.85
push_backMethod · 0.80
endMethod · 0.45

Tested by

no test coverage detected