diff --git a/src/openrct2-ui/UiContext.cpp b/src/openrct2-ui/UiContext.cpp index b1f6420f7d..de1e93c9e0 100644 --- a/src/openrct2-ui/UiContext.cpp +++ b/src/openrct2-ui/UiContext.cpp @@ -141,24 +141,6 @@ public: { _inGameConsole.Update(); - // the flickering frequency is reduced by 4, compared to the original - // it was done due to inability to reproduce original frequency - // and decision that the original one looks too fast - if (gCurrentRealTimeTicks % 4 == 0) - gWindowMapFlashingFlags ^= MapFlashingFlags::SwitchColour; - - // Handle guest map flashing - gWindowMapFlashingFlags &= ~MapFlashingFlags::FlashGuests; - if (gWindowMapFlashingFlags & MapFlashingFlags::GuestListOpen) - gWindowMapFlashingFlags |= MapFlashingFlags::FlashGuests; - gWindowMapFlashingFlags &= ~MapFlashingFlags::GuestListOpen; - - // Handle staff map flashing - gWindowMapFlashingFlags &= ~MapFlashingFlags::FlashStaff; - if (gWindowMapFlashingFlags & MapFlashingFlags::StaffListOpen) - gWindowMapFlashingFlags |= MapFlashingFlags::FlashStaff; - gWindowMapFlashingFlags &= ~MapFlashingFlags::StaffListOpen; - _windowManager->UpdateMapTooltip(); WindowDispatchUpdateAll(); diff --git a/src/openrct2-ui/windows/GuestList.cpp b/src/openrct2-ui/windows/GuestList.cpp index 59fdee7677..8770ed1210 100644 --- a/src/openrct2-ui/windows/GuestList.cpp +++ b/src/openrct2-ui/windows/GuestList.cpp @@ -275,8 +275,6 @@ static Widget window_guest_list_widgets[] = { if (_tabAnimationIndex >= (_selectedTab == TabId::Individual ? 24uL : 32uL)) _tabAnimationIndex = 0; InvalidateWidget(WIDX_TAB_1 + static_cast(_selectedTab)); - - gWindowMapFlashingFlags |= MapFlashingFlags::GuestListOpen; } void OnMouseUp(WidgetIndex widgetIndex) override diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index 56c22bb2ad..84e9397ca2 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -184,6 +184,13 @@ static constexpr ScreenCoordsXY MiniMapOffsets[] = { MapColour(PALETTE_INDEX_0), // TILE_ELEMENT_TYPE_BANNER }; + namespace MapFlashingFlags + { + constexpr uint16_t FlashGuests = (1 << 1); + constexpr uint16_t FlashStaff = (1 << 3); + constexpr uint16_t SwitchColour = (1 << 15); // Every couple ticks the colour switches + } // namespace MapFlashingFlags + class MapWindow final : public Window { uint8_t _rotation; @@ -200,6 +207,7 @@ static constexpr ScreenCoordsXY MiniMapOffsets[] = { X, Y, } _resizeDirection{ ResizeDirection::Both }; + uint16_t _flashingFlags = 0; public: MapWindow() @@ -387,6 +395,22 @@ static constexpr ScreenCoordsXY MiniMapOffsets[] = { void OnUpdate() override { + // the flickering frequency is reduced by 4, compared to the original + // it was done due to inability to reproduce original frequency + // and decision that the original one looks too fast + if (gCurrentRealTimeTicks % 4 == 0) + _flashingFlags ^= MapFlashingFlags::SwitchColour; + + // Handle guest map flashing + _flashingFlags &= ~MapFlashingFlags::FlashGuests; + if (WindowFindByClass(WindowClass::GuestList) != nullptr) + _flashingFlags |= MapFlashingFlags::FlashGuests; + + // Handle staff map flashing + _flashingFlags &= ~MapFlashingFlags::FlashStaff; + if (WindowFindByClass(WindowClass::StaffList) != nullptr) + _flashingFlags |= MapFlashingFlags::FlashStaff; + if (GetCurrentRotation() != _rotation) { _rotation = GetCurrentRotation(); @@ -1269,25 +1293,25 @@ static constexpr ScreenCoordsXY MiniMapOffsets[] = { GfxFillRect(dpi, { leftTop, rightBottom }, colour); } - static uint8_t GetGuestFlashColour() + uint8_t GetGuestFlashColour() const { uint8_t colour = DefaultPeepMapColour; - if ((gWindowMapFlashingFlags & MapFlashingFlags::FlashGuests) != 0) + if ((_flashingFlags & MapFlashingFlags::FlashGuests) != 0) { colour = GuestMapColour; - if ((gWindowMapFlashingFlags & MapFlashingFlags::SwitchColour) == 0) + if ((_flashingFlags & MapFlashingFlags::SwitchColour) == 0) colour = GuestMapColourAlternate; } return colour; } - static uint8_t GetStaffFlashColour() + uint8_t GetStaffFlashColour() const { uint8_t colour = DefaultPeepMapColour; - if ((gWindowMapFlashingFlags & MapFlashingFlags::FlashStaff) != 0) + if ((_flashingFlags & MapFlashingFlags::FlashStaff) != 0) { colour = StaffMapColour; - if ((gWindowMapFlashingFlags & MapFlashingFlags::SwitchColour) == 0) + if ((_flashingFlags & MapFlashingFlags::SwitchColour) == 0) colour = StaffMapColourAlternate; } return colour; diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index ef163bffd0..33aa616c1b 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -198,7 +198,6 @@ static Widget _staffListWidgets[] = { // Enable highlighting of these staff members in map window if (WindowFindByClass(WindowClass::Map) != nullptr) { - gWindowMapFlashingFlags |= MapFlashingFlags::StaffListOpen; for (auto peep : EntityList()) { EntitySetFlashing(peep, false); diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index 52cc76ef1b..b62b44dae3 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -48,7 +48,6 @@ WindowBase* gWindowAudioExclusive; WindowCloseModifier gLastCloseModifier = { { WindowClass::Null, 0 }, CloseWindowModifier::None }; uint32_t gWindowUpdateTicks; -uint16_t gWindowMapFlashingFlags; colour_t gCurrentWindowColours[4]; // converted from uint16_t values at 0x009A41EC - 0x009A4230 diff --git a/src/openrct2/interface/Window.h b/src/openrct2/interface/Window.h index 1e58689a92..62d494f2a8 100644 --- a/src/openrct2/interface/Window.h +++ b/src/openrct2/interface/Window.h @@ -489,15 +489,6 @@ constexpr int8_t kWindowLimitReserved = 4; // Used to reserve room for the main extern WindowBase* gWindowAudioExclusive; extern uint32_t gWindowUpdateTicks; -namespace MapFlashingFlags -{ - constexpr uint16_t GuestListOpen = (1 << 0); - constexpr uint16_t FlashGuests = (1 << 1); - constexpr uint16_t StaffListOpen = (1 << 2); - constexpr uint16_t FlashStaff = (1 << 3); - constexpr uint16_t SwitchColour = (1 << 15); // Every couple ticks the colour switches -} // namespace MapFlashingFlags -extern uint16_t gWindowMapFlashingFlags; extern colour_t gCurrentWindowColours[4];