From a45f898c7e8f0645951f7c256c81a785ea166d0a Mon Sep 17 00:00:00 2001 From: Raymond Zhao <7199958+rzhao271@users.noreply.github.com> Date: Thu, 13 Oct 2022 03:16:16 -0700 Subject: [PATCH] Close #18322: Refactor TitleLogo window to class --- src/openrct2-ui/windows/TitleLogo.cpp | 84 +++++++++++++-------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/src/openrct2-ui/windows/TitleLogo.cpp b/src/openrct2-ui/windows/TitleLogo.cpp index a748a8e278..2c6e35d30d 100644 --- a/src/openrct2-ui/windows/TitleLogo.cpp +++ b/src/openrct2-ui/windows/TitleLogo.cpp @@ -27,51 +27,51 @@ static rct_widget window_title_logo_widgets[] = { WIDGETS_END, }; -static void WindowTitleMenuMouseup(rct_window* w, WidgetIndex widgetIndex); -static void WindowTitleLogoPaint(rct_window* w, rct_drawpixelinfo* dpi); - -// clang-format off -static WindowEventList window_title_logo_events([](auto& events) +class TitleLogoWindow final : public Window { - events.mouse_up = &WindowTitleMenuMouseup; - events.paint = &WindowTitleLogoPaint; -}); -// clang-format on +public: + /** + * Creates the window containing the logo and the expansion packs on the title screen. + * rct2: 0x0066B679 (part of 0x0066B3E8) + */ + void OnOpen() override + { + widgets = window_title_logo_widgets; + WindowInitScrollWidgets(*this); + colours[0] = TRANSLUCENT(COLOUR_GREY); + colours[1] = TRANSLUCENT(COLOUR_GREY); + colours[2] = TRANSLUCENT(COLOUR_GREY); + } + + void OnMouseUp(WidgetIndex widgetIndex) override + { + switch (widgetIndex) + { + case WIDX_LOGO: + WindowAboutOpen(); + break; + } + } + + /** + * + * rct2: 0x0066B872 + */ + void OnDraw(rct_drawpixelinfo& dpi) override + { + auto screenCoords = windowPos + ScreenCoordsXY{ 2, 2 }; + gfx_draw_sprite(&dpi, ImageId(SPR_G2_LOGO), screenCoords); + gfx_draw_sprite(&dpi, ImageId(SPR_G2_TITLE), screenCoords + ScreenCoordsXY{ 104, 18 }); + } +}; -/** - * Creates the window containing the logo and the expansion packs on the title screen. - * rct2: 0x0066B679 (part of 0x0066B3E8) - */ rct_window* WindowTitleLogoOpen() { - rct_window* window = WindowCreate( - ScreenCoordsXY(0, 0), WW, WH, &window_title_logo_events, WindowClass::TitleLogo, WF_STICK_TO_BACK | WF_TRANSPARENT); - window->widgets = window_title_logo_widgets; - WindowInitScrollWidgets(*window); - window->colours[0] = TRANSLUCENT(COLOUR_GREY); - window->colours[1] = TRANSLUCENT(COLOUR_GREY); - window->colours[2] = TRANSLUCENT(COLOUR_GREY); - + auto* window = window_bring_to_front_by_class(WindowClass::TitleLogo); + if (window == nullptr) + { + window = WindowCreate( + WindowClass::TitleLogo, ScreenCoordsXY(0, 0), WW, WH, WF_STICK_TO_BACK | WF_TRANSPARENT); + } return window; } - -static void WindowTitleMenuMouseup(rct_window* w, WidgetIndex widgetIndex) -{ - switch (widgetIndex) - { - case WIDX_LOGO: - WindowAboutOpen(); - break; - } -} - -/** - * - * rct2: 0x0066B872 - */ -static void WindowTitleLogoPaint(rct_window* w, rct_drawpixelinfo* dpi) -{ - auto screenCoords = w->windowPos + ScreenCoordsXY{ 2, 2 }; - gfx_draw_sprite(dpi, ImageId(SPR_G2_LOGO), screenCoords); - gfx_draw_sprite(dpi, ImageId(SPR_G2_TITLE), screenCoords + ScreenCoordsXY{ 104, 18 }); -}