diff --git a/src/openrct2-ui/ProvisionalElements.cpp b/src/openrct2-ui/ProvisionalElements.cpp index 2735871555..14584c9174 100644 --- a/src/openrct2-ui/ProvisionalElements.cpp +++ b/src/openrct2-ui/ProvisionalElements.cpp @@ -16,7 +16,6 @@ #include #include #include -#include #include #include diff --git a/src/openrct2-ui/TextComposition.cpp b/src/openrct2-ui/TextComposition.cpp index 1b03f3cba6..3b59e59222 100644 --- a/src/openrct2-ui/TextComposition.cpp +++ b/src/openrct2-ui/TextComposition.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #ifdef __MACOSX__ // macOS uses COMMAND rather than CTRL for many keyboard shortcuts diff --git a/src/openrct2-ui/TextComposition.h b/src/openrct2-ui/TextComposition.h index ef4e37db87..ddad7f1deb 100644 --- a/src/openrct2-ui/TextComposition.h +++ b/src/openrct2-ui/TextComposition.h @@ -10,7 +10,6 @@ #pragma once #include -#include union SDL_Event; diff --git a/src/openrct2-ui/WindowManager.cpp b/src/openrct2-ui/WindowManager.cpp index 2b21de26d1..c31bbc9be3 100644 --- a/src/openrct2-ui/WindowManager.cpp +++ b/src/openrct2-ui/WindowManager.cpp @@ -502,19 +502,19 @@ public: case INTENT_ACTION_UPDATE_CLIMATE: gToolbarDirtyFlags |= BTM_TB_DIRTY_FLAG_CLIMATE; - WindowInvalidateByClass(WindowClass::GuestList); + InvalidateByClass(WindowClass::GuestList); break; case INTENT_ACTION_UPDATE_GUEST_COUNT: gToolbarDirtyFlags |= BTM_TB_DIRTY_FLAG_PEEP_COUNT; - WindowInvalidateByClass(WindowClass::GuestList); - WindowInvalidateByClass(WindowClass::ParkInformation); + InvalidateByClass(WindowClass::GuestList); + InvalidateByClass(WindowClass::ParkInformation); WindowGuestListRefreshList(); break; case INTENT_ACTION_UPDATE_PARK_RATING: gToolbarDirtyFlags |= BTM_TB_DIRTY_FLAG_PARK_RATING; - WindowInvalidateByClass(WindowClass::ParkInformation); + InvalidateByClass(WindowClass::ParkInformation); break; case INTENT_ACTION_UPDATE_DATE: @@ -522,7 +522,7 @@ public: break; case INTENT_ACTION_UPDATE_CASH: - WindowInvalidateByClass(WindowClass::Finances); + InvalidateByClass(WindowClass::Finances); gToolbarDirtyFlags |= BTM_TB_DIRTY_FLAG_MONEY; break; @@ -538,8 +538,8 @@ public: break; } case INTENT_ACTION_UPDATE_RESEARCH: - WindowInvalidateByClass(WindowClass::Finances); - WindowInvalidateByClass(WindowClass::Research); + InvalidateByClass(WindowClass::Finances); + InvalidateByClass(WindowClass::Research); break; case INTENT_ACTION_UPDATE_VEHICLE_SOUNDS: @@ -558,7 +558,7 @@ public: case INTENT_ACTION_TILE_MODIFY: { - WindowInvalidateByClass(WindowClass::TileInspector); + InvalidateByClass(WindowClass::TileInspector); break; } @@ -925,8 +925,6 @@ public: /** * Closes the specified window. * rct2: 0x006ECD4C - * - * @param window The window to close (esi). */ void Close(WindowBase& w) override { @@ -994,7 +992,6 @@ public: /** * Closes all windows with the specified window class. * rct2: 0x006ECCF4 - * @param cls (cl) with bit 15 set */ void CloseByClass(WindowClass cls) override { @@ -1004,8 +1001,6 @@ public: /** * Closes all windows with specified window class and number. * rct2: 0x006ECCF4 - * @param cls (cl) without bit 15 set - * @param number (dx) */ void CloseByNumber(WindowClass cls, rct_windownumber number) override { @@ -1066,8 +1061,6 @@ public: /** * Closes all windows except the specified window number and class. - * @param number (dx) - * @param cls (cl) without bit 15 set */ void CloseAllExceptNumberAndClass(rct_windownumber number, WindowClass cls) override { @@ -1092,7 +1085,6 @@ public: /** * Finds the first window with the specified window class. * rct2: 0x006EA8A0 - * @param WindowClass enum * @returns the window or nullptr if no window was found. */ WindowBase* FindByClass(WindowClass cls) override @@ -1112,8 +1104,6 @@ public: /** * Finds the first window with the specified window class and number. * rct2: 0x006EA8A0 - * @param WindowClass enum - * @param window number * @returns the window or nullptr if no window was found. */ WindowBase* FindByNumber(WindowClass cls, rct_windownumber number) override @@ -1168,8 +1158,6 @@ public: /** * * rct2: 0x006EA594 - * x (ax) - * y (bx) * returns widget_index if found, -1 otherwise */ WidgetIndex FindWidgetFromPoint(WindowBase& w, const ScreenCoordsXY& screenCoords) override @@ -1205,6 +1193,102 @@ public: return widget_index; } + /** + * Invalidates the specified window. + * rct2: 0x006EB13A + */ + template + static void InvalidateByCondition(TPred pred) + { + WindowVisitEach([pred](WindowBase* w) { + if (pred(w)) + { + w->Invalidate(); + } + }); + } + + /** + * Invalidates all windows with the specified window class. + * rct2: 0x006EC3AC + */ + void InvalidateByClass(WindowClass cls) override + { + InvalidateByCondition([cls](WindowBase* w) -> bool { return w->classification == cls; }); + } + + /** + * Invalidates all windows with the specified window class and number. + * rct2: 0x006EC3AC + */ + void InvalidateByNumber(WindowClass cls, rct_windownumber number) override + { + InvalidateByCondition([cls, number](WindowBase* w) -> bool { return w->classification == cls && w->number == number; }); + } + + // TODO: Use variant for this once the window framework is done. + void InvalidateByNumber(WindowClass cls, EntityId id) override + { + InvalidateByNumber(cls, static_cast(id.ToUnderlying())); + } + + /** + * Invalidates all windows. + */ + void InvalidateAll() override + { + WindowVisitEach([](WindowBase* w) { w->Invalidate(); }); + } + + /** + * Invalidates the specified widget of a window. + * rct2: 0x006EC402 + */ + void InvalidateWidget(WindowBase& w, WidgetIndex widgetIndex) override + { + if (w.widgets.empty()) + { + // This might be called before the window is fully created. + return; + } + + assert(widgetIndex < w.widgets.size()); + + const auto& widget = w.widgets[widgetIndex]; + if (widget.left == -2) + return; + + GfxSetDirtyBlocks({ { w.windowPos + ScreenCoordsXY{ widget.left, widget.top } }, + { w.windowPos + ScreenCoordsXY{ widget.right + 1, widget.bottom + 1 } } }); + } + + /** + * Invalidates the specified widget of all windows that match the specified window class. + */ + void InvalidateWidgetByClass(WindowClass cls, WidgetIndex widgetIndex) override + { + WindowVisitEach([this, cls, widgetIndex](WindowBase* w) { + if (w->classification == cls) + { + InvalidateWidget(*w, widgetIndex); + } + }); + } + + /** + * Invalidates the specified widget of all windows that match the specified window class and number. + * rct2: 0x006EC3AC + */ + void InvalidateWidgetByNumber(WindowClass cls, rct_windownumber number, WidgetIndex widgetIndex) override + { + WindowVisitEach([this, cls, number, widgetIndex](WindowBase* w) { + if (w->classification == cls && w->number == number) + { + InvalidateWidget(*w, widgetIndex); + } + }); + } + /** * * rct2: 0x006ECDA4 @@ -1265,8 +1349,6 @@ public: /** * * rct2: 0x006ED78A - * cls (cl) - * number (dx) */ WindowBase* BringToFrontByNumber(WindowClass cls, rct_windownumber number) override { diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index dec0c52356..b25245dc1c 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -230,7 +230,9 @@ namespace OpenRCT2 } WidgetScrollUpdateThumbs(*w, widgetIndex); - WindowInvalidateByNumber(w->classification, w->number); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(w->classification, w->number); ScreenCoordsXY fixedCursorPosition = { static_cast(std::ceil(gInputDragLast.x * Config::Get().general.WindowScale)), @@ -705,7 +707,9 @@ namespace OpenRCT2 break; } WidgetScrollUpdateThumbs(w, widgetIndex); - WindowInvalidateByNumber(w.classification, w.number); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(w.classification, w.number); } static void InputScrollContinue(WindowBase& w, WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) @@ -807,7 +811,7 @@ namespace OpenRCT2 newLeft = x; scroll.contentOffsetX = newLeft; WidgetScrollUpdateThumbs(w, widgetIndex); - WidgetInvalidateByNumber(w.classification, w.number, widgetIndex); + windowMgr->InvalidateWidgetByNumber(w.classification, w.number, widgetIndex); } } @@ -847,7 +851,7 @@ namespace OpenRCT2 newTop = y; scroll.contentOffsetY = newTop; WidgetScrollUpdateThumbs(w, widgetIndex); - WidgetInvalidateByNumber(w.classification, w.number, widgetIndex); + windowMgr->InvalidateWidgetByNumber(w.classification, w.number, widgetIndex); } } @@ -865,7 +869,7 @@ namespace OpenRCT2 if (scroll.contentOffsetX >= 3) scroll.contentOffsetX -= 3; WidgetScrollUpdateThumbs(w, widgetIndex); - WidgetInvalidateByNumber(w.classification, w.number, widgetIndex); + windowMgr->InvalidateWidgetByNumber(w.classification, w.number, widgetIndex); } } @@ -893,7 +897,7 @@ namespace OpenRCT2 if (scroll.contentOffsetX > newLeft) scroll.contentOffsetX = newLeft; WidgetScrollUpdateThumbs(w, widgetIndex); - WidgetInvalidateByNumber(w.classification, w.number, widgetIndex); + windowMgr->InvalidateWidgetByNumber(w.classification, w.number, widgetIndex); } } @@ -911,7 +915,7 @@ namespace OpenRCT2 if (scroll.contentOffsetY >= 3) scroll.contentOffsetY -= 3; WidgetScrollUpdateThumbs(w, widgetIndex); - WidgetInvalidateByNumber(w.classification, w.number, widgetIndex); + windowMgr->InvalidateWidgetByNumber(w.classification, w.number, widgetIndex); } } @@ -939,7 +943,7 @@ namespace OpenRCT2 if (scroll.contentOffsetY > newTop) scroll.contentOffsetY = newTop; WidgetScrollUpdateThumbs(w, widgetIndex); - WidgetInvalidateByNumber(w.classification, w.number, widgetIndex); + windowMgr->InvalidateWidgetByNumber(w.classification, w.number, widgetIndex); } } @@ -1027,7 +1031,7 @@ namespace OpenRCT2 w->OnPrepareDraw(); if (w->widgets[gHoverWidget.widget_index].type == WindowWidgetType::FlatBtn) { - WidgetInvalidateByNumber( + windowMgr->InvalidateWidgetByNumber( gHoverWidget.window_classification, gHoverWidget.window_number, gHoverWidget.widget_index); } } @@ -1131,7 +1135,7 @@ namespace OpenRCT2 _inputState = InputState::WidgetPressed; _clickRepeatTicks = gCurrentRealTimeTicks; - WidgetInvalidateByNumber(windowClass, windowNumber, widgetIndex); + windowMgr->InvalidateWidgetByNumber(windowClass, windowNumber, widgetIndex); w->OnMouseDown(widgetIndex); } break; @@ -1378,13 +1382,13 @@ namespace OpenRCT2 if (_inputState == InputState::DropdownActive) { gDropdownHighlightedIndex = gDropdownDefaultIndex; - WindowInvalidateByClass(WindowClass::Dropdown); + windowMgr->InvalidateByClass(WindowClass::Dropdown); } return; } _inputFlags |= INPUT_FLAG_WIDGET_PRESSED; - WidgetInvalidateByNumber(cursor_w_class, cursor_w_number, widgetIndex); + windowMgr->InvalidateWidgetByNumber(cursor_w_class, cursor_w_number, widgetIndex); return; case MouseState::LeftRelease: case MouseState::RightPress: @@ -1439,7 +1443,7 @@ namespace OpenRCT2 if (_inputFlags & INPUT_FLAG_WIDGET_PRESSED) { _inputFlags &= ~INPUT_FLAG_WIDGET_PRESSED; - WidgetInvalidateByNumber(cursor_w_class, cursor_w_number, cursor_widgetIndex); + windowMgr->InvalidateWidgetByNumber(cursor_w_class, cursor_w_number, cursor_widgetIndex); } _inputState = InputState::Normal; @@ -1486,7 +1490,7 @@ namespace OpenRCT2 if (WidgetIsDisabled(*w, widgetIndex)) break; - WidgetInvalidateByNumber(cursor_w_class, cursor_w_number, widgetIndex); + windowMgr->InvalidateWidgetByNumber(cursor_w_class, cursor_w_number, widgetIndex); w->OnMouseUp(widgetIndex); return; @@ -1501,7 +1505,7 @@ namespace OpenRCT2 if (_inputFlags & INPUT_FLAG_WIDGET_PRESSED) { _inputFlags &= ~INPUT_FLAG_WIDGET_PRESSED; - WidgetInvalidateByNumber(cursor_w_class, cursor_w_number, cursor_widgetIndex); + windowMgr->InvalidateWidgetByNumber(cursor_w_class, cursor_w_number, cursor_widgetIndex); } return; } @@ -1512,7 +1516,7 @@ namespace OpenRCT2 } gDropdownHighlightedIndex = -1; - WindowInvalidateByClass(WindowClass::Dropdown); + windowMgr->InvalidateByClass(WindowClass::Dropdown); if (w == nullptr) { return; @@ -1546,7 +1550,7 @@ namespace OpenRCT2 } gDropdownHighlightedIndex = dropdown_index; - WindowInvalidateByClass(WindowClass::Dropdown); + windowMgr->InvalidateByClass(WindowClass::Dropdown); } else { @@ -1624,7 +1628,7 @@ namespace OpenRCT2 { // Reset to basic scroll w->scrolls[_currentScrollIndex].flags &= 0xFF11; - WindowInvalidateByNumber(gPressedWidget.window_classification, gPressedWidget.window_number); + windowMgr->InvalidateByNumber(gPressedWidget.window_classification, gPressedWidget.window_number); } } diff --git a/src/openrct2-ui/interface/ViewportInteraction.cpp b/src/openrct2-ui/interface/ViewportInteraction.cpp index 0b5c1df1eb..7a00fa9115 100644 --- a/src/openrct2-ui/interface/ViewportInteraction.cpp +++ b/src/openrct2-ui/interface/ViewportInteraction.cpp @@ -45,7 +45,6 @@ #include #include #include -#include #include #include #include diff --git a/src/openrct2-ui/interface/ViewportQuery.cpp b/src/openrct2-ui/interface/ViewportQuery.cpp index 5b56b3e3f3..e07ad66822 100644 --- a/src/openrct2-ui/interface/ViewportQuery.cpp +++ b/src/openrct2-ui/interface/ViewportQuery.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include diff --git a/src/openrct2-ui/interface/Window.cpp b/src/openrct2-ui/interface/Window.cpp index c33d09c663..dfd52d0c8f 100644 --- a/src/openrct2-ui/interface/Window.cpp +++ b/src/openrct2-ui/interface/Window.cpp @@ -28,7 +28,6 @@ #include #include #include -#include #include #include @@ -112,7 +111,9 @@ namespace OpenRCT2 } WidgetScrollUpdateThumbs(w, widgetIndex); - WidgetInvalidate(w, widgetIndex); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateWidget(w, widgetIndex); } /** @@ -361,7 +362,8 @@ namespace OpenRCT2 void Window::InvalidateWidget(WidgetIndex widgetIndex) { - WidgetInvalidate(*this, widgetIndex); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateWidget(*this, widgetIndex); } bool Window::IsWidgetDisabled(WidgetIndex widgetIndex) const @@ -625,7 +627,7 @@ namespace OpenRCT2::Ui::Windows _usingWidgetTextBox = false; if (w != nullptr) { - WidgetInvalidate(*w, _currentTextBox.widget_index); + windowMgr->InvalidateWidget(*w, _currentTextBox.widget_index); } _currentTextBox.widget_index = kWidgetIndexNull; } @@ -645,7 +647,7 @@ namespace OpenRCT2::Ui::Windows _textBoxFrameNo = 0; auto* windowMgr = GetWindowManager(); WindowBase* w = windowMgr->FindByNumber(_currentTextBox.window.classification, _currentTextBox.window.number); - WidgetInvalidate(*w, _currentTextBox.widget_index); + windowMgr->InvalidateWidget(*w, _currentTextBox.widget_index); w->OnTextInput(_currentTextBox.widget_index, _textBoxInput); } } diff --git a/src/openrct2-ui/scripting/CustomWindow.cpp b/src/openrct2-ui/scripting/CustomWindow.cpp index 104cdc2c94..2a6a7de696 100644 --- a/src/openrct2-ui/scripting/CustomWindow.cpp +++ b/src/openrct2-ui/scripting/CustomWindow.cpp @@ -9,7 +9,6 @@ #ifdef ENABLE_SCRIPTING - #include "../UiContext.h" #include "../UiStringIds.h" #include "../interface/Dropdown.h" #include "../interface/Widget.h" @@ -465,7 +464,8 @@ namespace OpenRCT2::Ui::Windows { frame_no = 0; } - WidgetInvalidate(*this, WIDX_TAB_0 + this->page); + + InvalidateWidget(WIDX_TAB_0 + this->page); } } @@ -1203,7 +1203,9 @@ namespace OpenRCT2::Ui::Windows { customWidgetInfo->Text = value; w->widgets[widgetIndex].string = customWidgetInfo->Text.data(); - WidgetInvalidate(*w, widgetIndex); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateWidget(*w, widgetIndex); } } } @@ -1237,7 +1239,9 @@ namespace OpenRCT2::Ui::Windows { customWidgetInfo->Colour = colour; widget.image = GetColourButtonImage(colour); - WidgetInvalidate(*w, widgetIndex); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateWidget(*w, widgetIndex); std::vector args; auto ctx = customWidgetInfo->OnChange.context(); @@ -1282,7 +1286,8 @@ namespace OpenRCT2::Ui::Windows } customWidgetInfo->SelectedIndex = selectedIndex; - WidgetInvalidate(*w, widgetIndex); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateWidget(*w, widgetIndex); if (lastSelectedIndex != selectedIndex) { diff --git a/src/openrct2-ui/scripting/ScViewport.hpp b/src/openrct2-ui/scripting/ScViewport.hpp index c0910bd891..6a09c53802 100644 --- a/src/openrct2-ui/scripting/ScViewport.hpp +++ b/src/openrct2-ui/scripting/ScViewport.hpp @@ -18,7 +18,6 @@ #include #include #include - #include #include #include diff --git a/src/openrct2-ui/scripting/ScWidget.hpp b/src/openrct2-ui/scripting/ScWidget.hpp index bdc06796fd..3e55565c92 100644 --- a/src/openrct2-ui/scripting/ScWidget.hpp +++ b/src/openrct2-ui/scripting/ScWidget.hpp @@ -12,7 +12,6 @@ #ifdef ENABLE_SCRIPTING #include "../interface/Widget.h" - #include "../interface/Window.h" #include "CustomListView.h" #include "CustomWindow.h" #include "ScViewport.hpp" @@ -22,7 +21,6 @@ #include #include #include - #include #include namespace OpenRCT2::Scripting @@ -421,14 +419,15 @@ namespace OpenRCT2::Scripting { if (widget != nullptr) { + auto* windowMgr = Ui::GetWindowManager(); if (widget->type == WindowWidgetType::DropdownMenu) { - WidgetInvalidateByNumber(_class, _number, _widgetIndex + 1); + windowMgr->InvalidateWidgetByNumber(_class, _number, _widgetIndex + 1); } else if (widget->type == WindowWidgetType::Spinner) { - WidgetInvalidateByNumber(_class, _number, _widgetIndex + 1); - WidgetInvalidateByNumber(_class, _number, _widgetIndex + 2); + windowMgr->InvalidateWidgetByNumber(_class, _number, _widgetIndex + 1); + windowMgr->InvalidateWidgetByNumber(_class, _number, _widgetIndex + 2); } } Invalidate(); @@ -436,7 +435,8 @@ namespace OpenRCT2::Scripting void Invalidate() { - WidgetInvalidateByNumber(_class, _number, _widgetIndex); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateWidgetByNumber(_class, _number, _widgetIndex); } }; diff --git a/src/openrct2-ui/title/TitleSequencePlayer.cpp b/src/openrct2-ui/title/TitleSequencePlayer.cpp index 4adba0ed30..81f615bdbb 100644 --- a/src/openrct2-ui/title/TitleSequencePlayer.cpp +++ b/src/openrct2-ui/title/TitleSequencePlayer.cpp @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index f019929dc4..7eb93f1c85 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -870,6 +870,8 @@ static StringId window_cheats_page_titles[] = { void OnMouseDownDate(WidgetIndex widgetIndex) { + auto* windowMgr = Ui::GetWindowManager(); + switch (widgetIndex) { case WIDX_YEAR_UP: @@ -914,14 +916,14 @@ static StringId window_cheats_page_titles[] = { { auto setDateAction = ParkSetDateAction(_yearSpinnerValue - 1, _monthSpinnerValue - 1, _daySpinnerValue - 1); GameActions::Execute(&setDateAction); - WindowInvalidateByClass(WindowClass::BottomToolbar); + windowMgr->InvalidateByClass(WindowClass::BottomToolbar); break; } case WIDX_DATE_RESET: { auto setDateAction = ParkSetDateAction(0, 0, 0); GameActions::Execute(&setDateAction); - WindowInvalidateByClass(WindowClass::BottomToolbar); + windowMgr->InvalidateByClass(WindowClass::BottomToolbar); InvalidateWidget(WIDX_YEAR_BOX); InvalidateWidget(WIDX_MONTH_BOX); InvalidateWidget(WIDX_DAY_BOX); diff --git a/src/openrct2-ui/windows/ClearScenery.cpp b/src/openrct2-ui/windows/ClearScenery.cpp index 2346f2e299..bcadd37b50 100644 --- a/src/openrct2-ui/windows/ClearScenery.cpp +++ b/src/openrct2-ui/windows/ClearScenery.cpp @@ -308,7 +308,8 @@ namespace OpenRCT2::Ui::Windows if (_clearSceneryCost != cost) { _clearSceneryCost = cost; - WindowInvalidateByClass(WindowClass::ClearScenery); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::ClearScenery); } } diff --git a/src/openrct2-ui/windows/CustomCurrency.cpp b/src/openrct2-ui/windows/CustomCurrency.cpp index 1ddf539031..3cfb7b9bef 100644 --- a/src/openrct2-ui/windows/CustomCurrency.cpp +++ b/src/openrct2-ui/windows/CustomCurrency.cpp @@ -65,6 +65,7 @@ namespace OpenRCT2::Ui::Windows void OnMouseDown(WidgetIndex widgetIndex) override { auto* widget = &widgets[widgetIndex - 1]; + auto* windowMgr = Ui::GetWindowManager(); switch (widgetIndex) { @@ -75,7 +76,7 @@ namespace OpenRCT2::Ui::Windows CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate += 1; Config::Get().general.CustomCurrencyRate = CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate; Config::Save(); - WindowInvalidateAll(); + windowMgr->InvalidateAll(); break; case WIDX_RATE_DOWN: if (CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate > 1) @@ -83,7 +84,7 @@ namespace OpenRCT2::Ui::Windows CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate -= 1; Config::Get().general.CustomCurrencyRate = CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate; Config::Save(); - WindowInvalidateAll(); + windowMgr->InvalidateAll(); } break; case WIDX_AFFIX_DROPDOWN_BUTTON: @@ -149,7 +150,8 @@ namespace OpenRCT2::Ui::Windows Config::Get().general.CustomCurrencyAffix = CurrencyDescriptors[EnumValue(CurrencyType::Custom)].affix_unicode; Config::Save(); - WindowInvalidateAll(); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateAll(); } } @@ -158,7 +160,7 @@ namespace OpenRCT2::Ui::Windows if (text.empty()) return; - int32_t rate; + auto* windowMgr = Ui::GetWindowManager(); switch (widgetIndex) { @@ -171,18 +173,19 @@ namespace OpenRCT2::Ui::Windows .symbol_unicode; Config::Save(); - WindowInvalidateAll(); + + windowMgr->InvalidateAll(); break; case WIDX_RATE: const auto res = String::Parse(text); if (res.has_value()) { - rate = res.value(); + int32_t rate = res.value(); CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate = rate; Config::Get().general.CustomCurrencyRate = CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate; Config::Save(); - WindowInvalidateAll(); + windowMgr->InvalidateAll(); } break; } diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index 142767d08f..30754c1219 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -216,7 +216,8 @@ namespace OpenRCT2::Ui::Windows { frame_no++; OnPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_1); + + InvalidateWidget(WIDX_TAB_1); if (WindowEditorInventionsListDragGetItem() != nullptr) return; @@ -655,7 +656,7 @@ namespace OpenRCT2::Ui::Windows inventionListWindow->MoveResearchItem(_draggedItem, res->research, res->isInvented); } - WindowInvalidateByClass(WindowClass::EditorInventionList); + windowMgr->InvalidateByClass(WindowClass::EditorInventionList); Close(); } diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 7f3eac93a1..b73a435851 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -349,7 +349,7 @@ namespace OpenRCT2::Ui::Windows if (GetCurrentTextBox().window.classification == classification && GetCurrentTextBox().window.number == number) { WindowUpdateTextboxCaret(); - WidgetInvalidate(*this, WIDX_FILTER_TEXT_BOX); + InvalidateWidget(WIDX_FILTER_TEXT_BOX); } auto& currentPage = ObjectSelectionPages[selected_tab]; @@ -365,7 +365,7 @@ namespace OpenRCT2::Ui::Windows if (frame_no >= subTabDef.animationLength) frame_no = 0; - WidgetInvalidate(*this, WIDX_SUB_TAB_0 + _selectedSubTab); + InvalidateWidget(WIDX_SUB_TAB_0 + _selectedSubTab); } /** diff --git a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp index ebad66b0f2..3c45dafb89 100644 --- a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp +++ b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp @@ -10,7 +10,6 @@ #include "../UiStringIds.h" #include "../interface/Dropdown.h" #include "../interface/Widget.h" -#include "../interface/Window.h" #include "Windows.h" #include diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index 0081d6365e..6e148845f6 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -10,7 +10,6 @@ #include "../UiStringIds.h" #include "../interface/Dropdown.h" #include "../interface/Widget.h" -#include "../interface/Window.h" #include "Windows.h" #include @@ -538,8 +537,9 @@ namespace OpenRCT2::Ui::Windows if (gScreenFlags == SCREEN_FLAGS_PLAYING) { - WindowInvalidateByClass(WindowClass::Finances); - WindowInvalidateByClass(WindowClass::BottomToolbar); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Finances); + windowMgr->InvalidateByClass(WindowClass::BottomToolbar); } } @@ -547,7 +547,7 @@ namespace OpenRCT2::Ui::Windows { frame_no++; FinancialPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_1); + InvalidateWidget(WIDX_TAB_1); } void FinancialPrepareDraw() @@ -820,7 +820,7 @@ namespace OpenRCT2::Ui::Windows { frame_no++; GuestsPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_2); + InvalidateWidget(WIDX_TAB_2); } void GuestsPrepareDraw() @@ -1119,7 +1119,7 @@ namespace OpenRCT2::Ui::Windows { frame_no++; ParkPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_3); + InvalidateWidget(WIDX_TAB_3); } void ParkPrepareDraw() diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index fc48b79dbd..9ab1739d19 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -238,13 +238,15 @@ namespace OpenRCT2::Ui::Windows ViewportSetVisibility(ViewportVisibility::Default); MapInvalidateMapSelectionTiles(); gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE_CONSTRUCT; - WindowInvalidateByClass(WindowClass::TopToolbar); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::TopToolbar); HideGridlines(); } void OnUpdate() override { - WidgetInvalidate(*this, WIDX_CONSTRUCT); + InvalidateWidget(WIDX_CONSTRUCT); WindowFootpathUpdateProvisionalPathForBridgeMode(); // #2502: The camera might have changed rotation, so we need to update which directional buttons are pressed @@ -572,7 +574,7 @@ namespace OpenRCT2::Ui::Windows auto pathConstructFlags = FootpathCreateConstructFlags(type); _windowFootpathCost = FootpathProvisionalSet(type, railings, footpathLoc, slope, pathConstructFlags); - WidgetInvalidate(*this, WIDX_CONSTRUCT); + InvalidateWidget(WIDX_CONSTRUCT); } auto curTime = Platform::GetTicks(); @@ -1050,7 +1052,9 @@ namespace OpenRCT2::Ui::Windows auto constructFlags = FootpathCreateConstructFlags(pathType); _windowFootpathCost = FootpathProvisionalSet( pathType, gFootpathSelection.Railings, { *mapPos, baseZ }, slope, constructFlags); - WindowInvalidateByClass(WindowClass::Footpath); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Footpath); } /** diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index e04f0e39ac..d471f45557 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -690,7 +690,8 @@ namespace OpenRCT2::Ui::Windows { if (gScreenFlags == SCREEN_FLAGS_PLAYING) { - WidgetInvalidateByClass(WindowClass::BottomToolbar, WIDX_MIDDLE_OUTSET); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateWidgetByClass(WindowClass::BottomToolbar, WIDX_MIDDLE_OUTSET); } } } // namespace OpenRCT2::Ui::Windows diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 53ebb8b8f8..06eb5067fd 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -596,9 +596,7 @@ namespace OpenRCT2::Ui::Windows { DisableWidgets(); OnPrepareDraw(); - - WidgetInvalidate(*this, WIDX_MARQUEE); - + InvalidateWidget(WIDX_MARQUEE); OnResizeCommon(); if (viewport != nullptr) @@ -886,13 +884,13 @@ namespace OpenRCT2::Ui::Windows picked_peep_frame++; picked_peep_frame %= pickAnimLength * 4; - WidgetInvalidate(*this, WIDX_TAB_1); - WidgetInvalidate(*this, WIDX_TAB_2); + InvalidateWidget(WIDX_TAB_1); + InvalidateWidget(WIDX_TAB_2); if (peep->WindowInvalidateFlags & PEEP_INVALIDATE_PEEP_ACTION) { peep->WindowInvalidateFlags &= ~PEEP_INVALIDATE_PEEP_ACTION; - WidgetInvalidate(*this, WIDX_ACTION_LBL); + InvalidateWidget(WIDX_ACTION_LBL); } _marqueePosition += 2; @@ -1215,8 +1213,8 @@ namespace OpenRCT2::Ui::Windows { frame_no++; - WidgetInvalidate(*this, WIDX_TAB_2); - WidgetInvalidate(*this, WIDX_TAB_3); + InvalidateWidget(WIDX_TAB_2); + InvalidateWidget(WIDX_TAB_3); const auto guest = GetGuest(); if (guest == nullptr) @@ -1388,8 +1386,8 @@ namespace OpenRCT2::Ui::Windows { frame_no++; - WidgetInvalidate(*this, WIDX_TAB_2); - WidgetInvalidate(*this, WIDX_TAB_4); + InvalidateWidget(WIDX_TAB_2); + InvalidateWidget(WIDX_TAB_4); } void OnDrawFinance(DrawPixelInfo& dpi) @@ -1526,8 +1524,8 @@ namespace OpenRCT2::Ui::Windows { frame_no++; - WidgetInvalidate(*this, WIDX_TAB_2); - WidgetInvalidate(*this, WIDX_TAB_5); + InvalidateWidget(WIDX_TAB_2); + InvalidateWidget(WIDX_TAB_5); auto peep = GetGuest(); if (peep == nullptr) @@ -1601,8 +1599,8 @@ namespace OpenRCT2::Ui::Windows { frame_no++; - WidgetInvalidate(*this, WIDX_TAB_2); - WidgetInvalidate(*this, WIDX_TAB_6); + InvalidateWidget(WIDX_TAB_2); + InvalidateWidget(WIDX_TAB_6); auto peep = GetGuest(); if (peep == nullptr) diff --git a/src/openrct2-ui/windows/Land.cpp b/src/openrct2-ui/windows/Land.cpp index bef43874f7..f0b9efc292 100644 --- a/src/openrct2-ui/windows/Land.cpp +++ b/src/openrct2-ui/windows/Land.cpp @@ -608,6 +608,7 @@ namespace OpenRCT2::Ui::Windows void ToolUpdateLand(const ScreenCoordsXY& screenPos) { const bool mapCtrlPressed = GetInputManager().IsModifierKeyPressed(ModifierKey::ctrl); + auto* windowMgr = Ui::GetWindowManager(); MapInvalidateSelectionRect(); @@ -623,7 +624,7 @@ namespace OpenRCT2::Ui::Windows { _landToolRaiseCost = raise_cost; _landToolLowerCost = lower_cost; - WindowInvalidateByClass(WindowClass::Land); + windowMgr->InvalidateByClass(WindowClass::Land); } return; } @@ -649,7 +650,7 @@ namespace OpenRCT2::Ui::Windows { _landToolRaiseCost = raise_cost; _landToolLowerCost = lower_cost; - WindowInvalidateByClass(WindowClass::Land); + windowMgr->InvalidateByClass(WindowClass::Land); } return; } @@ -709,7 +710,7 @@ namespace OpenRCT2::Ui::Windows { _landToolRaiseCost = raise_cost; _landToolLowerCost = lower_cost; - WindowInvalidateByClass(WindowClass::Land); + windowMgr->InvalidateByClass(WindowClass::Land); } return; } @@ -726,7 +727,7 @@ namespace OpenRCT2::Ui::Windows { _landToolRaiseCost = raise_cost; _landToolLowerCost = lower_cost; - WindowInvalidateByClass(WindowClass::Land); + windowMgr->InvalidateByClass(WindowClass::Land); } return; } @@ -835,7 +836,7 @@ namespace OpenRCT2::Ui::Windows { _landToolRaiseCost = raise_cost; _landToolLowerCost = lower_cost; - WindowInvalidateByClass(WindowClass::Land); + windowMgr->InvalidateByClass(WindowClass::Land); } } diff --git a/src/openrct2-ui/windows/LandRights.cpp b/src/openrct2-ui/windows/LandRights.cpp index 0af7231350..625aee0d14 100644 --- a/src/openrct2-ui/windows/LandRights.cpp +++ b/src/openrct2-ui/windows/LandRights.cpp @@ -467,7 +467,9 @@ namespace OpenRCT2::Ui::Windows if (_landRightsCost != kMoney64Undefined) { _landRightsCost = kMoney64Undefined; - WindowInvalidateByClass(WindowClass::LandRights); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::LandRights); } return; } diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index 1b33d21c77..e1091bb42a 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -798,7 +798,7 @@ namespace OpenRCT2::Ui::Windows if (GetCurrentTextBox().window.classification == classification && GetCurrentTextBox().window.number == number) { WindowUpdateTextboxCaret(); - WidgetInvalidate(*this, WIDX_FILENAME_TEXTBOX); + InvalidateWidget(WIDX_FILENAME_TEXTBOX); } } @@ -1223,7 +1223,7 @@ namespace OpenRCT2::Ui::Windows { // Load or overwrite String::set(_currentFilename, std::size(_currentFilename), _listItems[selectedItem].name.c_str()); - WidgetInvalidate(*this, WIDX_FILENAME_TEXTBOX); + InvalidateWidget(WIDX_FILENAME_TEXTBOX); if ((_type & 0x01) == LOADSAVETYPE_SAVE) WindowOverwritePromptOpen(_listItems[selectedItem].name, _listItems[selectedItem].path); diff --git a/src/openrct2-ui/windows/MapTooltip.cpp b/src/openrct2-ui/windows/MapTooltip.cpp index 274595d168..c491508f58 100644 --- a/src/openrct2-ui/windows/MapTooltip.cpp +++ b/src/openrct2-ui/windows/MapTooltip.cpp @@ -75,7 +75,8 @@ namespace OpenRCT2::Ui::Windows if (ThemeGetFlags() & UITHEME_FLAG_USE_FULL_BOTTOM_TOOLBAR) { // The map tooltip is drawn by the bottom toolbar - WindowInvalidateByClass(WindowClass::BottomToolbar); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::BottomToolbar); return; } diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index 6a4f8a594d..4d5dca33c9 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -188,7 +188,7 @@ namespace OpenRCT2::Ui::Windows { if ((disabledWidgets & (1uLL << i)) != (currentDisabledWidgets & (1uLL << i))) { - WidgetInvalidate(*this, i); + InvalidateWidget(i); } } disabled_widgets = disabledWidgets; @@ -365,20 +365,21 @@ namespace OpenRCT2::Ui::Windows OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::PlaceItem, result->Position); + auto* windowMgr = Ui::GetWindowManager(); + auto currentRide = GetRide(rideIndex); if (currentRide != nullptr && RideAreAllPossibleEntrancesAndExitsBuilt(*currentRide).Successful) { ToolCancel(); if (!currentRide->GetRideTypeDescriptor().HasFlag(RtdFlag::hasTrack)) { - auto* windowMgr = Ui::GetWindowManager(); windowMgr->CloseByClass(WindowClass::RideConstruction); } } else { gRideEntranceExitPlaceType = gRideEntranceExitPlaceType ^ 1; - WindowInvalidateByClass(WindowClass::RideConstruction); + windowMgr->InvalidateByClass(WindowClass::RideConstruction); auto newToolWidgetIndex = (gRideEntranceExitPlaceType == ENTRANCE_TYPE_RIDE_ENTRANCE) ? WIDX_MAZE_ENTRANCE : WIDX_MAZE_EXIT; diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index a71b61640e..372eef4589 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -324,12 +324,12 @@ namespace OpenRCT2::Ui::Windows if (frame_no >= TabAnimationLoops[_currentTab]) frame_no = 0; - WidgetInvalidate(*this, WIDX_TAB_1 + static_cast(_currentTab)); + InvalidateWidget(WIDX_TAB_1 + static_cast(_currentTab)); if (GetCurrentTextBox().window.classification == classification && GetCurrentTextBox().window.number == number) { WindowUpdateTextboxCaret(); - WidgetInvalidate(*this, WIDX_FILTER_TEXT_BOX); + InvalidateWidget(WIDX_FILTER_TEXT_BOX); } if (_newRideVars.SelectedRide.Type != kRideTypeNull && _newRideVars.SelectedRideCountdown-- == 0) @@ -347,7 +347,7 @@ namespace OpenRCT2::Ui::Windows if (!WidgetIsHighlighted(*this, WIDX_RIDE_LIST)) { _newRideVars.HighlightedRide = { kRideTypeNull, kObjectEntryIndexNull }; - WidgetInvalidate(*this, WIDX_RIDE_LIST); + InvalidateWidget(WIDX_RIDE_LIST); } } } diff --git a/src/openrct2-ui/windows/ObjectLoadError.cpp b/src/openrct2-ui/windows/ObjectLoadError.cpp index a9aa859352..722751eff1 100644 --- a/src/openrct2-ui/windows/ObjectLoadError.cpp +++ b/src/openrct2-ui/windows/ObjectLoadError.cpp @@ -390,7 +390,7 @@ namespace OpenRCT2::Ui::Windows { selected_list_item = index; } - WidgetInvalidate(*this, WIDX_SCROLL); + InvalidateWidget(WIDX_SCROLL); } public: @@ -443,7 +443,7 @@ namespace OpenRCT2::Ui::Windows if (!WidgetIsHighlighted(*this, WIDX_SCROLL)) { _highlightedIndex = -1; - WidgetInvalidate(*this, WIDX_SCROLL); + InvalidateWidget(WIDX_SCROLL); } #ifndef DISABLE_HTTP @@ -486,7 +486,7 @@ namespace OpenRCT2::Ui::Windows else _highlightedIndex = selectedItem; - WidgetInvalidate(*this, WIDX_SCROLL); + InvalidateWidget(WIDX_SCROLL); } void OnDraw(DrawPixelInfo& dpi) override diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index fc53f6b090..b09b47c240 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -1318,15 +1318,19 @@ namespace OpenRCT2::Ui::Windows break; case WIDX_MASTER_SOUND_CHECKBOX: + { Config::Get().sound.MasterSoundEnabled = !Config::Get().sound.MasterSoundEnabled; if (!Config::Get().sound.MasterSoundEnabled) OpenRCT2::Audio::Pause(); else OpenRCT2::Audio::Resume(); - WindowInvalidateByClass(WindowClass::TopToolbar); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::TopToolbar); Config::Save(); Invalidate(); break; + } case WIDX_MUSIC_CHECKBOX: Config::Get().sound.RideMusicEnabled = !Config::Get().sound.RideMusicEnabled; @@ -1542,11 +1546,15 @@ namespace OpenRCT2::Ui::Windows setting ^= true; Config::Save(); Invalidate(); - WindowInvalidateByClass(WindowClass::TopToolbar); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::TopToolbar); } void ControlsMouseUp(WidgetIndex widgetIndex) { + auto* windowMgr = Ui::GetWindowManager(); + switch (widgetIndex) { case WIDX_HOTKEY_DROPDOWN: @@ -1596,7 +1604,7 @@ namespace OpenRCT2::Ui::Windows Config::Get().interface.WindowButtonsOnTheLeft ^= 1; Config::Save(); Invalidate(); - WindowInvalidateAll(); + windowMgr->InvalidateAll(); break; case WIDX_ENLARGED_UI: Config::Get().interface.EnlargedUi ^= 1; @@ -1604,13 +1612,13 @@ namespace OpenRCT2::Ui::Windows Config::Get().interface.TouchEnhancements = false; Config::Save(); Invalidate(); - WindowInvalidateAll(); + windowMgr->InvalidateAll(); break; case WIDX_TOUCH_ENHANCEMENTS: Config::Get().interface.TouchEnhancements ^= 1; Config::Save(); Invalidate(); - WindowInvalidateAll(); + windowMgr->InvalidateAll(); break; case WIDX_INVERT_DRAG: Config::Get().general.InvertViewportDrag ^= 1; diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index 128c683850..466b1e4969 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -500,7 +500,7 @@ namespace OpenRCT2::Ui::Windows void OnUpdateEntrance() { frame_no++; - WidgetInvalidate(*this, WIDX_TAB_1); + InvalidateWidget(WIDX_TAB_1); } void OnTextInputEntrance(WidgetIndex widgetIndex, std::string_view text) @@ -684,7 +684,7 @@ namespace OpenRCT2::Ui::Windows void OnUpdateRating() { frame_no++; - WidgetInvalidate(*this, WIDX_TAB_2); + InvalidateWidget(WIDX_TAB_2); if (_ratingProps.UpdateHoverIndex()) { InvalidateWidget(WIDX_BACKGROUND); @@ -753,7 +753,7 @@ namespace OpenRCT2::Ui::Windows { frame_no++; _peepAnimationFrame = (_peepAnimationFrame + 1) % 24; - WidgetInvalidate(*this, WIDX_TAB_3); + InvalidateWidget(WIDX_TAB_3); if (_guestProps.UpdateHoverIndex()) { InvalidateWidget(WIDX_BACKGROUND); @@ -860,7 +860,7 @@ namespace OpenRCT2::Ui::Windows void OnUpdatePrice() { frame_no++; - WidgetInvalidate(*this, WIDX_TAB_4); + InvalidateWidget(WIDX_TAB_4); } void OnPrepareDrawPrice() @@ -929,14 +929,14 @@ namespace OpenRCT2::Ui::Windows void OnUpdateStats() { frame_no++; - WidgetInvalidate(*this, WIDX_TAB_5); + InvalidateWidget(WIDX_TAB_5); // Invalidate ride count if changed const auto rideCount = RideGetCount(); if (_numberOfRides != rideCount) { _numberOfRides = rideCount; - WidgetInvalidate(*this, WIDX_PAGE_BACKGROUND); + InvalidateWidget(WIDX_PAGE_BACKGROUND); } // Invalidate number of staff if changed @@ -944,7 +944,7 @@ namespace OpenRCT2::Ui::Windows if (_numberOfStaff != staffCount) { _numberOfStaff = staffCount; - WidgetInvalidate(*this, WIDX_PAGE_BACKGROUND); + InvalidateWidget(WIDX_PAGE_BACKGROUND); } } @@ -1035,7 +1035,7 @@ namespace OpenRCT2::Ui::Windows void OnUpdateObjective() { frame_no++; - WidgetInvalidate(*this, WIDX_TAB_6); + InvalidateWidget(WIDX_TAB_6); } void OnTextInputObjective(WidgetIndex widgetIndex, std::string_view text) @@ -1138,7 +1138,7 @@ namespace OpenRCT2::Ui::Windows void OnUpdateAwards() { frame_no++; - WidgetInvalidate(*this, WIDX_TAB_7); + InvalidateWidget(WIDX_TAB_7); } void OnPrepareDrawAwards() diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index 116d63dd41..41d8c0858e 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -529,7 +529,8 @@ namespace OpenRCT2::Ui::Windows playerSetGroupAction.SetCallback([windowHandle](const GameAction* ga, const GameActions::Result* result) { if (result->Error == GameActions::Status::Ok) { - WindowInvalidateByNumber(windowHandle.first, windowHandle.second); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(windowHandle.first, windowHandle.second); } }); GameActions::Execute(&playerSetGroupAction); diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 6441b9bcdf..58e6d9e511 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -2265,7 +2265,7 @@ namespace OpenRCT2::Ui::Windows // Update tab animation frame_no++; OnPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_1); + InvalidateWidget(WIDX_TAB_1); // Update status auto ride = GetRide(rideId); @@ -2291,7 +2291,7 @@ namespace OpenRCT2::Ui::Windows } ride->window_invalidate_flags &= ~RIDE_INVALIDATE_RIDE_MAIN; } - WidgetInvalidate(*this, WIDX_STATUS); + InvalidateWidget(WIDX_STATUS); } void MainOnTextInput(WidgetIndex widgetIndex, std::string_view text) @@ -2717,7 +2717,7 @@ namespace OpenRCT2::Ui::Windows { frame_no++; OnPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_2); + InvalidateWidget(WIDX_TAB_2); } OpenRCT2String VehicleTooltip(const WidgetIndex widgetIndex, StringId fallback) @@ -3398,7 +3398,7 @@ namespace OpenRCT2::Ui::Windows { frame_no++; OnPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_3); + InvalidateWidget(WIDX_TAB_3); auto ride = GetRide(rideId); if (ride != nullptr && ride->window_invalidate_flags & RIDE_INVALIDATE_RIDE_OPERATING) @@ -3928,7 +3928,9 @@ namespace OpenRCT2::Ui::Windows break; } ride->lifecycle_flags &= ~(RIDE_LIFECYCLE_BREAKDOWN_PENDING | RIDE_LIFECYCLE_BROKEN_DOWN); - WindowInvalidateByNumber(WindowClass::Ride, number); + + auto* windowMgr = GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Ride, number); break; } if (ride->lifecycle_flags @@ -3976,7 +3978,7 @@ namespace OpenRCT2::Ui::Windows { frame_no++; OnPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_4); + InvalidateWidget(WIDX_TAB_4); auto ride = GetRide(rideId); if (ride != nullptr && ride->window_invalidate_flags & RIDE_INVALIDATE_RIDE_MAINTENANCE) @@ -4543,8 +4545,8 @@ namespace OpenRCT2::Ui::Windows { frame_no++; OnPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_5); - WidgetInvalidate(*this, WIDX_VEHICLE_PREVIEW); + InvalidateWidget(WIDX_TAB_5); + InvalidateWidget(WIDX_VEHICLE_PREVIEW); } void ColourOnToolDown(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) @@ -5116,7 +5118,7 @@ namespace OpenRCT2::Ui::Windows { frame_no++; OnPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_6); + InvalidateWidget(WIDX_TAB_6); if (auto ride = GetRide(rideId); ride != nullptr && ride->window_invalidate_flags & RIDE_INVALIDATE_RIDE_MUSIC) { @@ -5501,7 +5503,7 @@ namespace OpenRCT2::Ui::Windows { frame_no++; OnPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_7); + InvalidateWidget(WIDX_TAB_7); } void MeasurementsOnToolDown(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) @@ -5919,9 +5921,9 @@ namespace OpenRCT2::Ui::Windows frame_no++; OnPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_8); + InvalidateWidget(WIDX_TAB_8); OnPrepareDraw(); - WidgetInvalidate(*this, WIDX_GRAPH); + InvalidateWidget(WIDX_GRAPH); widget = &widgets[WIDX_GRAPH]; x = scrolls[0].contentOffsetX; @@ -6468,7 +6470,7 @@ namespace OpenRCT2::Ui::Windows { frame_no++; OnPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_9); + InvalidateWidget(WIDX_TAB_9); auto ride = GetRide(rideId); if (ride != nullptr && ride->window_invalidate_flags & RIDE_INVALIDATE_RIDE_INCOME) @@ -6768,7 +6770,7 @@ namespace OpenRCT2::Ui::Windows picked_peep_frame = 0; OnPrepareDraw(); - WidgetInvalidate(*this, WIDX_TAB_10); + InvalidateWidget(WIDX_TAB_10); auto ride = GetRide(rideId); if (ride != nullptr && ride->window_invalidate_flags & RIDE_INVALIDATE_RIDE_CUSTOMER) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 02502cf58d..1463e7f214 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -939,7 +939,7 @@ namespace OpenRCT2::Ui::Windows { if ((disabledWidgets & (1uLL << i)) != (currentDisabledWidgets & (1uLL << i))) { - WidgetInvalidate(*this, i); + InvalidateWidget(i); } } disabled_widgets = disabledWidgets; @@ -969,7 +969,7 @@ namespace OpenRCT2::Ui::Windows case TrackElemType::Whirlpool: case TrackElemType::Rapids: case TrackElemType::Waterfall: - WidgetInvalidate(*this, WIDX_CONSTRUCT); + InvalidateWidget(WIDX_CONSTRUCT); break; default: break; @@ -2578,20 +2578,21 @@ namespace OpenRCT2::Ui::Windows OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::PlaceItem, result->Position); + auto* windowMgr = GetWindowManager(); + auto currentRide = GetRide(gRideEntranceExitPlaceRideIndex); if (currentRide != nullptr && RideAreAllPossibleEntrancesAndExitsBuilt(*currentRide).Successful) { ToolCancel(); if (!currentRide->GetRideTypeDescriptor().HasFlag(RtdFlag::hasTrack)) { - auto* windowMgr = Ui::GetWindowManager(); windowMgr->CloseByClass(WindowClass::RideConstruction); } } else { gRideEntranceExitPlaceType = gRideEntranceExitPlaceType ^ 1; - WindowInvalidateByClass(WindowClass::RideConstruction); + windowMgr->InvalidateByClass(WindowClass::RideConstruction); auto newToolWidgetIndex = (gRideEntranceExitPlaceType == ENTRANCE_TYPE_RIDE_ENTRANCE) ? WC_RIDE_CONSTRUCTION__WIDX_ENTRANCE diff --git a/src/openrct2-ui/windows/RideList.cpp b/src/openrct2-ui/windows/RideList.cpp index eb85f76182..105a7aa6ab 100644 --- a/src/openrct2-ui/windows/RideList.cpp +++ b/src/openrct2-ui/windows/RideList.cpp @@ -375,7 +375,7 @@ namespace OpenRCT2::Ui::Windows void OnUpdate() override { frame_no = (frame_no + 1) % 64; - WidgetInvalidate(*this, WIDX_TAB_1 + page); + InvalidateWidget(WIDX_TAB_1 + page); if (_windowRideListInformationType != INFORMATION_TYPE_STATUS) Invalidate(); } diff --git a/src/openrct2-ui/windows/SavePrompt.cpp b/src/openrct2-ui/windows/SavePrompt.cpp index baef732056..396a4f0ef8 100644 --- a/src/openrct2-ui/windows/SavePrompt.cpp +++ b/src/openrct2-ui/windows/SavePrompt.cpp @@ -111,7 +111,8 @@ namespace OpenRCT2::Ui::Windows Audio::StopAll(); } - WindowInvalidateByClass(WindowClass::TopToolbar); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::TopToolbar); if (canSave) { @@ -138,7 +139,8 @@ namespace OpenRCT2::Ui::Windows Audio::Resume(); } - WindowInvalidateByClass(WindowClass::TopToolbar); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::TopToolbar); } void OnMouseUp(WidgetIndex widgetIndex) override diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index b3f3a5030e..083818359a 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -504,7 +504,7 @@ namespace OpenRCT2::Ui::Windows if (GetCurrentTextBox().window.classification == classification && GetCurrentTextBox().window.number == number) { WindowUpdateTextboxCaret(); - WidgetInvalidate(*this, WIDX_FILTER_TEXT_BOX); + InvalidateWidget(WIDX_FILTER_TEXT_BOX); } Invalidate(); @@ -1067,7 +1067,9 @@ namespace OpenRCT2::Ui::Windows _requiredWidth = std::min(static_cast(_tabEntries.size()), MaxTabsPerRow) * TabWidth + 5; PrepareWidgets(); - WindowInvalidateByClass(WindowClass::Scenery); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Scenery); } int32_t GetRequiredWidth() const diff --git a/src/openrct2-ui/windows/ServerStart.cpp b/src/openrct2-ui/windows/ServerStart.cpp index 05dad60489..1cbccf0d18 100644 --- a/src/openrct2-ui/windows/ServerStart.cpp +++ b/src/openrct2-ui/windows/ServerStart.cpp @@ -158,10 +158,10 @@ namespace OpenRCT2::Ui::Windows if (GetCurrentTextBox().window.classification == classification && GetCurrentTextBox().window.number == number) { WindowUpdateTextboxCaret(); - WidgetInvalidate(*this, WIDX_NAME_INPUT); - WidgetInvalidate(*this, WIDX_DESCRIPTION_INPUT); - WidgetInvalidate(*this, WIDX_GREETING_INPUT); - WidgetInvalidate(*this, WIDX_PASSWORD_INPUT); + InvalidateWidget(WIDX_NAME_INPUT); + InvalidateWidget(WIDX_DESCRIPTION_INPUT); + InvalidateWidget(WIDX_GREETING_INPUT); + InvalidateWidget(WIDX_PASSWORD_INPUT); } } void OnTextInput(WidgetIndex widgetIndex, std::string_view text) override @@ -185,7 +185,7 @@ namespace OpenRCT2::Ui::Windows Config::Save(); } - WidgetInvalidate(*this, WIDX_PORT_INPUT); + InvalidateWidget(WIDX_PORT_INPUT); break; case WIDX_NAME_INPUT: if (strcmp(_name, temp.c_str()) == 0) @@ -200,7 +200,7 @@ namespace OpenRCT2::Ui::Windows Config::Save(); } - WidgetInvalidate(*this, WIDX_NAME_INPUT); + InvalidateWidget(WIDX_NAME_INPUT); break; case WIDX_DESCRIPTION_INPUT: if (strcmp(_description, temp.c_str()) == 0) @@ -210,7 +210,7 @@ namespace OpenRCT2::Ui::Windows Config::Get().network.ServerDescription = _description; Config::Save(); - WidgetInvalidate(*this, WIDX_DESCRIPTION_INPUT); + InvalidateWidget(WIDX_DESCRIPTION_INPUT); break; case WIDX_GREETING_INPUT: if (strcmp(_greeting, temp.c_str()) == 0) @@ -220,7 +220,7 @@ namespace OpenRCT2::Ui::Windows Config::Get().network.ServerGreeting = _greeting; Config::Save(); - WidgetInvalidate(*this, WIDX_GREETING_INPUT); + InvalidateWidget(WIDX_GREETING_INPUT); break; case WIDX_PASSWORD_INPUT: if (strcmp(_password, temp.c_str()) == 0) @@ -228,7 +228,7 @@ namespace OpenRCT2::Ui::Windows String::safeUtf8Copy(_password, temp.c_str(), sizeof(_password)); - WidgetInvalidate(*this, WIDX_PASSWORD_INPUT); + InvalidateWidget(WIDX_PASSWORD_INPUT); break; } } diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index 3b3eb85b1b..1ad741e9ec 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -373,7 +373,7 @@ namespace OpenRCT2::Ui::Windows if (frame_no >= window_themes_tab_animation_loops[_selected_tab]) frame_no = 0; - WidgetInvalidate(*this, WIDX_THEMES_SETTINGS_TAB + _selected_tab); + InvalidateWidget(WIDX_THEMES_SETTINGS_TAB + _selected_tab); } void OnPrepareDraw() override @@ -485,9 +485,8 @@ namespace OpenRCT2::Ui::Windows void OnMouseDown(WidgetIndex widgetIndex) override { - int16_t newSelectedTab; - int32_t num_items; auto widget = &widgets[widgetIndex]; + auto* windowMgr = Ui::GetWindowManager(); switch (widgetIndex) { @@ -500,7 +499,8 @@ namespace OpenRCT2::Ui::Windows case WIDX_THEMES_MISC_TAB: case WIDX_THEMES_PROMPTS_TAB: case WIDX_THEMES_FEATURES_TAB: - newSelectedTab = widgetIndex - WIDX_THEMES_SETTINGS_TAB; + { + auto newSelectedTab = widgetIndex - WIDX_THEMES_SETTINGS_TAB; if (_selected_tab == newSelectedTab) break; _selected_tab = static_cast(newSelectedTab); @@ -509,9 +509,11 @@ namespace OpenRCT2::Ui::Windows OnResize(); Invalidate(); break; + } case WIDX_THEMES_PRESETS_DROPDOWN: + { ThemeManagerLoadAvailableThemes(); - num_items = static_cast(ThemeManagerGetNumAvailableThemes()); + auto num_items = static_cast(ThemeManagerGetNumAvailableThemes()); widget--; for (int32_t i = 0; i < num_items; i++) @@ -526,6 +528,7 @@ namespace OpenRCT2::Ui::Windows Dropdown::SetChecked(static_cast(ThemeManagerGetAvailableThemeIndex()), true); break; + } case WIDX_THEMES_RCT1_RIDE_LIGHTS: if (ThemeGetFlags() & UITHEME_FLAG_PREDEFINED) { @@ -535,7 +538,7 @@ namespace OpenRCT2::Ui::Windows { ThemeSetFlags(ThemeGetFlags() ^ UITHEME_FLAG_USE_LIGHTS_RIDE); ThemeSave(); - WindowInvalidateAll(); + windowMgr->InvalidateAll(); } break; case WIDX_THEMES_RCT1_PARK_LIGHTS: @@ -547,7 +550,7 @@ namespace OpenRCT2::Ui::Windows { ThemeSetFlags(ThemeGetFlags() ^ static_cast(UITHEME_FLAG_USE_LIGHTS_PARK)); ThemeSave(); - WindowInvalidateAll(); + windowMgr->InvalidateAll(); } break; case WIDX_THEMES_RCT1_SCENARIO_FONT: @@ -560,7 +563,7 @@ namespace OpenRCT2::Ui::Windows ThemeSetFlags( ThemeGetFlags() ^ static_cast(UITHEME_FLAG_USE_ALTERNATIVE_SCENARIO_SELECT_FONT)); ThemeSave(); - WindowInvalidateAll(); + windowMgr->InvalidateAll(); } break; case WIDX_THEMES_RCT1_BOTTOM_TOOLBAR: @@ -572,7 +575,7 @@ namespace OpenRCT2::Ui::Windows { ThemeSetFlags(ThemeGetFlags() ^ static_cast(UITHEME_FLAG_USE_FULL_BOTTOM_TOOLBAR)); ThemeSave(); - WindowInvalidateAll(); + windowMgr->InvalidateAll(); } } } @@ -634,7 +637,10 @@ namespace OpenRCT2::Ui::Windows newColour.flags = oldColour.flags; ThemeSetColour(wc, _buttonIndex, newColour); ColourSchemeUpdateAll(); - WindowInvalidateAll(); + + auto* windowMgr = GetWindowManager(); + windowMgr->InvalidateAll(); + _classIndex = -1; _buttonIndex = -1; } @@ -740,7 +746,7 @@ namespace OpenRCT2::Ui::Windows auto colour = ThemeGetColour(wc, _buttonIndex); WindowDropdownShowColour( this, &(widgets[WIDX_THEMES_COLOURBTN_MASK]), colours[1], colour.colour, true); - WidgetInvalidate(*this, WIDX_THEMES_LIST); + InvalidateWidget(WIDX_THEMES_LIST); } } else if ( @@ -757,7 +763,9 @@ namespace OpenRCT2::Ui::Windows colour.setFlag(ColourFlag::translucent, !colour.hasFlag(ColourFlag::translucent)); ThemeSetColour(wc, _buttonIndex, colour); ColourSchemeUpdateAll(); - WindowInvalidateAll(); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateAll(); } } } diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 313fa8f570..e1093a5b11 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -235,7 +235,7 @@ namespace OpenRCT2::Ui::Windows if (cost != _placementCost) { _placementCost = cost; - WidgetInvalidate(*this, WIDX_PRICE); + InvalidateWidget(WIDX_PRICE); } TrackDesignPreviewDrawOutlines(tds, *_trackDesign, RideGetTemporaryForPreview(), trackLoc); diff --git a/src/openrct2-ui/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp index 3c6fecf0df..0355315b07 100644 --- a/src/openrct2-ui/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -437,7 +437,7 @@ namespace OpenRCT2::Ui::Windows if (GetCurrentTextBox().window.classification == classification && GetCurrentTextBox().window.number == number) { WindowUpdateTextboxCaret(); - WidgetInvalidate(*this, WIDX_FILTER_STRING); // TODO Check this + InvalidateWidget(WIDX_FILTER_STRING); // TODO Check this } if (_reloadTrackDesigns) diff --git a/src/openrct2-ui/windows/ViewClipping.cpp b/src/openrct2-ui/windows/ViewClipping.cpp index 8965a2828f..f9609835f3 100644 --- a/src/openrct2-ui/windows/ViewClipping.cpp +++ b/src/openrct2-ui/windows/ViewClipping.cpp @@ -190,7 +190,7 @@ namespace OpenRCT2::Ui::Windows gClipSelectionB = _previousClipSelectionB; } - WidgetInvalidate(*this, WIDX_CLIP_HEIGHT_SLIDER); + InvalidateWidget(WIDX_CLIP_HEIGHT_SLIDER); } void OnToolUpdate(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override diff --git a/src/openrct2-ui/windows/Water.cpp b/src/openrct2-ui/windows/Water.cpp index 74eb06e914..cc386253ef 100644 --- a/src/openrct2-ui/windows/Water.cpp +++ b/src/openrct2-ui/windows/Water.cpp @@ -299,6 +299,8 @@ namespace OpenRCT2::Ui::Windows { MapInvalidateSelectionRect(); + auto* windowMgr = Ui::GetWindowManager(); + if (gCurrentToolId == Tool::UpDownArrow) { if (!(gMapSelectFlags & MAP_SELECT_FLAG_ENABLE)) @@ -319,7 +321,7 @@ namespace OpenRCT2::Ui::Windows { _waterToolRaiseCost = raiseCost; _waterToolLowerCost = lowerCost; - WindowInvalidateByClass(WindowClass::Water); + windowMgr->InvalidateByClass(WindowClass::Water); } return; } @@ -335,7 +337,7 @@ namespace OpenRCT2::Ui::Windows { _waterToolRaiseCost = kMoney64Undefined; _waterToolLowerCost = kMoney64Undefined; - WindowInvalidateByClass(WindowClass::Water); + windowMgr->InvalidateByClass(WindowClass::Water); } return; } @@ -410,7 +412,7 @@ namespace OpenRCT2::Ui::Windows { _waterToolRaiseCost = raiseCost; _waterToolLowerCost = lowerCost; - WindowInvalidateByClass(WindowClass::Water); + windowMgr->InvalidateByClass(WindowClass::Water); } } diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 8238ffb749..dabefb82f9 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -686,7 +686,8 @@ namespace OpenRCT2 if (!gOpenRCT2Headless && isMainThread) { _uiContext->ProcessMessages(); - WindowInvalidateByClass(WindowClass::ProgressWindow); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::ProgressWindow); Draw(); } } diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index 031241aab1..47b2918d01 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -39,7 +39,6 @@ #include "peep/PeepAnimations.h" #include "rct1/RCT1.h" #include "scenario/Scenario.h" -#include "ui/UiContext.h" #include "ui/WindowManager.h" #include "windows/Intent.h" #include "world/Climate.h" diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp index dd075a1ecb..edbb709c97 100644 --- a/src/openrct2/Game.cpp +++ b/src/openrct2/Game.cpp @@ -140,7 +140,10 @@ void GameCreateWindows() void PauseToggle() { gGamePaused ^= GAME_PAUSED_NORMAL; - WindowInvalidateByClass(WindowClass::TopToolbar); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::TopToolbar); + if (gGamePaused & GAME_PAUSED_NORMAL) { OpenRCT2::Audio::StopAll(); diff --git a/src/openrct2/actions/BannerSetNameAction.cpp b/src/openrct2/actions/BannerSetNameAction.cpp index 9192894f45..1ab6bb6889 100644 --- a/src/openrct2/actions/BannerSetNameAction.cpp +++ b/src/openrct2/actions/BannerSetNameAction.cpp @@ -14,7 +14,6 @@ #include "../core/String.hpp" #include "../drawing/Drawing.h" #include "../localisation/StringIds.h" -#include "../ui/UiContext.h" #include "../windows/Intent.h" #include "../world/Banner.h" #include "../world/tile_element/BannerElement.h" diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index c9ace81682..ed8b6a07d2 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -27,7 +27,7 @@ #include "../ride/RideManager.hpp" #include "../ride/Vehicle.h" #include "../scenario/Scenario.h" -#include "../ui/UiContext.h" +#include "../ui/WindowManager.h" #include "../util/Util.h" #include "../windows/Intent.h" #include "../world/Banner.h" @@ -106,17 +106,19 @@ GameActions::Result CheatSetAction::Query() const GameActions::Result CheatSetAction::Execute() const { auto& gameState = GetGameState(); + auto* windowMgr = Ui::GetWindowManager(); + switch (static_cast(_cheatType.id)) { case CheatType::SandboxMode: gameState.Cheats.sandboxMode = _param1 != 0; - WindowInvalidateByClass(WindowClass::Map); - WindowInvalidateByClass(WindowClass::Footpath); + windowMgr->InvalidateByClass(WindowClass::Map); + windowMgr->InvalidateByClass(WindowClass::Footpath); break; case CheatType::DisableClearanceChecks: gameState.Cheats.disableClearanceChecks = _param1 != 0; // Required to update the clearance checks overlay on the Cheats button. - WindowInvalidateByClass(WindowClass::TopToolbar); + windowMgr->InvalidateByClass(WindowClass::TopToolbar); break; case CheatType::DisableSupportLimits: gameState.Cheats.disableSupportLimits = _param1 != 0; @@ -204,7 +206,7 @@ GameActions::Result CheatSetAction::Execute() const break; case CheatType::MakeDestructible: gameState.Cheats.makeAllDestructible = _param1 != 0; - WindowInvalidateByClass(WindowClass::Ride); + windowMgr->InvalidateByClass(WindowClass::Ride); break; case CheatType::FixRides: FixBrokenRides(); @@ -239,7 +241,7 @@ GameActions::Result CheatSetAction::Execute() const break; case CheatType::AllowArbitraryRideTypeChanges: gameState.Cheats.allowArbitraryRideTypeChanges = _param1 != 0; - WindowInvalidateByClass(WindowClass::Ride); + windowMgr->InvalidateByClass(WindowClass::Ride); break; case CheatType::OwnAllLand: OwnAllLand(); @@ -284,7 +286,7 @@ GameActions::Result CheatSetAction::Execute() const Config::Save(); } - WindowInvalidateByClass(WindowClass::Cheats); + windowMgr->InvalidateByClass(WindowClass::Cheats); return GameActions::Result(); } @@ -551,7 +553,8 @@ void CheatSetAction::RenewRides() const { ride.Renew(); } - WindowInvalidateByClass(WindowClass::Ride); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Ride); } void CheatSetAction::ResetRideCrashStatus() const @@ -562,7 +565,8 @@ void CheatSetAction::ResetRideCrashStatus() const ride.lifecycle_flags &= ~RIDE_LIFECYCLE_CRASHED; ride.last_crash_type = RIDE_CRASH_TYPE_NONE; } - WindowInvalidateByClass(WindowClass::Ride); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Ride); } void CheatSetAction::Set10MinuteInspection() const @@ -572,7 +576,8 @@ void CheatSetAction::Set10MinuteInspection() const // Set inspection interval to 10 minutes ride.inspection_interval = RIDE_INSPECTION_EVERY_10_MINUTES; } - WindowInvalidateByClass(WindowClass::Ride); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Ride); } void CheatSetAction::SetScenarioNoMoney(bool enabled) const @@ -588,21 +593,23 @@ void CheatSetAction::SetScenarioNoMoney(bool enabled) const } // Invalidate all windows that have anything to do with finance - WindowInvalidateByClass(WindowClass::Ride); - WindowInvalidateByClass(WindowClass::Peep); - WindowInvalidateByClass(WindowClass::ParkInformation); - WindowInvalidateByClass(WindowClass::Finances); - WindowInvalidateByClass(WindowClass::BottomToolbar); - WindowInvalidateByClass(WindowClass::TopToolbar); - WindowInvalidateByClass(WindowClass::Cheats); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Ride); + windowMgr->InvalidateByClass(WindowClass::Peep); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); + windowMgr->InvalidateByClass(WindowClass::Finances); + windowMgr->InvalidateByClass(WindowClass::BottomToolbar); + windowMgr->InvalidateByClass(WindowClass::TopToolbar); + windowMgr->InvalidateByClass(WindowClass::Cheats); } void CheatSetAction::SetMoney(money64 amount) const { GetGameState().Cash = amount; - WindowInvalidateByClass(WindowClass::Finances); - WindowInvalidateByClass(WindowClass::BottomToolbar); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Finances); + windowMgr->InvalidateByClass(WindowClass::BottomToolbar); } void CheatSetAction::AddMoney(money64 amount) const @@ -610,8 +617,9 @@ void CheatSetAction::AddMoney(money64 amount) const auto& gameState = GetGameState(); gameState.Cash = AddClamp(gameState.Cash, amount); - WindowInvalidateByClass(WindowClass::Finances); - WindowInvalidateByClass(WindowClass::BottomToolbar); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Finances); + windowMgr->InvalidateByClass(WindowClass::BottomToolbar); } void CheatSetAction::ClearLoan() const @@ -630,7 +638,9 @@ void CheatSetAction::GenerateGuests(int32_t count) const { Park::GenerateGuest(); } - WindowInvalidateByClass(WindowClass::BottomToolbar); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::BottomToolbar); } void CheatSetAction::SetGuestParameter(int32_t parameter, int32_t value) const @@ -701,7 +711,9 @@ void CheatSetAction::GiveObjectToGuests(int32_t object) const break; } } - WindowInvalidateByClass(WindowClass::Peep); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Peep); } void CheatSetAction::RemoveAllGuests() const @@ -753,7 +765,8 @@ void CheatSetAction::RemoveAllGuests() const guest->Remove(); } - WindowInvalidateByClass(WindowClass::Ride); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Ride); GfxInvalidateScreen(); } diff --git a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp index 062be3aea1..2ffa29ea4b 100644 --- a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp +++ b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp @@ -14,7 +14,6 @@ #include "../GameState.h" #include "../OpenRCT2.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../object/ObjectEntryManager.h" diff --git a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp index 7f8c5e3554..5f535602bd 100644 --- a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp +++ b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp @@ -14,7 +14,6 @@ #include "../GameState.h" #include "../OpenRCT2.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../world/Footpath.h" diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp index fe26a9f25a..39e39116bf 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp @@ -13,7 +13,6 @@ #include "../GameState.h" #include "../OpenRCT2.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../ride/RideConstruction.h" diff --git a/src/openrct2/actions/FootpathPlaceAction.cpp b/src/openrct2/actions/FootpathPlaceAction.cpp index 0d39c07b49..24deb95fbc 100644 --- a/src/openrct2/actions/FootpathPlaceAction.cpp +++ b/src/openrct2/actions/FootpathPlaceAction.cpp @@ -15,7 +15,6 @@ #include "../GameState.h" #include "../OpenRCT2.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../object/PathAdditionEntry.h" diff --git a/src/openrct2/actions/FootpathRemoveAction.cpp b/src/openrct2/actions/FootpathRemoveAction.cpp index 61e2ccc316..3b27978224 100644 --- a/src/openrct2/actions/FootpathRemoveAction.cpp +++ b/src/openrct2/actions/FootpathRemoveAction.cpp @@ -13,7 +13,6 @@ #include "../GameState.h" #include "../OpenRCT2.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../world/Footpath.h" diff --git a/src/openrct2/actions/GameAction.cpp b/src/openrct2/actions/GameAction.cpp index 37dc1a304d..b81b37ff75 100644 --- a/src/openrct2/actions/GameAction.cpp +++ b/src/openrct2/actions/GameAction.cpp @@ -25,7 +25,6 @@ #include "../scripting/Duktape.hpp" #include "../scripting/HookEngine.h" #include "../scripting/ScriptEngine.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../world/Park.h" #include "../world/Scenery.h" diff --git a/src/openrct2/actions/GameSetSpeedAction.cpp b/src/openrct2/actions/GameSetSpeedAction.cpp index 6d4ee092d2..abf729a7fd 100644 --- a/src/openrct2/actions/GameSetSpeedAction.cpp +++ b/src/openrct2/actions/GameSetSpeedAction.cpp @@ -11,7 +11,7 @@ #include "../Diagnostic.h" #include "../config/Config.h" -#include "../interface/Window.h" +#include "../ui/WindowManager.h" using namespace OpenRCT2; @@ -63,7 +63,9 @@ GameActions::Result GameSetSpeedAction::Execute() const } gGameSpeed = _speed; - WindowInvalidateByClass(WindowClass::TopToolbar); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::TopToolbar); return res; } diff --git a/src/openrct2/actions/GuestSetNameAction.cpp b/src/openrct2/actions/GuestSetNameAction.cpp index 665c38970b..2d08cdffed 100644 --- a/src/openrct2/actions/GuestSetNameAction.cpp +++ b/src/openrct2/actions/GuestSetNameAction.cpp @@ -15,7 +15,6 @@ #include "../core/MemoryStream.h" #include "../drawing/Drawing.h" #include "../entity/EntityRegistry.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../windows/Intent.h" #include "../world/Park.h" diff --git a/src/openrct2/actions/LandBuyRightsAction.cpp b/src/openrct2/actions/LandBuyRightsAction.cpp index 203a2bb13d..a155fb3728 100644 --- a/src/openrct2/actions/LandBuyRightsAction.cpp +++ b/src/openrct2/actions/LandBuyRightsAction.cpp @@ -16,7 +16,6 @@ #include "../actions/LandSetHeightAction.h" #include "../audio/audio.h" #include "../core/EnumUtils.hpp" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../ride/RideData.h" diff --git a/src/openrct2/actions/LandLowerAction.cpp b/src/openrct2/actions/LandLowerAction.cpp index 6d7797b92c..d28fca2a44 100644 --- a/src/openrct2/actions/LandLowerAction.cpp +++ b/src/openrct2/actions/LandLowerAction.cpp @@ -14,7 +14,6 @@ #include "../OpenRCT2.h" #include "../actions/LandSetHeightAction.h" #include "../audio/audio.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../ride/RideConstruction.h" diff --git a/src/openrct2/actions/LandRaiseAction.cpp b/src/openrct2/actions/LandRaiseAction.cpp index 161b4ce732..401d777ca9 100644 --- a/src/openrct2/actions/LandRaiseAction.cpp +++ b/src/openrct2/actions/LandRaiseAction.cpp @@ -15,7 +15,6 @@ #include "../OpenRCT2.h" #include "../actions/LandSetHeightAction.h" #include "../audio/audio.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../ride/RideConstruction.h" diff --git a/src/openrct2/actions/LandSetHeightAction.cpp b/src/openrct2/actions/LandSetHeightAction.cpp index 7481e4bec4..a6c77d596a 100644 --- a/src/openrct2/actions/LandSetHeightAction.cpp +++ b/src/openrct2/actions/LandSetHeightAction.cpp @@ -12,7 +12,6 @@ #include "../Context.h" #include "../GameState.h" #include "../OpenRCT2.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../object/SmallSceneryEntry.h" diff --git a/src/openrct2/actions/LandSetRightsAction.cpp b/src/openrct2/actions/LandSetRightsAction.cpp index a95a3d0574..9fbcf6211f 100644 --- a/src/openrct2/actions/LandSetRightsAction.cpp +++ b/src/openrct2/actions/LandSetRightsAction.cpp @@ -16,7 +16,6 @@ #include "../actions/LandSetHeightAction.h" #include "../audio/audio.h" #include "../core/Numerics.hpp" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../ride/RideData.h" diff --git a/src/openrct2/actions/LandSmoothAction.cpp b/src/openrct2/actions/LandSmoothAction.cpp index 2addb0150e..d7c8f53a2b 100644 --- a/src/openrct2/actions/LandSmoothAction.cpp +++ b/src/openrct2/actions/LandSmoothAction.cpp @@ -16,7 +16,6 @@ #include "../actions/LandRaiseAction.h" #include "../actions/LandSetHeightAction.h" #include "../audio/audio.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../ride/RideData.h" diff --git a/src/openrct2/actions/LargeSceneryRemoveAction.cpp b/src/openrct2/actions/LargeSceneryRemoveAction.cpp index e21cc0abbe..772208f532 100644 --- a/src/openrct2/actions/LargeSceneryRemoveAction.cpp +++ b/src/openrct2/actions/LargeSceneryRemoveAction.cpp @@ -14,7 +14,6 @@ #include "../GameState.h" #include "../OpenRCT2.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../object/LargeSceneryEntry.h" diff --git a/src/openrct2/actions/MazeSetTrackAction.cpp b/src/openrct2/actions/MazeSetTrackAction.cpp index 4406e15288..883698907f 100644 --- a/src/openrct2/actions/MazeSetTrackAction.cpp +++ b/src/openrct2/actions/MazeSetTrackAction.cpp @@ -13,7 +13,6 @@ #include "../Diagnostic.h" #include "../GameState.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../ride/MazeCost.h" diff --git a/src/openrct2/actions/ParkMarketingAction.cpp b/src/openrct2/actions/ParkMarketingAction.cpp index a3fbede755..c538da0f8a 100644 --- a/src/openrct2/actions/ParkMarketingAction.cpp +++ b/src/openrct2/actions/ParkMarketingAction.cpp @@ -15,7 +15,6 @@ #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../management/Marketing.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../windows/Intent.h" #include "../world/Park.h" diff --git a/src/openrct2/actions/ParkSetDateAction.cpp b/src/openrct2/actions/ParkSetDateAction.cpp index 4a68e64675..3068aa2d0e 100644 --- a/src/openrct2/actions/ParkSetDateAction.cpp +++ b/src/openrct2/actions/ParkSetDateAction.cpp @@ -15,7 +15,6 @@ #include "../core/MemoryStream.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../windows/Intent.h" diff --git a/src/openrct2/actions/ParkSetEntranceFeeAction.cpp b/src/openrct2/actions/ParkSetEntranceFeeAction.cpp index f388b31ed2..f58bc951ee 100644 --- a/src/openrct2/actions/ParkSetEntranceFeeAction.cpp +++ b/src/openrct2/actions/ParkSetEntranceFeeAction.cpp @@ -13,8 +13,8 @@ #include "../Diagnostic.h" #include "../GameState.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" +#include "../ui/WindowManager.h" #include "../world/Park.h" using namespace OpenRCT2; @@ -66,6 +66,9 @@ GameActions::Result ParkSetEntranceFeeAction::Query() const GameActions::Result ParkSetEntranceFeeAction::Execute() const { GetGameState().Park.EntranceFee = _fee; - WindowInvalidateByClass(WindowClass::ParkInformation); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); + return GameActions::Result(); } diff --git a/src/openrct2/actions/ParkSetLoanAction.cpp b/src/openrct2/actions/ParkSetLoanAction.cpp index 75ea2d3a71..318e6dba2b 100644 --- a/src/openrct2/actions/ParkSetLoanAction.cpp +++ b/src/openrct2/actions/ParkSetLoanAction.cpp @@ -14,7 +14,6 @@ #include "../core/MemoryStream.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../windows/Intent.h" diff --git a/src/openrct2/actions/ParkSetNameAction.cpp b/src/openrct2/actions/ParkSetNameAction.cpp index 94596aef3d..c7c3f8c2d8 100644 --- a/src/openrct2/actions/ParkSetNameAction.cpp +++ b/src/openrct2/actions/ParkSetNameAction.cpp @@ -16,7 +16,6 @@ #include "../drawing/Drawing.h" #include "../management/Finance.h" #include "../network/network.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../windows/Intent.h" #include "../world/Park.h" diff --git a/src/openrct2/actions/ParkSetParameterAction.cpp b/src/openrct2/actions/ParkSetParameterAction.cpp index ac6f34ec0e..8aa547a543 100644 --- a/src/openrct2/actions/ParkSetParameterAction.cpp +++ b/src/openrct2/actions/ParkSetParameterAction.cpp @@ -12,8 +12,8 @@ #include "../Diagnostic.h" #include "../GameState.h" #include "../core/EnumUtils.hpp" -#include "../interface/Window.h" #include "../ride/ShopItem.h" +#include "../ui/WindowManager.h" #include "../world/Park.h" using namespace OpenRCT2; @@ -58,25 +58,27 @@ GameActions::Result ParkSetParameterAction::Query() const GameActions::Result ParkSetParameterAction::Execute() const { auto& gameState = GetGameState(); + auto* windowMgr = Ui::GetWindowManager(); + switch (_parameter) { case ParkParameter::Close: if (gameState.Park.Flags & PARK_FLAGS_PARK_OPEN) { gameState.Park.Flags &= ~PARK_FLAGS_PARK_OPEN; - WindowInvalidateByClass(WindowClass::ParkInformation); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); } break; case ParkParameter::Open: if (!(gameState.Park.Flags & PARK_FLAGS_PARK_OPEN)) { gameState.Park.Flags |= PARK_FLAGS_PARK_OPEN; - WindowInvalidateByClass(WindowClass::ParkInformation); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); } break; case ParkParameter::SamePriceInPark: gameState.SamePriceThroughoutPark = _value; - WindowInvalidateByClass(WindowClass::Ride); + windowMgr->InvalidateByClass(WindowClass::Ride); break; default: LOG_ERROR("Invalid park parameter %d", _parameter); diff --git a/src/openrct2/actions/ParkSetResearchFundingAction.cpp b/src/openrct2/actions/ParkSetResearchFundingAction.cpp index 2539fd7c12..56af4e1be1 100644 --- a/src/openrct2/actions/ParkSetResearchFundingAction.cpp +++ b/src/openrct2/actions/ParkSetResearchFundingAction.cpp @@ -15,7 +15,6 @@ #include "../core/MemoryStream.h" #include "../localisation/StringIds.h" #include "../management/Research.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../windows/Intent.h" diff --git a/src/openrct2/actions/RideCreateAction.cpp b/src/openrct2/actions/RideCreateAction.cpp index a6e9d4c669..69f156f454 100644 --- a/src/openrct2/actions/RideCreateAction.cpp +++ b/src/openrct2/actions/RideCreateAction.cpp @@ -15,7 +15,6 @@ #include "../GameState.h" #include "../core/Memory.hpp" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/Localisation.Date.h" #include "../localisation/StringIds.h" #include "../object/ObjectLimits.h" @@ -26,6 +25,7 @@ #include "../ride/ShopItem.h" #include "../ride/Station.h" #include "../scenario/Scenario.h" +#include "../ui/WindowManager.h" #include "../world/Park.h" #include @@ -296,7 +296,9 @@ GameActions::Result RideCreateAction::Execute() const ride->MinCarsPerTrain = rideEntry->min_cars_in_train; ride->MaxCarsPerTrain = rideEntry->max_cars_in_train; RideSetVehicleColoursToRandomPreset(*ride, _colour2); - WindowInvalidateByClass(WindowClass::RideList); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::RideList); res.Expenditure = ExpenditureType::RideConstruction; res.SetData(RideId{ rideIndex }); diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index 0ae10ba259..14c6debf58 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -16,12 +16,10 @@ #include "../core/MemoryStream.h" #include "../drawing/Drawing.h" #include "../entity/EntityList.h" -#include "../interface/Window.h" #include "../management/NewsItem.h" #include "../peep/RideUseSystem.h" #include "../ride/Ride.h" #include "../ride/RideData.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../world/Banner.h" #include "../world/Park.h" diff --git a/src/openrct2/actions/RideFreezeRatingAction.cpp b/src/openrct2/actions/RideFreezeRatingAction.cpp index d714e078ee..6e4bf30b29 100644 --- a/src/openrct2/actions/RideFreezeRatingAction.cpp +++ b/src/openrct2/actions/RideFreezeRatingAction.cpp @@ -10,7 +10,7 @@ #include "RideFreezeRatingAction.h" #include "../Diagnostic.h" -#include "../interface/Window.h" +#include "../ui/WindowManager.h" using namespace OpenRCT2; @@ -72,7 +72,8 @@ GameActions::Result RideFreezeRatingAction::Execute() const ride->lifecycle_flags |= RIDE_LIFECYCLE_FIXED_RATINGS; - WindowInvalidateByNumber(WindowClass::Ride, _rideIndex.ToUnderlying()); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Ride, _rideIndex.ToUnderlying()); auto res = GameActions::Result(); return res; diff --git a/src/openrct2/actions/RideSetAppearanceAction.cpp b/src/openrct2/actions/RideSetAppearanceAction.cpp index dcda4637fd..4fa37e25a3 100644 --- a/src/openrct2/actions/RideSetAppearanceAction.cpp +++ b/src/openrct2/actions/RideSetAppearanceAction.cpp @@ -14,10 +14,8 @@ #include "../Diagnostic.h" #include "../core/MemoryStream.h" #include "../drawing/Drawing.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../ride/Ride.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../world/Park.h" @@ -145,7 +143,9 @@ GameActions::Result RideSetAppearanceAction::Execute() const ride->SetLifecycleFlag(RIDE_LIFECYCLE_RANDOM_SHOP_COLOURS, static_cast(_value)); break; } - WindowInvalidateByNumber(WindowClass::Ride, _rideIndex.ToUnderlying()); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Ride, _rideIndex.ToUnderlying()); auto res = GameActions::Result(); if (!ride->overall_view.IsNull()) diff --git a/src/openrct2/actions/RideSetColourSchemeAction.cpp b/src/openrct2/actions/RideSetColourSchemeAction.cpp index 4f8bdb478f..67bd91a9e7 100644 --- a/src/openrct2/actions/RideSetColourSchemeAction.cpp +++ b/src/openrct2/actions/RideSetColourSchemeAction.cpp @@ -11,7 +11,6 @@ #include "../Cheats.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../ride/Ride.h" diff --git a/src/openrct2/actions/RideSetNameAction.cpp b/src/openrct2/actions/RideSetNameAction.cpp index 1709bcb776..eab6a2fdd8 100644 --- a/src/openrct2/actions/RideSetNameAction.cpp +++ b/src/openrct2/actions/RideSetNameAction.cpp @@ -14,10 +14,8 @@ #include "../Diagnostic.h" #include "../core/MemoryStream.h" #include "../drawing/Drawing.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../ride/Ride.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../world/Park.h" diff --git a/src/openrct2/actions/RideSetPriceAction.cpp b/src/openrct2/actions/RideSetPriceAction.cpp index f294c373d6..e6d96827ae 100644 --- a/src/openrct2/actions/RideSetPriceAction.cpp +++ b/src/openrct2/actions/RideSetPriceAction.cpp @@ -12,13 +12,13 @@ #include "../Cheats.h" #include "../Diagnostic.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../ride/Ride.h" #include "../ride/RideData.h" #include "../ride/RideManager.hpp" #include "../ride/ShopItem.h" +#include "../ui/WindowManager.h" #include "../world/Park.h" using namespace OpenRCT2; @@ -107,6 +107,8 @@ GameActions::Result RideSetPriceAction::Execute() const res.Position = { location, TileElementHeight(location) }; } + auto* windowMgr = Ui::GetWindowManager(); + ShopItem shopItem; if (_primaryPrice) { @@ -119,7 +121,7 @@ GameActions::Result RideSetPriceAction::Execute() const if (shopItem == ShopItem::None) { ride->price[0] = _price; - WindowInvalidateByClass(WindowClass::Ride); + windowMgr->InvalidateByClass(WindowClass::Ride); return res; } } @@ -127,7 +129,7 @@ GameActions::Result RideSetPriceAction::Execute() const if (!ShopItemHasCommonPrice(shopItem)) { ride->price[0] = _price; - WindowInvalidateByClass(WindowClass::Ride); + windowMgr->InvalidateByClass(WindowClass::Ride); return res; } } @@ -140,7 +142,7 @@ GameActions::Result RideSetPriceAction::Execute() const if ((ride->lifecycle_flags & RIDE_LIFECYCLE_ON_RIDE_PHOTO) == 0) { ride->price[1] = _price; - WindowInvalidateByClass(WindowClass::Ride); + windowMgr->InvalidateByClass(WindowClass::Ride); return res; } } @@ -148,7 +150,7 @@ GameActions::Result RideSetPriceAction::Execute() const if (!ShopItemHasCommonPrice(shopItem)) { ride->price[1] = _price; - WindowInvalidateByClass(WindowClass::Ride); + windowMgr->InvalidateByClass(WindowClass::Ride); return res; } } @@ -197,7 +199,8 @@ void RideSetPriceAction::RideSetCommonPrice(ShopItem shopItem) const } if (invalidate) { - WindowInvalidateByNumber(WindowClass::Ride, ride.id.ToUnderlying()); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Ride, ride.id.ToUnderlying()); } } } diff --git a/src/openrct2/actions/RideSetSettingAction.cpp b/src/openrct2/actions/RideSetSettingAction.cpp index ba49af931d..3e03fa1f40 100644 --- a/src/openrct2/actions/RideSetSettingAction.cpp +++ b/src/openrct2/actions/RideSetSettingAction.cpp @@ -12,10 +12,10 @@ #include "../Context.h" #include "../Diagnostic.h" #include "../GameState.h" -#include "../interface/Window.h" #include "../object/ObjectManager.h" #include "../ride/Ride.h" #include "../ride/RideData.h" +#include "../ui/WindowManager.h" using namespace OpenRCT2; @@ -251,7 +251,8 @@ GameActions::Result RideSetSettingAction::Execute() const auto location = ride->overall_view.ToTileCentre(); res.Position = { location, TileElementHeight(location) }; } - WindowInvalidateByNumber(WindowClass::Ride, _rideIndex.ToUnderlying()); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Ride, _rideIndex.ToUnderlying()); return res; } diff --git a/src/openrct2/actions/RideSetStatusAction.cpp b/src/openrct2/actions/RideSetStatusAction.cpp index d6a0fb927d..15d3f5520e 100644 --- a/src/openrct2/actions/RideSetStatusAction.cpp +++ b/src/openrct2/actions/RideSetStatusAction.cpp @@ -12,12 +12,10 @@ #include "../Cheats.h" #include "../Diagnostic.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/Formatter.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../ride/Ride.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../world/Park.h" @@ -143,6 +141,8 @@ GameActions::Result RideSetStatusAction::Execute() const res.Position = { location, TileElementHeight(location) }; } + auto* windowMgr = Ui::GetWindowManager(); + switch (_status) { case RideStatus::Closed: @@ -160,7 +160,7 @@ GameActions::Result RideSetStatusAction::Execute() const ride->lifecycle_flags &= ~RIDE_LIFECYCLE_PASS_STATION_NO_STOPPING; ride->race_winner = EntityId::GetNull(); ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; - WindowInvalidateByNumber(WindowClass::Ride, _rideIndex.ToUnderlying()); + windowMgr->InvalidateByNumber(WindowClass::Ride, _rideIndex.ToUnderlying()); break; case RideStatus::Simulating: { @@ -183,7 +183,7 @@ GameActions::Result RideSetStatusAction::Execute() const ride->last_issue_time = 0; ride->GetMeasurement(); ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; - WindowInvalidateByNumber(WindowClass::Ride, _rideIndex.ToUnderlying()); + windowMgr->InvalidateByNumber(WindowClass::Ride, _rideIndex.ToUnderlying()); break; } case RideStatus::Testing: @@ -202,7 +202,6 @@ GameActions::Result RideSetStatusAction::Execute() const // Fix #3183: Make sure we close the construction window so the ride finishes any editing code before opening // otherwise vehicles get added to the ride incorrectly (such as to a ghost station) - auto* windowMgr = Ui::GetWindowManager(); WindowBase* constructionWindow = windowMgr->FindByNumber(WindowClass::RideConstruction, _rideIndex.ToUnderlying()); if (constructionWindow != nullptr) { @@ -236,7 +235,7 @@ GameActions::Result RideSetStatusAction::Execute() const ride->last_issue_time = 0; ride->GetMeasurement(); ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; - WindowInvalidateByNumber(WindowClass::Ride, _rideIndex.ToUnderlying()); + windowMgr->InvalidateByNumber(WindowClass::Ride, _rideIndex.ToUnderlying()); break; } default: diff --git a/src/openrct2/actions/RideSetVehicleAction.cpp b/src/openrct2/actions/RideSetVehicleAction.cpp index b090c1c407..d4754301a0 100644 --- a/src/openrct2/actions/RideSetVehicleAction.cpp +++ b/src/openrct2/actions/RideSetVehicleAction.cpp @@ -16,13 +16,11 @@ #include "../core/EnumUtils.hpp" #include "../core/MemoryStream.h" #include "../drawing/Drawing.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Research.h" #include "../object/ObjectManager.h" #include "../ride/Ride.h" #include "../ride/RideData.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../world/Park.h" diff --git a/src/openrct2/actions/ScenarioSetSettingAction.cpp b/src/openrct2/actions/ScenarioSetSettingAction.cpp index 5a7a194edd..27e5f935ae 100644 --- a/src/openrct2/actions/ScenarioSetSettingAction.cpp +++ b/src/openrct2/actions/ScenarioSetSettingAction.cpp @@ -13,9 +13,9 @@ #include "../GameState.h" #include "../OpenRCT2.h" #include "../entity/Peep.h" -#include "../interface/Window.h" #include "../management/Finance.h" #include "../scenario/Scenario.h" +#include "../ui/WindowManager.h" #include "../world/Park.h" using namespace OpenRCT2; @@ -48,6 +48,8 @@ GameActions::Result ScenarioSetSettingAction::Query() const GameActions::Result ScenarioSetSettingAction::Execute() const { auto& gameState = GetGameState(); + auto* windowMgr = Ui::GetWindowManager(); + switch (_setting) { case ScenarioSetSetting::NoMoney: @@ -73,33 +75,33 @@ GameActions::Result ScenarioSetSettingAction::Execute() const gameState.Park.Flags &= ~PARK_FLAGS_NO_MONEY; } // Invalidate all windows that have anything to do with finance - WindowInvalidateByClass(WindowClass::Ride); - WindowInvalidateByClass(WindowClass::Peep); - WindowInvalidateByClass(WindowClass::ParkInformation); - WindowInvalidateByClass(WindowClass::Finances); - WindowInvalidateByClass(WindowClass::BottomToolbar); - WindowInvalidateByClass(WindowClass::TopToolbar); + windowMgr->InvalidateByClass(WindowClass::Ride); + windowMgr->InvalidateByClass(WindowClass::Peep); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); + windowMgr->InvalidateByClass(WindowClass::Finances); + windowMgr->InvalidateByClass(WindowClass::BottomToolbar); + windowMgr->InvalidateByClass(WindowClass::TopToolbar); } break; case ScenarioSetSetting::InitialCash: gameState.InitialCash = std::clamp(_value, 0.00_GBP, 1000000.00_GBP); gameState.Cash = gameState.InitialCash; - WindowInvalidateByClass(WindowClass::Finances); - WindowInvalidateByClass(WindowClass::BottomToolbar); + windowMgr->InvalidateByClass(WindowClass::Finances); + windowMgr->InvalidateByClass(WindowClass::BottomToolbar); break; case ScenarioSetSetting::InitialLoan: gameState.BankLoan = std::clamp(_value, 0.00_GBP, 5000000.00_GBP); gameState.MaxBankLoan = std::max(gameState.BankLoan, gameState.MaxBankLoan); - WindowInvalidateByClass(WindowClass::Finances); + windowMgr->InvalidateByClass(WindowClass::Finances); break; case ScenarioSetSetting::MaximumLoanSize: gameState.MaxBankLoan = std::clamp(_value, 0.00_GBP, 5000000.00_GBP); gameState.BankLoan = std::min(gameState.BankLoan, gameState.MaxBankLoan); - WindowInvalidateByClass(WindowClass::Finances); + windowMgr->InvalidateByClass(WindowClass::Finances); break; case ScenarioSetSetting::AnnualInterestRate: gameState.BankLoanInterestRate = std::clamp(_value, 0, MaxBankLoanInterestRate); - WindowInvalidateByClass(WindowClass::Finances); + windowMgr->InvalidateByClass(WindowClass::Finances); break; case ScenarioSetSetting::ForbidMarketingCampaigns: if (_value != 0) @@ -188,13 +190,13 @@ GameActions::Result ScenarioSetSettingAction::Execute() const gameState.Park.Flags |= PARK_FLAGS_PARK_FREE_ENTRY; gameState.Park.Flags |= PARK_FLAGS_UNLOCK_ALL_PRICES; } - WindowInvalidateByClass(WindowClass::ParkInformation); - WindowInvalidateByClass(WindowClass::Ride); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); + windowMgr->InvalidateByClass(WindowClass::Ride); } break; case ScenarioSetSetting::ParkChargeEntryFee: gameState.Park.EntranceFee = std::clamp(_value, 0.00_GBP, kMaxEntranceFee); - WindowInvalidateByClass(WindowClass::ParkInformation); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); break; case ScenarioSetSetting::ForbidTreeRemoval: if (_value != 0) @@ -266,6 +268,6 @@ GameActions::Result ScenarioSetSettingAction::Execute() const return GameActions::Result( GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } - WindowInvalidateByClass(WindowClass::EditorScenarioOptions); + windowMgr->InvalidateByClass(WindowClass::EditorScenarioOptions); return GameActions::Result(); } diff --git a/src/openrct2/actions/SignSetStyleAction.cpp b/src/openrct2/actions/SignSetStyleAction.cpp index ca19498d8c..121d6ceddc 100644 --- a/src/openrct2/actions/SignSetStyleAction.cpp +++ b/src/openrct2/actions/SignSetStyleAction.cpp @@ -14,7 +14,6 @@ #include "../core/MemoryStream.h" #include "../drawing/Drawing.h" #include "../localisation/StringIds.h" -#include "../ui/UiContext.h" #include "../windows/Intent.h" #include "../world/Banner.h" #include "../world/Scenery.h" diff --git a/src/openrct2/actions/SmallSceneryPlaceAction.cpp b/src/openrct2/actions/SmallSceneryPlaceAction.cpp index cf8d053837..ee4a801e94 100644 --- a/src/openrct2/actions/SmallSceneryPlaceAction.cpp +++ b/src/openrct2/actions/SmallSceneryPlaceAction.cpp @@ -14,7 +14,6 @@ #include "../GameState.h" #include "../OpenRCT2.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../object/ObjectEntryManager.h" diff --git a/src/openrct2/actions/SmallSceneryRemoveAction.cpp b/src/openrct2/actions/SmallSceneryRemoveAction.cpp index c04fb70ee5..c22f41dab3 100644 --- a/src/openrct2/actions/SmallSceneryRemoveAction.cpp +++ b/src/openrct2/actions/SmallSceneryRemoveAction.cpp @@ -14,7 +14,6 @@ #include "../GameState.h" #include "../OpenRCT2.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../object/ObjectEntryManager.h" diff --git a/src/openrct2/actions/SmallScenerySetColourAction.cpp b/src/openrct2/actions/SmallScenerySetColourAction.cpp index 0d2ff36d64..9e9455350a 100644 --- a/src/openrct2/actions/SmallScenerySetColourAction.cpp +++ b/src/openrct2/actions/SmallScenerySetColourAction.cpp @@ -14,7 +14,6 @@ #include "../GameState.h" #include "../OpenRCT2.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../ride/Ride.h" diff --git a/src/openrct2/actions/StaffFireAction.cpp b/src/openrct2/actions/StaffFireAction.cpp index f263de668e..1d055eecf0 100644 --- a/src/openrct2/actions/StaffFireAction.cpp +++ b/src/openrct2/actions/StaffFireAction.cpp @@ -12,7 +12,6 @@ #include "../Diagnostic.h" #include "../entity/EntityRegistry.h" #include "../entity/Staff.h" -#include "../interface/Window.h" #include "../ui/WindowManager.h" using namespace OpenRCT2; diff --git a/src/openrct2/actions/StaffHireNewAction.cpp b/src/openrct2/actions/StaffHireNewAction.cpp index 8045c36c9e..572afd8daf 100644 --- a/src/openrct2/actions/StaffHireNewAction.cpp +++ b/src/openrct2/actions/StaffHireNewAction.cpp @@ -17,14 +17,12 @@ #include "../drawing/Drawing.h" #include "../entity/EntityRegistry.h" #include "../entity/Staff.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../object/ObjectManager.h" #include "../object/PeepAnimationsObject.h" #include "../ride/Ride.h" #include "../scenario/Scenario.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../world/Entrance.h" #include "../world/Park.h" diff --git a/src/openrct2/actions/StaffSetColourAction.cpp b/src/openrct2/actions/StaffSetColourAction.cpp index 8ac571aa95..aa083d5203 100644 --- a/src/openrct2/actions/StaffSetColourAction.cpp +++ b/src/openrct2/actions/StaffSetColourAction.cpp @@ -16,7 +16,6 @@ #include "../entity/EntityList.h" #include "../entity/Staff.h" #include "../localisation/StringIds.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../windows/Intent.h" diff --git a/src/openrct2/actions/StaffSetCostumeAction.cpp b/src/openrct2/actions/StaffSetCostumeAction.cpp index 32428ceaf8..0be4fe9873 100644 --- a/src/openrct2/actions/StaffSetCostumeAction.cpp +++ b/src/openrct2/actions/StaffSetCostumeAction.cpp @@ -12,10 +12,10 @@ #include "../Context.h" #include "../Diagnostic.h" #include "../entity/EntityRegistry.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../object/ObjectManager.h" #include "../object/PeepAnimationsObject.h" +#include "../ui/WindowManager.h" #include "../windows/Intent.h" using namespace OpenRCT2; @@ -96,7 +96,9 @@ GameActions::Result StaffSetCostumeAction::Execute() const staff->UpdateCurrentAnimationType(); staff->Invalidate(); - WindowInvalidateByNumber(WindowClass::Peep, _spriteIndex); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Peep, _spriteIndex); + auto intent = Intent(INTENT_ACTION_REFRESH_STAFF_LIST); ContextBroadcastIntent(&intent); diff --git a/src/openrct2/actions/StaffSetNameAction.cpp b/src/openrct2/actions/StaffSetNameAction.cpp index 2dea03bb70..a90c49f98f 100644 --- a/src/openrct2/actions/StaffSetNameAction.cpp +++ b/src/openrct2/actions/StaffSetNameAction.cpp @@ -16,7 +16,6 @@ #include "../drawing/Drawing.h" #include "../entity/EntityRegistry.h" #include "../entity/Staff.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../windows/Intent.h" #include "../world/Park.h" diff --git a/src/openrct2/actions/StaffSetOrdersAction.cpp b/src/openrct2/actions/StaffSetOrdersAction.cpp index 9bb33b41bb..54c0d8353c 100644 --- a/src/openrct2/actions/StaffSetOrdersAction.cpp +++ b/src/openrct2/actions/StaffSetOrdersAction.cpp @@ -13,8 +13,8 @@ #include "../Diagnostic.h" #include "../entity/EntityRegistry.h" #include "../entity/Staff.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" +#include "../ui/WindowManager.h" #include "../windows/Intent.h" using namespace OpenRCT2; @@ -74,7 +74,8 @@ GameActions::Result StaffSetOrdersAction::Execute() const } staff->StaffOrders = _ordersId; - WindowInvalidateByNumber(WindowClass::Peep, _spriteIndex); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Peep, _spriteIndex); auto intent = Intent(INTENT_ACTION_REFRESH_STAFF_LIST); ContextBroadcastIntent(&intent); diff --git a/src/openrct2/actions/StaffSetPatrolAreaAction.cpp b/src/openrct2/actions/StaffSetPatrolAreaAction.cpp index cb41bfc38f..a1c0d506fd 100644 --- a/src/openrct2/actions/StaffSetPatrolAreaAction.cpp +++ b/src/openrct2/actions/StaffSetPatrolAreaAction.cpp @@ -14,7 +14,6 @@ #include "../entity/PatrolArea.h" #include "../entity/Peep.h" #include "../entity/Staff.h" -#include "../interface/Window.h" using namespace OpenRCT2; diff --git a/src/openrct2/actions/WallRemoveAction.cpp b/src/openrct2/actions/WallRemoveAction.cpp index c07bef8837..e1f32726f2 100644 --- a/src/openrct2/actions/WallRemoveAction.cpp +++ b/src/openrct2/actions/WallRemoveAction.cpp @@ -13,7 +13,6 @@ #include "../GameState.h" #include "../OpenRCT2.h" #include "../core/MemoryStream.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../world/Location.hpp" diff --git a/src/openrct2/audio/Audio.cpp b/src/openrct2/audio/Audio.cpp index b5fb026463..5c07aeef9a 100644 --- a/src/openrct2/audio/Audio.cpp +++ b/src/openrct2/audio/Audio.cpp @@ -27,7 +27,7 @@ #include "../ride/Ride.h" #include "../ride/RideAudio.h" #include "../scenes/intro/IntroScene.h" -#include "../ui/UiContext.h" +#include "../ui/WindowManager.h" #include "../util/Util.h" #include "../world/Climate.h" #include "../world/tile_element/SurfaceElement.h" @@ -207,7 +207,7 @@ namespace OpenRCT2::Audio if (pan != kAudioPlayAtCentre) { int32_t x2 = pan << 16; - uint16_t screenWidth = std::max(64, OpenRCT2::GetContext()->GetUiContext()->GetWidth()); + uint16_t screenWidth = std::max(64, ContextGetWidth()); mixerPan = ((x2 / screenWidth) - 0x8000) >> 4; } @@ -410,7 +410,8 @@ namespace OpenRCT2::Audio Pause(); } - WindowInvalidateByClass(WindowClass::Options); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Options); } void Pause() diff --git a/src/openrct2/command_line/ConvertCommand.cpp b/src/openrct2/command_line/ConvertCommand.cpp index 71632e3fb0..1013dc538a 100644 --- a/src/openrct2/command_line/ConvertCommand.cpp +++ b/src/openrct2/command_line/ConvertCommand.cpp @@ -14,7 +14,6 @@ #include "../ParkImporter.h" #include "../core/Console.hpp" #include "../core/Path.hpp" -#include "../interface/Window.h" #include "../object/ObjectManager.h" #include "../park/ParkFile.h" #include "../scenario/Scenario.h" diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index 48dda32440..b24e4d6a5e 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -53,7 +53,6 @@ #include "../scripting/HookEngine.h" #include "../scripting/ScriptEngine.h" #include "../sprites.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../util/Util.h" #include "../windows/Intent.h" @@ -1463,7 +1462,7 @@ void Guest::CheckCantFindRide() w->OnPrepareDraw(); } - WindowInvalidateByNumber(WindowClass::Peep, Id); + windowMgr->InvalidateByNumber(WindowClass::Peep, Id); } /** @@ -2335,7 +2334,8 @@ void Guest::SpendMoney(money64& peep_expend_type, money64 amount, ExpenditureTyp peep_expend_type += amount; - WindowInvalidateByNumber(WindowClass::Peep, Id); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Peep, Id); FinancePayment(-amount, expenditure); @@ -3150,7 +3150,7 @@ static void PeepLeavePark(Guest* peep) WindowBase* w = windowMgr->FindByNumber(WindowClass::Peep, peep->Id); if (w != nullptr) w->OnPrepareDraw(); - WindowInvalidateByNumber(WindowClass::Peep, peep->Id); + windowMgr->InvalidateByNumber(WindowClass::Peep, peep->Id); } template @@ -3389,7 +3389,8 @@ void Guest::UpdateBuying() { CashInPocket += 50.00_GBP; } - WindowInvalidateByNumber(WindowClass::Peep, Id); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Peep, Id); } Orientation ^= 0x10; @@ -3903,7 +3904,8 @@ void Guest::UpdateRideFreeVehicleEnterRide(Ride& ride) if (queueTime != station.QueueTime) { station.QueueTime = queueTime; - WindowInvalidateByNumber(WindowClass::Ride, CurrentRide.ToUnderlying()); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Ride, CurrentRide.ToUnderlying()); } if (PeepFlags & PEEP_FLAGS_TRACKING) @@ -5786,7 +5788,9 @@ void Guest::UpdateLeavingPark() ContextBroadcastIntent(&intent); Var37 = 1; - WindowInvalidateByClass(WindowClass::GuestList); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::GuestList); + uint8_t pathingResult; PerformNextAction(pathingResult); if (!(pathingResult & PATHING_OUTSIDE_PARK)) diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index 109f720b09..2322c77570 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -49,7 +49,6 @@ #include "../ride/Track.h" #include "../scenario/Scenario.h" #include "../sprites.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../windows/Intent.h" #include "../world/Climate.h" @@ -608,13 +607,13 @@ void PeepWindowStateUpdate(Peep* peep) } } - WindowInvalidateByNumber(WindowClass::Peep, peep->Id); - WindowInvalidateByClass(WindowClass::GuestList); + windowMgr->InvalidateByNumber(WindowClass::Peep, peep->Id); + windowMgr->InvalidateByClass(WindowClass::GuestList); } else { - WindowInvalidateByNumber(WindowClass::Peep, peep->Id); - WindowInvalidateByClass(WindowClass::StaffList); + windowMgr->InvalidateByNumber(WindowClass::Peep, peep->Id); + windowMgr->InvalidateByClass(WindowClass::StaffList); } } @@ -2056,7 +2055,9 @@ static bool PeepInteractWithEntrance(Peep* peep, const CoordsXYE& coords, uint8_ } GetGameState().TotalAdmissions++; - WindowInvalidateByNumber(WindowClass::ParkInformation, 0); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::ParkInformation, 0); guest->Var37 = 1; auto destination = guest->GetDestination(); diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index 35929f9be6..53369fb1d4 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -1344,7 +1344,9 @@ static void ConsoleCommandForceDate([[maybe_unused]] InteractiveConsole& console auto setDateAction = ParkSetDateAction(year - 1, month - 1, day - 1); GameActions::Execute(&setDateAction); - WindowInvalidateByClass(WindowClass::BottomToolbar); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::BottomToolbar); } static void ConsoleCommandLoadPark([[maybe_unused]] InteractiveConsole& console, [[maybe_unused]] const arguments_t& argv) diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index ce878ff588..03bfe1d2c6 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -25,6 +25,7 @@ #include "../entity/Guest.h" #include "../entity/PatrolArea.h" #include "../entity/Staff.h" +#include "../interface/Cursors.h" #include "../object/LargeSceneryEntry.h" #include "../object/SmallSceneryEntry.h" #include "../object/WallSceneryEntry.h" @@ -34,7 +35,6 @@ #include "../ride/RideData.h" #include "../ride/TrackDesign.h" #include "../ride/Vehicle.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../world/Climate.h" #include "../world/Map.h" diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index 18a51fd470..377c7a0e6b 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -186,117 +186,6 @@ static constexpr float kWindowScrollLocations[][2] = { } } - /** - * Invalidates the specified window. - * rct2: 0x006EB13A - * - * @param window The window to invalidate (esi). - */ - template - static void WindowInvalidateByCondition(TPred pred) - { - WindowVisitEach([pred](WindowBase* w) { - if (pred(w)) - { - w->Invalidate(); - } - }); - } - - /** - * Invalidates all windows with the specified window class. - * rct2: 0x006EC3AC - * @param cls (al) with bit 14 set - */ - void WindowInvalidateByClass(WindowClass cls) - { - WindowInvalidateByCondition([cls](WindowBase* w) -> bool { return w->classification == cls; }); - } - - /** - * Invalidates all windows with the specified window class and number. - * rct2: 0x006EC3AC - */ - void WindowInvalidateByNumber(WindowClass cls, rct_windownumber number) - { - WindowInvalidateByCondition( - [cls, number](WindowBase* w) -> bool { return w->classification == cls && w->number == number; }); - } - - // TODO: Use variant for this once the window framework is done. - void WindowInvalidateByNumber(WindowClass cls, EntityId id) - { - WindowInvalidateByNumber(cls, static_cast(id.ToUnderlying())); - } - - /** - * Invalidates all windows. - */ - void WindowInvalidateAll() - { - WindowVisitEach([](WindowBase* w) { w->Invalidate(); }); - } - - /** - * Invalidates the specified widget of a window. - * rct2: 0x006EC402 - */ - void WidgetInvalidate(WindowBase& w, WidgetIndex widgetIndex) - { - if (w.widgets.empty()) - { - // This might be called before the window is fully created. - return; - } - - assert(widgetIndex < w.widgets.size()); - - const auto& widget = w.widgets[widgetIndex]; - if (widget.left == -2) - return; - - GfxSetDirtyBlocks({ { w.windowPos + ScreenCoordsXY{ widget.left, widget.top } }, - { w.windowPos + ScreenCoordsXY{ widget.right + 1, widget.bottom + 1 } } }); - } - - template - static void widget_invalidate_by_condition(TPred pred) - { - WindowVisitEach([pred](WindowBase* w) { - if (pred(w)) - { - w->Invalidate(); - } - }); - } - - /** - * Invalidates the specified widget of all windows that match the specified window class. - */ - void WidgetInvalidateByClass(WindowClass cls, WidgetIndex widgetIndex) - { - WindowVisitEach([cls, widgetIndex](WindowBase* w) { - if (w->classification == cls) - { - WidgetInvalidate(*w, widgetIndex); - } - }); - } - - /** - * Invalidates the specified widget of all windows that match the specified window class and number. - * rct2: 0x006EC3AC - */ - void WidgetInvalidateByNumber(WindowClass cls, rct_windownumber number, WidgetIndex widgetIndex) - { - WindowVisitEach([cls, number, widgetIndex](WindowBase* w) { - if (w->classification == cls && w->number == number) - { - WidgetInvalidate(*w, widgetIndex); - } - }); - } - int32_t WindowGetScrollDataIndex(const WindowBase& w, WidgetIndex widget_index) { int32_t i, result; @@ -819,13 +708,14 @@ static constexpr float kWindowScrollLocations[][2] = { if (gCurrentToolWidget.widget_index != kWidgetIndexNull) { + auto* windowMgr = Ui::GetWindowManager(); + // Invalidate tool widget - WidgetInvalidateByNumber( + windowMgr->InvalidateWidgetByNumber( gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number, gCurrentToolWidget.widget_index); // Abort tool event - auto* windowMgr = Ui::GetWindowManager(); WindowBase* w = windowMgr->FindByNumber( gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number); if (w != nullptr) diff --git a/src/openrct2/interface/Window.h b/src/openrct2/interface/Window.h index c40f975a97..5111d6af2f 100644 --- a/src/openrct2/interface/Window.h +++ b/src/openrct2/interface/Window.h @@ -305,14 +305,6 @@ namespace OpenRCT2 void WindowSetWindowLimit(int32_t value); - void WindowInvalidateByClass(WindowClass cls); - void WindowInvalidateByNumber(WindowClass cls, rct_windownumber number); - void WindowInvalidateByNumber(WindowClass cls, EntityId id); - void WindowInvalidateAll(); - void WidgetInvalidate(WindowBase& w, WidgetIndex widgetIndex); - void WidgetInvalidateByClass(WindowClass cls, WidgetIndex widgetIndex); - void WidgetInvalidateByNumber(WindowClass cls, rct_windownumber number, WidgetIndex widgetIndex); - int32_t WindowGetScrollDataIndex(const WindowBase& w, WidgetIndex widget_index); void WindowPushOthersRight(WindowBase& w); diff --git a/src/openrct2/management/Award.cpp b/src/openrct2/management/Award.cpp index 446861ef3d..ef9b61687b 100644 --- a/src/openrct2/management/Award.cpp +++ b/src/openrct2/management/Award.cpp @@ -12,13 +12,13 @@ #include "../GameState.h" #include "../config/Config.h" #include "../entity/Guest.h" -#include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../profiling/Profiling.h" #include "../ride/Ride.h" #include "../ride/RideData.h" #include "../ride/RideManager.hpp" #include "../scenario/Scenario.h" +#include "../ui/WindowManager.h" #include "../world/Park.h" #include "NewsItem.h" @@ -606,18 +606,21 @@ void AwardUpdateAll() auto& gameState = GetGameState(); auto& currentAwards = gameState.CurrentAwards; + auto* windowMgr = Ui::GetWindowManager(); + // Decrease award times for (auto& award : currentAwards) { --award.Time; } + // Remove any 0 time awards auto res = std::remove_if( std::begin(currentAwards), std::end(currentAwards), [](const Award& award) { return award.Time == 0; }); if (res != std::end(currentAwards)) { currentAwards.erase(res, std::end(currentAwards)); - WindowInvalidateByClass(WindowClass::ParkInformation); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); } // Only add new awards if park is open @@ -649,7 +652,7 @@ void AwardUpdateAll() { News::AddItemToQueue(News::ItemType::Award, AwardNewsStrings[EnumValue(awardType)], 0, {}); } - WindowInvalidateByClass(WindowClass::ParkInformation); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); } } } diff --git a/src/openrct2/management/Finance.cpp b/src/openrct2/management/Finance.cpp index d054cbd6de..d4b1a7fa7e 100644 --- a/src/openrct2/management/Finance.cpp +++ b/src/openrct2/management/Finance.cpp @@ -16,12 +16,12 @@ #include "../core/EnumUtils.hpp" #include "../entity/Peep.h" #include "../entity/Staff.h" -#include "../interface/Window.h" #include "../localisation/Localisation.Date.h" #include "../profiling/Profiling.h" #include "../ride/Ride.h" #include "../ride/RideManager.hpp" #include "../scenario/Scenario.h" +#include "../ui/WindowManager.h" #include "../util/Util.h" #include "../windows/Intent.h" #include "../world/Park.h" @@ -288,7 +288,8 @@ void FinanceUpdateDailyProfit() gameState.WeeklyProfitAverageDividend += gameState.CurrentProfit; gameState.WeeklyProfitAverageDivisor += 1; - WindowInvalidateByClass(WindowClass::Finances); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Finances); } money64 FinanceGetInitialCash() @@ -344,7 +345,8 @@ void FinanceShiftExpenditureTable() gameState.ExpenditureTable[0][i] = 0; } - WindowInvalidateByClass(WindowClass::Finances); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Finances); } /** diff --git a/src/openrct2/management/Marketing.cpp b/src/openrct2/management/Marketing.cpp index 7ac72851bb..8736e7daac 100644 --- a/src/openrct2/management/Marketing.cpp +++ b/src/openrct2/management/Marketing.cpp @@ -14,13 +14,13 @@ #include "../GameState.h" #include "../config/Config.h" #include "../entity/Guest.h" -#include "../interface/Window.h" #include "../localisation/Formatter.h" #include "../profiling/Profiling.h" #include "../ride/Ride.h" #include "../ride/RideData.h" #include "../ride/RideManager.hpp" #include "../ride/ShopItem.h" +#include "../ui/WindowManager.h" #include "../world/Park.h" #include "Finance.h" #include "NewsItem.h" @@ -142,7 +142,8 @@ void MarketingUpdate() } } - WindowInvalidateByClass(WindowClass::Finances); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Finances); } void MarketingSetGuestCampaign(Guest* peep, int32_t campaignType) diff --git a/src/openrct2/management/NewsItem.cpp b/src/openrct2/management/NewsItem.cpp index 640eca4ade..d176ee00e2 100644 --- a/src/openrct2/management/NewsItem.cpp +++ b/src/openrct2/management/NewsItem.cpp @@ -17,8 +17,6 @@ #include "../audio/audio.h" #include "../entity/EntityRegistry.h" #include "../entity/Peep.h" -#include "../interface/Window.h" -#include "../interface/Window_internal.h" #include "../localisation/Formatter.h" #include "../localisation/Formatting.h" #include "../localisation/Localisation.Date.h" @@ -26,6 +24,7 @@ #include "../profiling/Profiling.h" #include "../ride/Ride.h" #include "../ride/Vehicle.h" +#include "../ui/WindowManager.h" #include "../windows/Intent.h" #include "../world/Location.hpp" @@ -194,7 +193,8 @@ void News::ItemQueues::ArchiveCurrent() Archived.push_back(Current()); // Invalidate the news window - WindowInvalidateByClass(WindowClass::RecentNews); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::RecentNews); // Dequeue the current news item, shift news up Recent.pop_front(); @@ -456,7 +456,8 @@ void News::DisableNewsItems(News::ItemType type, uint32_t assoc) if (type == newsItem.Type && assoc == newsItem.Assoc) { newsItem.SetFlags(News::ItemFlags::HasButton); - WindowInvalidateByClass(WindowClass::RecentNews); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::RecentNews); } }); } diff --git a/src/openrct2/management/Research.cpp b/src/openrct2/management/Research.cpp index 8c02ba5046..5027ad67be 100644 --- a/src/openrct2/management/Research.cpp +++ b/src/openrct2/management/Research.cpp @@ -21,7 +21,6 @@ #include "../core/EnumUtils.hpp" #include "../core/Guard.hpp" #include "../core/Memory.hpp" -#include "../interface/Window.h" #include "../localisation/Formatter.h" #include "../localisation/Localisation.Date.h" #include "../localisation/StringIds.h" @@ -36,6 +35,7 @@ #include "../ride/RideEntry.h" #include "../ride/TrackData.h" #include "../scenario/Scenario.h" +#include "../ui/WindowManager.h" #include "../windows/Intent.h" #include "../world/Park.h" #include "../world/Scenery.h" @@ -129,8 +129,9 @@ static void ResearchCalculateExpectedDate() static void ResearchInvalidateRelatedWindows() { - WindowInvalidateByClass(WindowClass::ConstructRide); - WindowInvalidateByClass(WindowClass::Research); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::ConstructRide); + windowMgr->InvalidateByClass(WindowClass::Research); } static void ResearchMarkAsFullyCompleted() diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 7bc6229ef4..bb49e7c168 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -34,7 +34,6 @@ #include "../platform/Platform.h" #include "../scenario/Scenario.h" #include "../scripting/ScriptEngine.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../util/Util.h" #include "../world/Location.hpp" @@ -79,7 +78,6 @@ static constexpr uint32_t kMaxPacketsPerUpdate = 100; #include "../core/Path.hpp" #include "../core/String.hpp" #include "../interface/Chat.h" - #include "../interface/Window.h" #include "../localisation/Localisation.Date.h" #include "../object/ObjectManager.h" #include "../object/ObjectRepository.h" @@ -3146,7 +3144,8 @@ void NetworkBase::ServerHandlePing(NetworkConnection& connection, [[maybe_unused if (connection.Player != nullptr) { connection.Player->Ping = ping; - WindowInvalidateByNumber(WindowClass::Player, connection.Player->Id); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Player, connection.Player->Id); } } @@ -3165,7 +3164,9 @@ void NetworkBase::Client_Handle_PINGLIST([[maybe_unused]] NetworkConnection& con player->Ping = ping; } } - WindowInvalidateByClass(WindowClass::Player); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::Player); } void NetworkBase::Client_Handle_SETDISCONNECTMSG(NetworkConnection& connection, NetworkPacket& packet) @@ -3613,7 +3614,8 @@ GameActions::Result NetworkSetPlayerGroup( userManager.Save(); } - WindowInvalidateByNumber(WindowClass::Player, playerId); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Player, playerId); // Log set player group event NetworkPlayer* game_command_player = network.GetPlayerByID(actionPlayerId); diff --git a/src/openrct2/network/NetworkPlayer.cpp b/src/openrct2/network/NetworkPlayer.cpp index 4eb0eeca31..93d09dfea7 100644 --- a/src/openrct2/network/NetworkPlayer.cpp +++ b/src/openrct2/network/NetworkPlayer.cpp @@ -12,7 +12,7 @@ #include "NetworkPlayer.h" #include "../core/Money.hpp" - #include "../interface/Window.h" + #include "../ui/WindowManager.h" #include "NetworkPacket.h" void NetworkPlayer::SetName(std::string_view name) @@ -39,13 +39,15 @@ void NetworkPlayer::Write(NetworkPacket& packet) void NetworkPlayer::IncrementNumCommands() { CommandsRan++; - OpenRCT2::WindowInvalidateByNumber(WindowClass::Player, Id); + auto* windowMgr = OpenRCT2::Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Player, Id); } void NetworkPlayer::AddMoneySpent(money64 cost) { MoneySpent += cost; - OpenRCT2::WindowInvalidateByNumber(WindowClass::Player, Id); + auto* windowMgr = OpenRCT2::Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Player, Id); } #endif diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 4dd1620012..291ae5b656 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -36,7 +36,6 @@ #include "../entity/PatrolArea.h" #include "../entity/Staff.h" #include "../interface/Viewport.h" -#include "../interface/Window.h" #include "../localisation/Localisation.Date.h" #include "../management/Award.h" #include "../management/Finance.h" diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 26ae7525bb..90a05384a3 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -38,7 +38,6 @@ #include "../entity/PatrolArea.h" #include "../entity/Peep.h" #include "../entity/Staff.h" -#include "../interface/Window.h" #include "../localisation/Formatting.h" #include "../localisation/Localisation.Date.h" #include "../management/Award.h" diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index ae1855e57b..186a73e420 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -48,7 +48,6 @@ #include "../profiling/Profiling.h" #include "../rct1/RCT1.h" #include "../scenario/Scenario.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../util/Util.h" #include "../windows/Intent.h" @@ -383,7 +382,8 @@ void RideUpdateFavouritedStat() } } - WindowInvalidateByClass(WindowClass::RideList); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::RideList); } /** @@ -4654,7 +4654,9 @@ void InvalidateTestResults(Ride& ride) } } } - WindowInvalidateByNumber(WindowClass::Ride, ride.id.ToUnderlying()); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Ride, ride.id.ToUnderlying()); } /** @@ -5205,7 +5207,9 @@ void Ride::UpdateMaxVehicles() { num_cars_per_train = numCarsPerTrain; NumTrains = numTrains; - WindowInvalidateByNumber(WindowClass::Ride, id.ToUnderlying()); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Ride, id.ToUnderlying()); } } diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 7460477bc7..82a6c16518 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -25,7 +25,6 @@ #include "../localisation/Formatter.h" #include "../localisation/Localisation.Date.h" #include "../network/network.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../windows/Intent.h" #include "../world/Banner.h" @@ -874,7 +873,7 @@ static bool ride_modify_entrance_or_exit(const CoordsXYE& tileElement) rideEntranceExitRemove.SetCallback([=](const GameAction* ga, const GameActions::Result* result) { gRideEntranceExitPlaceType = entranceType; - WindowInvalidateByClass(WindowClass::RideConstruction); + windowMgr->InvalidateByClass(WindowClass::RideConstruction); auto newToolWidgetIndex = (entranceType == ENTRANCE_TYPE_RIDE_ENTRANCE) ? WC_RIDE_CONSTRUCTION__WIDX_ENTRANCE : WC_RIDE_CONSTRUCTION__WIDX_EXIT; @@ -886,7 +885,7 @@ static bool ride_modify_entrance_or_exit(const CoordsXYE& tileElement) GameActions::Execute(&rideEntranceExitRemove); } - WindowInvalidateByClass(WindowClass::RideConstruction); + windowMgr->InvalidateByClass(WindowClass::RideConstruction); return true; } diff --git a/src/openrct2/ride/RideRatings.cpp b/src/openrct2/ride/RideRatings.cpp index 4572843d62..5addede1f8 100644 --- a/src/openrct2/ride/RideRatings.cpp +++ b/src/openrct2/ride/RideRatings.cpp @@ -14,9 +14,9 @@ #include "../GameState.h" #include "../OpenRCT2.h" #include "../core/UnitConversion.h" -#include "../interface/Window.h" #include "../profiling/Profiling.h" #include "../scripting/ScriptEngine.h" +#include "../ui/WindowManager.h" #include "../world/Map.h" #include "../world/tile_element/PathElement.h" #include "../world/tile_element/SurfaceElement.h" @@ -433,7 +433,9 @@ static void ride_ratings_update_state_3(RideRatingUpdateState& state) RideRatingsCalculate(state, *ride); RideRatingsCalculateValue(*ride); - WindowInvalidateByNumber(WindowClass::Ride, state.CurrentRide.ToUnderlying()); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Ride, state.CurrentRide.ToUnderlying()); + state.State = RIDE_RATINGS_STATE_FIND_NEXT_RIDE; } diff --git a/src/openrct2/ride/TrackPaint.cpp b/src/openrct2/ride/TrackPaint.cpp index 123a289ce2..eee7a85b37 100644 --- a/src/openrct2/ride/TrackPaint.cpp +++ b/src/openrct2/ride/TrackPaint.cpp @@ -16,7 +16,6 @@ #include "../drawing/Drawing.h" #include "../drawing/LightFX.h" #include "../interface/Viewport.h" -#include "../interface/Window.h" #include "../object/StationObject.h" #include "../paint/Paint.SessionFlags.h" #include "../paint/Paint.h" diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index a64a50a550..3ef5fdcc99 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -39,7 +39,6 @@ #include "../scenario/Scenario.h" #include "../scripting/HookEngine.h" #include "../scripting/ScriptEngine.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../util/Util.h" #include "../windows/Intent.h" @@ -835,7 +834,9 @@ void Vehicle::UpdateMeasurements() curRide->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; curRide->lifecycle_flags &= ~RIDE_LIFECYCLE_TEST_IN_PROGRESS; ClearFlag(VehicleFlags::Testing); - WindowInvalidateByNumber(WindowClass::Ride, ride.ToUnderlying()); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Ride, ride.ToUnderlying()); return; } @@ -2334,7 +2335,9 @@ static void test_finish(Ride& ride) totalTime = std::max(totalTime, 1u); ride.average_speed = ride.average_speed / totalTime; - WindowInvalidateByNumber(WindowClass::Ride, ride.id.ToUnderlying()); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Ride, ride.id.ToUnderlying()); } void Vehicle::UpdateTestFinish() @@ -2384,7 +2387,9 @@ static void test_reset(Ride& ride, StationIndex curStation) } ride.totalAirTime = 0; ride.current_test_station = curStation; - WindowInvalidateByNumber(WindowClass::Ride, ride.id.ToUnderlying()); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByNumber(WindowClass::Ride, ride.id.ToUnderlying()); } void Vehicle::TestReset() diff --git a/src/openrct2/scenes/preloader/PreloaderScene.cpp b/src/openrct2/scenes/preloader/PreloaderScene.cpp index c434ebaf92..21bd3856fa 100644 --- a/src/openrct2/scenes/preloader/PreloaderScene.cpp +++ b/src/openrct2/scenes/preloader/PreloaderScene.cpp @@ -16,9 +16,9 @@ #include "../../OpenRCT2.h" #include "../../audio/audio.h" #include "../../interface/Viewport.h" -#include "../../interface/Window.h" #include "../../localisation/LocalisationService.h" #include "../../localisation/StringIds.h" +#include "../../ui/WindowManager.h" #include "../../windows/Intent.h" #include @@ -50,7 +50,9 @@ void PreloaderScene::Tick() gInUpdateCode = true; ContextHandleInput(); - WindowInvalidateAll(); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateAll(); gInUpdateCode = false; diff --git a/src/openrct2/scenes/title/Command/RotateView.cpp b/src/openrct2/scenes/title/Command/RotateView.cpp index 3914530d30..d4699cad57 100644 --- a/src/openrct2/scenes/title/Command/RotateView.cpp +++ b/src/openrct2/scenes/title/Command/RotateView.cpp @@ -10,7 +10,6 @@ #include "RotateView.h" #include "../../../interface/Viewport.h" -#include "../../../interface/Window.h" namespace OpenRCT2::Title { diff --git a/src/openrct2/scenes/title/TitleScene.cpp b/src/openrct2/scenes/title/TitleScene.cpp index 5da6d067ac..b9935d7eb5 100644 --- a/src/openrct2/scenes/title/TitleScene.cpp +++ b/src/openrct2/scenes/title/TitleScene.cpp @@ -21,12 +21,12 @@ #include "../../drawing/Text.h" #include "../../interface/Screenshot.h" #include "../../interface/Viewport.h" -#include "../../interface/Window.h" #include "../../network/NetworkBase.h" #include "../../network/network.h" #include "../../scenario/Scenario.h" #include "../../scenario/ScenarioRepository.h" #include "../../ui/UiContext.h" +#include "../../ui/WindowManager.h" #include "../../util/Util.h" #include "../../windows/Intent.h" #include "TitleSequence.h" @@ -184,7 +184,9 @@ void TitleScene::ChangePresetSequence(size_t preset) if (!_previewingSequence) _currentSequence = preset; - WindowInvalidateAll(); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateAll(); } /** diff --git a/src/openrct2/scripting/bindings/world/ScPark.cpp b/src/openrct2/scripting/bindings/world/ScPark.cpp index 54b4a75293..1059c583fe 100644 --- a/src/openrct2/scripting/bindings/world/ScPark.cpp +++ b/src/openrct2/scripting/bindings/world/ScPark.cpp @@ -18,6 +18,7 @@ #include "../../../entity/Guest.h" #include "../../../management/Finance.h" #include "../../../management/NewsItem.h" + #include "../../../ui/WindowManager.h" #include "../../../windows/Intent.h" #include "../../../world/Park.h" #include "../../Duktape.hpp" @@ -130,7 +131,8 @@ namespace OpenRCT2::Scripting if (gameState.Park.EntranceFee != value) { gameState.Park.EntranceFee = value; - WindowInvalidateByClass(WindowClass::ParkInformation); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); } } @@ -227,7 +229,8 @@ namespace OpenRCT2::Scripting if (gameState.TotalAdmissions != value) { gameState.TotalAdmissions = value; - WindowInvalidateByClass(WindowClass::ParkInformation); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); } } @@ -243,7 +246,8 @@ namespace OpenRCT2::Scripting if (gameState.TotalIncomeFromAdmissions != value) { gameState.TotalIncomeFromAdmissions = value; - WindowInvalidateByClass(WindowClass::ParkInformation); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); } } diff --git a/src/openrct2/ui/DummyWindowManager.cpp b/src/openrct2/ui/DummyWindowManager.cpp index 9105d7b0da..0d72f45076 100644 --- a/src/openrct2/ui/DummyWindowManager.cpp +++ b/src/openrct2/ui/DummyWindowManager.cpp @@ -110,6 +110,14 @@ namespace OpenRCT2::Ui return kWidgetIndexNull; } + void InvalidateByClass(WindowClass cls) override {}; + void InvalidateByNumber(WindowClass cls, rct_windownumber number) override {}; + void InvalidateByNumber(WindowClass cls, EntityId id) override {}; + void InvalidateAll() override {}; + void InvalidateWidget(WindowBase& w, WidgetIndex widgetIndex) override {}; + void InvalidateWidgetByClass(WindowClass cls, WidgetIndex widgetIndex) override {}; + void InvalidateWidgetByNumber(WindowClass cls, rct_windownumber number, WidgetIndex widgetIndex) override {}; + WindowBase* BringToFront(WindowBase& w) override { return nullptr; diff --git a/src/openrct2/ui/WindowManager.h b/src/openrct2/ui/WindowManager.h index 515e0fa3b5..99aadaee80 100644 --- a/src/openrct2/ui/WindowManager.h +++ b/src/openrct2/ui/WindowManager.h @@ -102,6 +102,14 @@ namespace OpenRCT2::Ui virtual WindowBase* FindFromPoint(const ScreenCoordsXY& screenCoords) = 0; virtual WidgetIndex FindWidgetFromPoint(WindowBase& w, const ScreenCoordsXY& screenCoords) = 0; + virtual void InvalidateByClass(WindowClass cls) = 0; + virtual void InvalidateByNumber(WindowClass cls, rct_windownumber number) = 0; + virtual void InvalidateByNumber(WindowClass cls, EntityId id) = 0; + virtual void InvalidateAll() = 0; + virtual void InvalidateWidget(WindowBase& w, WidgetIndex widgetIndex) = 0; + virtual void InvalidateWidgetByClass(WindowClass cls, WidgetIndex widgetIndex) = 0; + virtual void InvalidateWidgetByNumber(WindowClass cls, rct_windownumber number, WidgetIndex widgetIndex) = 0; + virtual WindowBase* BringToFront(WindowBase& w) = 0; virtual WindowBase* BringToFrontByClass(WindowClass cls) = 0; virtual WindowBase* BringToFrontByClassWithFlags(WindowClass cls, uint16_t flags) = 0; diff --git a/src/openrct2/world/Banner.cpp b/src/openrct2/world/Banner.cpp index 7df1c6f1b1..d943adde3b 100644 --- a/src/openrct2/world/Banner.cpp +++ b/src/openrct2/world/Banner.cpp @@ -15,7 +15,6 @@ #include "../GameState.h" #include "../core/Memory.hpp" #include "../core/String.hpp" -#include "../interface/Window.h" #include "../localisation/Formatter.h" #include "../localisation/Formatting.h" #include "../management/Finance.h" diff --git a/src/openrct2/world/Climate.cpp b/src/openrct2/world/Climate.cpp index ef143b7e45..c4e522bcc2 100644 --- a/src/openrct2/world/Climate.cpp +++ b/src/openrct2/world/Climate.cpp @@ -20,7 +20,6 @@ #include "../config/Config.h" #include "../core/EnumUtils.hpp" #include "../drawing/Drawing.h" -#include "../interface/Window.h" #include "../localisation/Localisation.Date.h" #include "../profiling/Profiling.h" #include "../scenario/Scenario.h" diff --git a/src/openrct2/world/Map.cpp b/src/openrct2/world/Map.cpp index cec026da67..76e10243eb 100644 --- a/src/openrct2/world/Map.cpp +++ b/src/openrct2/world/Map.cpp @@ -30,7 +30,6 @@ #include "../entity/Staff.h" #include "../interface/Cursors.h" #include "../interface/Viewport.h" -#include "../interface/Window.h" #include "../localisation/Localisation.Date.h" #include "../management/Finance.h" #include "../network/network.h" diff --git a/src/openrct2/world/Park.cpp b/src/openrct2/world/Park.cpp index fa638df21f..ba0e99e58a 100644 --- a/src/openrct2/world/Park.cpp +++ b/src/openrct2/world/Park.cpp @@ -22,7 +22,6 @@ #include "../entity/Peep.h" #include "../entity/Staff.h" #include "../interface/Colour.h" -#include "../interface/Window.h" #include "../management/Award.h" #include "../management/Finance.h" #include "../management/Marketing.h" @@ -35,6 +34,7 @@ #include "../ride/ShopItem.h" #include "../scenario/Scenario.h" #include "../scripting/ScriptEngine.h" +#include "../ui/WindowManager.h" #include "../util/Util.h" #include "../windows/Intent.h" #include "Entrance.h" @@ -339,6 +339,7 @@ namespace OpenRCT2::Park } const auto currentTicks = gameState.CurrentTicks; + auto* windowMgr = Ui::GetWindowManager(); // Every ~13 seconds if (currentTicks % 512 == 0) @@ -350,7 +351,7 @@ namespace OpenRCT2::Park gameState.SuggestedGuestMaximum = calculateSuggestedMaxGuests(); gameState.GuestGenerationProbability = calculateGuestGenerationProbability(); - WindowInvalidateByClass(WindowClass::Finances); + windowMgr->InvalidateByClass(WindowClass::Finances); auto intent = Intent(INTENT_ACTION_UPDATE_PARK_RATING); ContextBroadcastIntent(&intent); } @@ -359,7 +360,7 @@ namespace OpenRCT2::Park if (currentTicks % 4096 == 0) { gameState.Park.Size = CalculateParkSize(); - WindowInvalidateByClass(WindowClass::ParkInformation); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); } generateGuests(gameState); @@ -385,7 +386,8 @@ namespace OpenRCT2::Park if (tiles != gameState.Park.Size) { gameState.Park.Size = tiles; - WindowInvalidateByClass(WindowClass::ParkInformation); + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); } return tiles; @@ -631,8 +633,10 @@ namespace OpenRCT2::Park // Invalidate relevant windows auto intent = Intent(INTENT_ACTION_UPDATE_GUEST_COUNT); ContextBroadcastIntent(&intent); - WindowInvalidateByClass(WindowClass::ParkInformation); - WindowInvalidateByClass(WindowClass::Finances); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); + windowMgr->InvalidateByClass(WindowClass::Finances); } uint32_t UpdateSize(GameState_t& gameState) @@ -641,7 +645,9 @@ namespace OpenRCT2::Park if (tiles != gameState.Park.Size) { gameState.Park.Size = tiles; - WindowInvalidateByClass(WindowClass::ParkInformation); + + auto* windowMgr = Ui::GetWindowManager(); + windowMgr->InvalidateByClass(WindowClass::ParkInformation); } return tiles; } diff --git a/src/openrct2/world/TileInspector.cpp b/src/openrct2/world/TileInspector.cpp index d6cb5b6837..1ba81876df 100644 --- a/src/openrct2/world/TileInspector.cpp +++ b/src/openrct2/world/TileInspector.cpp @@ -11,12 +11,10 @@ #include "../Diagnostic.h" #include "../actions/GameAction.h" -#include "../interface/Window.h" #include "../object/LargeSceneryEntry.h" #include "../ride/Station.h" #include "../ride/Track.h" #include "../ride/TrackData.h" -#include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../windows/TileInspectorGlobals.h" #include "Banner.h"