MCPcopy Create free account
hub / github.com/OpenRCT2/OpenRCT2 / CarEntrySetImageMaxSizes

Function CarEntrySetImageMaxSizes

src/openrct2/ride/CarEntry.cpp:47–144  ·  view source on GitHub ↗

* * rct2: 0x006847BA */

Source from the content-addressed store, hash-verified

45 * rct2: 0x006847BA
46 */
47void CarEntrySetImageMaxSizes(CarEntry& carEntry, int32_t numImages)
48{
49 constexpr uint8_t kWidth = 200;
50 constexpr uint8_t kHeight = 200;
51 constexpr uint8_t kCentreX = kWidth / 2;
52 constexpr uint8_t kCentreY = kHeight / 2;
53
54 OpenRCT2::Drawing::PaletteIndex bitmap[kHeight][kWidth]{};
55
56 OpenRCT2::Drawing::RenderTarget rt = {
57 .bits = reinterpret_cast<OpenRCT2::Drawing::PaletteIndex*>(bitmap),
58 .x = -(kWidth / 2),
59 .y = -(kHeight / 2),
60 .width = kWidth,
61 .height = kHeight,
62 .pitch = 0,
63 .zoom_level = ZoomLevel{ 0 },
64 };
65
66 for (int32_t i = 0; i < numImages; ++i)
67 {
68 GfxDrawSpriteSoftware(rt, ImageId(carEntry.base_image_id + i), { 0, 0 });
69 }
70
71 int32_t spriteWidth = -1;
72 for (int32_t i = kCentreX - 1; i != 0; --i)
73 {
74 for (int32_t j = 0; j < kWidth; j++)
75 {
76 if (bitmap[j][kCentreX - i] != OpenRCT2::Drawing::PaletteIndex::transparent)
77 {
78 spriteWidth = i;
79 break;
80 }
81 }
82
83 if (spriteWidth != -1)
84 break;
85
86 for (int32_t j = 0; j < kWidth; j++)
87 {
88 if (bitmap[j][kCentreX + i] != OpenRCT2::Drawing::PaletteIndex::transparent)
89 {
90 spriteWidth = i;
91 break;
92 }
93 }
94
95 if (spriteWidth != -1)
96 break;
97 }
98 spriteWidth++;
99
100 int32_t spriteHeightNegative = -1;
101 for (int32_t i = kCentreY - 1; i != 0; --i)
102 {
103 for (int32_t j = 0; j < kWidth; j++)
104 {

Callers 1

LoadMethod · 0.85

Calls 3

GfxDrawSpriteSoftwareFunction · 0.85
hasMethod · 0.65
ImageIdClass · 0.50

Tested by

no test coverage detected