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

Function paintDocksBuilding

src/OpenLoco/src/Paint/PaintDocks.cpp:19–49  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17 constexpr World::Pos3 kBBSizeBase2x2 = { 38, 38, 0 };
18
19 static void paintDocksBuilding(PaintSession& session, const World::StationElement& elStation, const DockObject& dockObj, const World::Pos3& imageOffset, const World::Pos3& bbOffset, const World::Pos3& bbSize, const ImageId& baseColour, const uint8_t rotation)
20 {
21 const auto ticks = ScenarioManager::getScenarioTicks();
22 const auto variation = elStation.buildingType();
23 const auto parts = dockObj.getBuildingParts(variation);
24
25 auto sectionImageOffset = imageOffset;
26 const auto partHeights = dockObj.getBuildingPartHeights();
27 const auto partAnimations = dockObj.getBuildingPartAnimations();
28 for (const auto part : parts)
29 {
30 const auto partAnimation = partAnimations[part];
31
32 const auto frameMask = partAnimation.numFrames - 1;
33 const auto cl = partAnimation.animationSpeed & 0x7F;
34 auto tickThing = ticks >> cl;
35 if (partAnimation.animationSpeed & (1 << 7))
36 {
37 const auto pos = World::toTileSpace(session.getUnkPosition());
38 tickThing += pos.x * 5;
39 tickThing += pos.y * 3;
40 }
41 const auto adjustedPart = part + (frameMask & tickThing);
42
43 const auto sectionHeight = partHeights[adjustedPart];
44 const uint32_t imageIdx = adjustedPart * 4 + dockObj.buildingImage + rotation;
45 const auto image = baseColour.withIndex(imageIdx);
46 session.addToPlotListAsChild(image, sectionImageOffset, bbOffset, bbSize);
47 sectionImageOffset.z += sectionHeight;
48 }
49 }
50
51 // 0x0048B86E
52 void paintDocks(PaintSession& session, const World::StationElement& elStation)

Callers 1

paintDocksFunction · 0.85

Calls 9

getScenarioTicksFunction · 0.85
toTileSpaceFunction · 0.85
getUnkPositionMethod · 0.80
withIndexMethod · 0.80
addToPlotListAsChildMethod · 0.80
buildingTypeMethod · 0.45
getBuildingPartsMethod · 0.45

Tested by

no test coverage detected