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

Method load

src/OpenLoco/src/Objects/TreeObject.cpp:111–198  ·  view source on GitHub ↗

0x004BE144

Source from the content-addressed store, hash-verified

109
110 // 0x004BE144
111 void TreeObject::load(const LoadedObjectHandle& handle, [[maybe_unused]] std::span<const std::byte> data, ObjectManager::DependentObjects*)
112 {
113 auto remainingData = data.subspan(sizeof(TreeObject));
114
115 // Load localised name string
116 {
117 auto strRes = ObjectManager::loadStringTable(remainingData, handle, 0);
118 name = strRes.str;
119 remainingData = remainingData.subspan(strRes.tableLength);
120 }
121
122 // Load image offsets
123 auto imgRes = ObjectManager::loadImageTable(remainingData);
124 auto imageOffset = imgRes.imageOffset;
125 assert(remainingData.size() == imgRes.tableLength);
126
127 // Initialise sprites array
128 for (auto variant = 0; variant < 6; variant++)
129 {
130 sprites[variant] = imageOffset;
131 }
132
133 auto numVariantImages = numRotations * growth;
134 auto totalImageCount = 0;
135 for (auto variant = 0; variant < 6; variant++)
136 {
137 if ((var_3C & (1 << variant)) == 0)
138 {
139 continue;
140 }
141
142 sprites[variant] = imgRes.imageOffset + totalImageCount;
143 totalImageCount += numVariantImages;
144 }
145
146 // 0x004BE186
147 const auto numPrimaryImages = totalImageCount;
148
149 if ((var_3C & (1 << 5)) == 0 && (var_3C & (1 << 4)) != 0)
150 {
151 sprites[5] = sprites[4];
152 }
153
154 if ((var_3C & (1 << 5)) == 0 && (var_3C & (1 << 1)) != 0)
155 {
156 sprites[5] = sprites[1];
157 }
158
159 if ((var_3C & (1 << 4)) == 0 && (var_3C & (1 << 1)) != 0)
160 {
161 sprites[4] = sprites[1];
162 }
163
164 if ((var_3C & (1 << 1)) == 0 && (var_3C & (1 << 0)) != 0)
165 {
166 sprites[1] = sprites[0];
167 }
168

Callers

nothing calls this directly

Calls 4

loadStringTableFunction · 0.85
loadImageTableFunction · 0.85
getTotalNumImagesFunction · 0.85
sizeMethod · 0.45

Tested by

no test coverage detected