-
Notifications
You must be signed in to change notification settings - Fork 148
/
HillShapesObject.cpp
47 lines (40 loc) · 1.44 KB
/
HillShapesObject.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "HillShapesObject.h"
#include "Drawing/SoftwareDrawingEngine.h"
#include "Graphics/Gfx.h"
#include "Interop/Interop.hpp"
#include "ObjectImageTable.h"
#include "ObjectManager.h"
#include "ObjectStringTable.h"
#include <cassert>
namespace OpenLoco
{
// 0x00463BBD
void HillShapesObject::drawPreviewImage(Gfx::RenderTarget& rt, const int16_t x, const int16_t y) const
{
auto imageId = image + hillHeightMapCount + mountainHeightMapCount;
auto drawingCtx = Gfx::getDrawingEngine().getDrawingContext();
drawingCtx.drawImage(&rt, x, y, imageId);
}
// 0x00463B70
void HillShapesObject::load(const LoadedObjectHandle& handle, stdx::span<const std::byte> data, ObjectManager::DependentObjects*)
{
auto remainingData = data.subspan(sizeof(HillShapesObject));
// Load object name string
auto strRes = ObjectManager::loadStringTable(remainingData, handle, 0);
name = strRes.str;
remainingData = remainingData.subspan(strRes.tableLength);
// Load images
auto imageRes = ObjectManager::loadImageTable(remainingData);
image = imageRes.imageOffset;
var_08 = imageRes.imageOffset + this->hillHeightMapCount;
// Ensure we've loaded the entire object
assert(remainingData.size() == imageRes.tableLength);
}
// 0x00463B9F
void HillShapesObject::unload()
{
name = 0;
image = 0;
var_08 = 0;
}
}