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

Method load

src/OpenLoco/src/Objects/AirportObject.cpp:42–91  ·  view source on GitHub ↗

0x00490CAF

Source from the content-addressed store, hash-verified

40
41 // 0x00490CAF
42 void AirportObject::load(const LoadedObjectHandle& handle, std::span<const std::byte> data, ObjectManager::DependentObjects*)
43 {
44 auto remainingData = data.subspan(sizeof(AirportObject));
45
46 {
47 auto strRes = ObjectManager::loadStringTable(remainingData, handle, 0);
48 name = strRes.str;
49 remainingData = remainingData.subspan(strRes.tableLength);
50 }
51
52 buildingPartHeightsOffset = static_cast<uint32_t>(remainingData.data() - data.data());
53 remainingData = remainingData.subspan(numSpriteSets * sizeof(uint8_t));
54
55 buildingPartAnimationsOffset = static_cast<uint32_t>(remainingData.data() - data.data());
56 remainingData = remainingData.subspan(numSpriteSets * sizeof(BuildingPartAnimation));
57
58 for (auto i = 0; i < numTiles; ++i)
59 {
60 buildingVariationPartOffsets[i] = remainingData.data() - data.data();
61 while (*remainingData.data() != static_cast<std::byte>(0xFF))
62 {
63 remainingData = remainingData.subspan(1);
64 }
65 remainingData = remainingData.subspan(1);
66 }
67
68 buildingPositionsOffset = static_cast<uint32_t>(remainingData.data() - data.data());
69 while (*remainingData.data() != static_cast<std::byte>(0xFF))
70 {
71 remainingData = remainingData.subspan(sizeof(AirportBuilding));
72 }
73 remainingData = remainingData.subspan(1);
74
75 movementNodesOffset = static_cast<uint32_t>(remainingData.data() - data.data());
76 remainingData = remainingData.subspan(numMovementNodes * sizeof(MovementNode));
77
78 movementEdgesOffset = static_cast<uint32_t>(remainingData.data() - data.data());
79 remainingData = remainingData.subspan(numMovementEdges * sizeof(MovementEdge));
80
81 auto imgRes = ObjectManager::loadImageTable(remainingData);
82 image = imgRes.imageOffset;
83 assert(remainingData.size() == imgRes.tableLength);
84
85 auto nextImage = image + 1;
86 if (hasFlags(AirportObjectFlags::hasShadows))
87 {
88 nextImage += numTiles * 4;
89 }
90 buildingImage = nextImage;
91 }
92
93 // 0x00490D66
94 void AirportObject::unload()

Callers

nothing calls this directly

Calls 5

loadStringTableFunction · 0.85
loadImageTableFunction · 0.85
hasFlagsFunction · 0.50
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected