mirror of https://github.com/OpenRCT2/OpenRCT2.git
Simplify map flashing flags and move into map
This commit is contained in:
parent
4810a72232
commit
f6c34ddd59
|
@ -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();
|
||||
|
|
|
@ -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<int32_t>(_selectedTab));
|
||||
|
||||
gWindowMapFlashingFlags |= MapFlashingFlags::GuestListOpen;
|
||||
}
|
||||
|
||||
void OnMouseUp(WidgetIndex widgetIndex) override
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<Staff>())
|
||||
{
|
||||
EntitySetFlashing(peep, false);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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];
|
||||
|
||||
|
|
Loading…
Reference in New Issue