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

Method onDraw

src/openrct2-ui/windows/InstallTrack.cpp:146–352  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

144 }
145
146 void onDraw(RenderTarget& rt) override
147 {
148 drawWidgets(rt);
149
150 // Track preview
151 Widget* widget = &widgets[WIDX_TRACK_PREVIEW];
152 auto screenPos = windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 };
153 auto colour = getColourMap(colours[0].colour).darkest;
154 Rectangle::fill(rt, { screenPos, screenPos + ScreenCoordsXY{ 369, 216 } }, colour);
155
156 G1Element g1temp = {};
157 g1temp.offset = reinterpret_cast<uint8_t*>(
158 _trackDesignPreviewPixels.data() + (_currentTrackPieceDirection * kTrackPreviewImageSize));
159 g1temp.width = 370;
160 g1temp.height = 217;
161 g1temp.flags = { G1Flag::hasTransparency };
162 GfxSetG1Element(SPR_TEMP_INSTALL_TRACK, &g1temp);
163 DrawingEngineInvalidateImage(SPR_TEMP_INSTALL_TRACK);
164 GfxDrawSprite(rt, ImageId(SPR_TEMP_INSTALL_TRACK), screenPos);
165
166 screenPos = windowPos + ScreenCoordsXY{ widget->midX(), widget->bottom - 12 };
167
168 // Warnings
169 const TrackDesign& td = *_trackDesign;
170 if (td.gameStateData.hasFlag(TrackDesignGameStateFlag::SceneryUnavailable))
171 {
172 if (!gTrackDesignSceneryToggle)
173 {
174 // Scenery not available
175 drawTextEllipsised(
176 rt, screenPos, 308, STR_DESIGN_INCLUDES_SCENERY_WHICH_IS_UNAVAILABLE, { TextAlignment::centre });
177 screenPos.y -= kListRowHeight;
178 }
179 }
180
181 // Information
182 screenPos = windowPos + ScreenCoordsXY{ widget->left + 1, widget->bottom + 4 };
183 // 0x006D3CF1 -- 0x006d3d71 missing
184
185 // Track design name & type
186 {
187 auto trackName = _trackName.c_str();
188 auto ft = Formatter();
189 ft.Add<const char*>(trackName);
190 drawText(rt, screenPos - ScreenCoordsXY{ 1, 0 }, STR_TRACK_DESIGN_NAME, ft);
191 screenPos.y += kListRowHeight;
192 }
193
194 // Friendly Track name
195 {
196 auto ft = Formatter();
197
198 const auto* objectEntry = ObjectManagerLoadObject(&td.trackAndVehicle.vehicleObject.Entry);
199 if (objectEntry != nullptr)
200 {
201 auto groupIndex = ObjectManagerGetLoadedObjectEntryIndex(objectEntry);
202 auto rideName = GetRideNaming(td.trackAndVehicle.rtdIndex, GetRideEntryByIndex(groupIndex));
203 ft.Add<StringId>(rideName.Name);

Callers

nothing calls this directly

Calls 15

getColourMapFunction · 0.85
fillFunction · 0.85
GfxSetG1ElementFunction · 0.85
GfxDrawSpriteFunction · 0.85
drawTextEllipsisedFunction · 0.85
drawTextFunction · 0.85
ObjectManagerLoadObjectFunction · 0.85
GetRideNamingFunction · 0.85
GetRideEntryByIndexFunction · 0.85
ToHumanReadableSpeedFunction · 0.85

Tested by

no test coverage detected