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

Function initViewport

src/OpenLoco/src/Ui/Windows/StationWindow.cpp:209–273  ·  view source on GitHub ↗

0x0048F11B

Source from the content-addressed store, hash-verified

207
208 // 0x0048F11B
209 static void initViewport(Window& self)
210 {
211 if (self.currentTab != 0)
212 {
213 return;
214 }
215
216 self.callPrepareDraw();
217
218 // Figure out the station's position on the map.
219 auto station = StationManager::get(StationId(self.number));
220
221 // Compute views.
222
223 SavedView view = {
224 station->x,
225 station->y,
226 ZoomLevel::half,
227 static_cast<int8_t>(self.viewports[0]->getRotation()),
228 station->z,
229 };
230 view.flags |= (1 << 14);
231
232 ViewportFlags flags = ViewportFlags::none;
233 if (self.viewports[0] != nullptr)
234 {
235 if (self.savedView == view)
236 {
237 return;
238 }
239
240 flags = self.viewports[0]->flags;
241 self.viewportRemove(0);
242 }
243 else
244 {
245 if (Config::get().gridlinesOnLandscape)
246 {
247 flags |= ViewportFlags::gridlines_on_landscape;
248 }
249 }
250 // Remove station names from viewport
251 flags |= ViewportFlags::hideStationNames;
252
253 self.savedView = view;
254
255 // 0x0048F1CB start
256 if (self.viewports[0] == nullptr)
257 {
258 auto widget = &self.widgets[widx::viewport];
259 auto tile = World::Pos3({ station->x, station->y, station->z });
260 auto origin = Ui::Point(widget->left + self.x + 1, widget->top + self.y + 1);
261 auto size = Ui::Size(widget->width() - 2, widget->height() - 2);
262 ViewportManager::create(&self, 0, origin, size, self.savedView.zoomLevel, tile);
263 self.invalidate();
264 self.flags |= WindowFlags::viewportNoScrolling;
265 }
266 // 0x0048F1CB end

Callers 2

onResizeFunction · 0.70
openFunction · 0.70

Calls 10

StationIdEnum · 0.85
SizeClass · 0.85
callPrepareDrawMethod · 0.80
viewportRemoveMethod · 0.80
createFunction · 0.70
getFunction · 0.50
getRotationMethod · 0.45
widthMethod · 0.45
heightMethod · 0.45
invalidateMethod · 0.45

Tested by

no test coverage detected