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

Function clearFunction

src/OpenLoco/src/GameCommands/Track/CreateTrack.cpp:270–333  ·  view source on GitHub ↗

0x0049C275

Source from the content-addressed store, hash-verified

268
269 // 0x0049C275
270 static World::TileClearance::ClearFuncResult clearFunction(
271 World::TileElement& el,
272 currency32_t& totalCost,
273 bool& hasLevelCrossing,
274 World::TileClearance::RemovedBuildings& removedBuildings,
275 const ClearFunctionArgs& args)
276 {
277 switch (el.type())
278 {
279 case World::ElementType::track:
280 {
281 auto* elTrack = el.as<World::TrackElement>();
282 if (elTrack != nullptr)
283 {
284 return clearTrack(*elTrack, args);
285 }
286 break;
287 }
288 case World::ElementType::station:
289 {
290 auto* elStation = el.as<World::StationElement>();
291 if (elStation->stationType() == StationType::trainStation)
292 {
293 return World::TileClearance::ClearFuncResult::noCollision;
294 }
295 return World::TileClearance::ClearFuncResult::collision;
296 }
297 case World::ElementType::signal:
298 return World::TileClearance::ClearFuncResult::noCollision;
299 case World::ElementType::building:
300 {
301 auto* elBuilding = el.as<World::BuildingElement>();
302 if (elBuilding == nullptr)
303 {
304 return World::TileClearance::ClearFuncResult::noCollision;
305 }
306 getLegacyReturnState().flags_1136073 |= (1U << 4);
307 return World::TileClearance::clearBuildingCollision(*elBuilding, args.pos, removedBuildings, args.flags, totalCost);
308 }
309 case World::ElementType::tree:
310 {
311 auto* elTree = el.as<World::TreeElement>();
312 if (elTree == nullptr)
313 {
314 return World::TileClearance::ClearFuncResult::noCollision;
315 }
316 return World::TileClearance::clearTreeCollision(*elTree, args.pos, args.flags, totalCost);
317 }
318 case World::ElementType::road:
319 {
320 auto* elRoad = el.as<World::RoadElement>();
321 if (elRoad != nullptr)
322 {
323 return clearRoad(*elRoad, args, hasLevelCrossing);
324 }
325 break;
326 }
327 case World::ElementType::surface:

Callers 1

createTrackFunction · 0.70

Calls 6

clearBuildingCollisionFunction · 0.85
clearTreeCollisionFunction · 0.85
typeMethod · 0.80
stationTypeMethod · 0.80
clearTrackFunction · 0.70
clearRoadFunction · 0.70

Tested by

no test coverage detected