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

Method load

src/OpenLoco/src/Objects/SteamObject.cpp:12–65  ·  view source on GitHub ↗

0x00440CAD

Source from the content-addressed store, hash-verified

10{
11 // 0x00440CAD
12 void SteamObject::load(const LoadedObjectHandle& handle, std::span<const std::byte> data, ObjectManager::DependentObjects* dependencies)
13 {
14 auto remainingData = data.subspan(sizeof(SteamObject));
15
16 auto strRes = ObjectManager::loadStringTable(remainingData, handle, 0);
17 name = strRes.str;
18 remainingData = remainingData.subspan(strRes.tableLength);
19
20 frameInfoType0Offset = static_cast<uint32_t>(remainingData.data() - data.data());
21 totalNumFramesType0 = 0;
22 while (*remainingData.data() != static_cast<std::byte>(0xFF))
23 {
24 totalNumFramesType0++;
25 remainingData = remainingData.subspan(sizeof(ImageAndHeight));
26 }
27 remainingData = remainingData.subspan(1);
28
29 frameInfoType1Offset = static_cast<uint32_t>(remainingData.data() - data.data());
30 totalNumFramesType1 = 0;
31 while (*remainingData.data() != static_cast<std::byte>(0xFF))
32 {
33 totalNumFramesType1++;
34 remainingData = remainingData.subspan(sizeof(ImageAndHeight));
35 }
36 remainingData = remainingData.subspan(1);
37
38 for (uint8_t i = 0; i < numSoundEffects; ++i)
39 {
40 auto& soundId = soundEffects[i];
41
42 ObjectHeader soundHeader = *reinterpret_cast<const ObjectHeader*>(remainingData.data());
43 if (dependencies != nullptr)
44 {
45 dependencies->required.push_back(soundHeader);
46 }
47 auto res = ObjectManager::findObjectHandle(soundHeader);
48 if (res.has_value())
49 {
50 soundId = res->id;
51 }
52
53 remainingData = remainingData.subspan(sizeof(ObjectHeader));
54 }
55
56 auto imgRes = ObjectManager::loadImageTable(remainingData);
57 baseImageId = imgRes.imageOffset;
58
59 auto imageExtents = Gfx::getImagesMaxExtent(ImageId(baseImageId), numImages);
60 spriteWidth = imageExtents.width;
61 spriteHeightNegative = imageExtents.heightNegative;
62 spriteHeightPositive = imageExtents.heightPositive;
63
64 assert(remainingData.size() == imgRes.tableLength);
65 }
66
67 // 0x00440D8B
68 void SteamObject::unload()

Callers

nothing calls this directly

Calls 8

loadStringTableFunction · 0.85
findObjectHandleFunction · 0.85
loadImageTableFunction · 0.85
getImagesMaxExtentFunction · 0.85
ImageIdClass · 0.85
push_backMethod · 0.80
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected