From cdccb21dd59348c4aac2d20463f3b12deca5d555 Mon Sep 17 00:00:00 2001 From: Duncan Date: Sat, 22 Apr 2023 09:58:13 +0100 Subject: [PATCH] Refactor of colours (#19998) * Move dropdown functions to dropdown code * Use a map for the colour tip * Keep dropdownidx and colour seperated * Allow number of rows to match vanilla * Apply review comment * Bump network version --- src/openrct2-ui/input/MouseInput.cpp | 123 +++++++++--------- src/openrct2-ui/interface/Dropdown.h | 3 +- src/openrct2-ui/scripting/CustomWindow.cpp | 2 +- src/openrct2-ui/windows/Banner.cpp | 3 +- src/openrct2-ui/windows/Dropdown.cpp | 88 ++++++++++++- src/openrct2-ui/windows/Ride.cpp | 14 +- src/openrct2-ui/windows/Scenery.cpp | 6 +- src/openrct2-ui/windows/Sign.cpp | 8 +- src/openrct2-ui/windows/StaffList.cpp | 2 +- src/openrct2-ui/windows/Themes.cpp | 2 +- src/openrct2/actions/BannerSetStyleAction.cpp | 2 +- src/openrct2/actions/CheatSetAction.cpp | 4 +- src/openrct2/entity/Guest.cpp | 11 +- src/openrct2/interface/Colour.cpp | 5 - src/openrct2/interface/Colour.h | 70 ---------- src/openrct2/network/NetworkBase.cpp | 2 +- 16 files changed, 174 insertions(+), 171 deletions(-) diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index 6b32baae18..b36c1307c6 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -1195,6 +1195,65 @@ void ProcessMouseTool(const ScreenCoordsXY& screenCoords) } } +const std::map kColourToTip = { + { COLOUR_BLACK, STR_COLOUR_BLACK_TIP }, + { COLOUR_GREY, STR_COLOUR_GREY_TIP }, + { COLOUR_WHITE, STR_COLOUR_WHITE_TIP }, + { COLOUR_DARK_PURPLE, STR_COLOUR_DARK_PURPLE_TIP }, + { COLOUR_LIGHT_PURPLE, STR_COLOUR_LIGHT_PURPLE_TIP }, + { COLOUR_BRIGHT_PURPLE, STR_COLOUR_BRIGHT_PURPLE_TIP }, + { COLOUR_DARK_BLUE, STR_COLOUR_DARK_BLUE_TIP }, + { COLOUR_LIGHT_BLUE, STR_COLOUR_LIGHT_BLUE_TIP }, + { COLOUR_ICY_BLUE, STR_COLOUR_ICY_BLUE_TIP }, + { COLOUR_TEAL, STR_COLOUR_TEAL_TIP }, + { COLOUR_AQUAMARINE, STR_COLOUR_AQUAMARINE_TIP }, + { COLOUR_SATURATED_GREEN, STR_COLOUR_SATURATED_GREEN_TIP }, + { COLOUR_DARK_GREEN, STR_COLOUR_DARK_GREEN_TIP }, + { COLOUR_MOSS_GREEN, STR_COLOUR_MOSS_GREEN_TIP }, + { COLOUR_BRIGHT_GREEN, STR_COLOUR_BRIGHT_GREEN_TIP }, + { COLOUR_OLIVE_GREEN, STR_COLOUR_OLIVE_GREEN_TIP }, + { COLOUR_DARK_OLIVE_GREEN, STR_COLOUR_DARK_OLIVE_GREEN_TIP }, + { COLOUR_BRIGHT_YELLOW, STR_COLOUR_BRIGHT_YELLOW_TIP }, + { COLOUR_YELLOW, STR_COLOUR_YELLOW_TIP }, + { COLOUR_DARK_YELLOW, STR_COLOUR_DARK_YELLOW_TIP }, + { COLOUR_LIGHT_ORANGE, STR_COLOUR_LIGHT_ORANGE_TIP }, + { COLOUR_DARK_ORANGE, STR_COLOUR_DARK_ORANGE_TIP }, + { COLOUR_LIGHT_BROWN, STR_COLOUR_LIGHT_BROWN_TIP }, + { COLOUR_SATURATED_BROWN, STR_COLOUR_SATURATED_BROWN_TIP }, + { COLOUR_DARK_BROWN, STR_COLOUR_DARK_BROWN_TIP }, + { COLOUR_SALMON_PINK, STR_COLOUR_SALMON_PINK_TIP }, + { COLOUR_BORDEAUX_RED, STR_COLOUR_BORDEAUX_RED_TIP }, + { COLOUR_SATURATED_RED, STR_COLOUR_SATURATED_RED_TIP }, + { COLOUR_BRIGHT_RED, STR_COLOUR_BRIGHT_RED_TIP }, + { COLOUR_DARK_PINK, STR_COLOUR_DARK_PINK_TIP }, + { COLOUR_BRIGHT_PINK, STR_COLOUR_BRIGHT_PINK_TIP }, + { COLOUR_LIGHT_PINK, STR_COLOUR_LIGHT_PINK_TIP }, + { COLOUR_DARK_OLIVE_DARK, STR_COLOUR_DARK_OLIVE_DARK_TIP }, + { COLOUR_DARK_OLIVE_LIGHT, STR_COLOUR_DARK_OLIVE_LIGHT_TIP }, + { COLOUR_SATURATED_BROWN_LIGHT, STR_COLOUR_SATURATED_BROWN_LIGHT_TIP }, + { COLOUR_BORDEAUX_RED_DARK, STR_COLOUR_BORDEAUX_RED_DARK_TIP }, + { COLOUR_BORDEAUX_RED_LIGHT, STR_COLOUR_BORDEAUX_RED_LIGHT_TIP }, + { COLOUR_GRASS_GREEN_DARK, STR_COLOUR_GRASS_GREEN_DARK_TIP }, + { COLOUR_GRASS_GREEN_LIGHT, STR_COLOUR_GRASS_GREEN_LIGHT_TIP }, + { COLOUR_OLIVE_DARK, STR_COLOUR_OLIVE_DARK_TIP }, + { COLOUR_OLIVE_LIGHT, STR_COLOUR_OLIVE_LIGHT_TIP }, + { COLOUR_SATURATED_GREEN_LIGHT, STR_COLOUR_SATURATED_GREEN_LIGHT_TIP }, + { COLOUR_TAN_DARK, STR_COLOUR_TAN_DARK_TIP }, + { COLOUR_TAN_LIGHT, STR_COLOUR_TAN_LIGHT_TIP }, + { COLOUR_DULL_PURPLE_LIGHT, STR_COLOUR_DULL_PURPLE_LIGHT_TIP }, + { COLOUR_DULL_GREEN_DARK, STR_COLOUR_DULL_GREEN_DARK_TIP }, + { COLOUR_DULL_GREEN_LIGHT, STR_COLOUR_DULL_GREEN_LIGHT_TIP }, + { COLOUR_SATURATED_PURPLE_DARK, STR_COLOUR_SATURATED_PURPLE_DARK_TIP }, + { COLOUR_SATURATED_PURPLE_LIGHT, STR_COLOUR_SATURATED_PURPLE_LIGHT_TIP }, + { COLOUR_ORANGE_LIGHT, STR_COLOUR_ORANGE_LIGHT_TIP }, + { COLOUR_AQUA_DARK, STR_COLOUR_AQUA_DARK_TIP }, + { COLOUR_MAGENTA_LIGHT, STR_COLOUR_MAGENTA_LIGHT_TIP }, + { COLOUR_DULL_BROWN_DARK, STR_COLOUR_DULL_BROWN_DARK_TIP }, + { COLOUR_DULL_BROWN_LIGHT, STR_COLOUR_DULL_BROWN_LIGHT_TIP }, + { COLOUR_INVISIBLE, STR_COLOUR_INVISIBLE_TIP }, + { COLOUR_VOID, STR_COLOUR_VOID_TIP }, +}; + /** * * rct2: 0x006E8DA7 @@ -1341,9 +1400,7 @@ void InputStateWidgetPressed( dropdown_index = gDropdownDefaultIndex; } } - WindowEventDropdownCall( - cursor_w, cursor_widgetIndex, - (gDropdownIsColour) ? ColourToPaletteIndex(dropdown_index) : dropdown_index); + WindowEventDropdownCall(cursor_w, cursor_widgetIndex, dropdown_index); } } } @@ -1414,65 +1471,7 @@ void InputStateWidgetPressed( gDropdownLastColourHover = dropdown_index; WindowTooltipClose(); - static constexpr const StringId _colourTooltips[] = { - STR_COLOUR_BLACK_TIP, - STR_COLOUR_GREY_TIP, - STR_COLOUR_WHITE_TIP, - STR_COLOUR_DARK_PURPLE_TIP, - STR_COLOUR_LIGHT_PURPLE_TIP, - STR_COLOUR_BRIGHT_PURPLE_TIP, - STR_COLOUR_DARK_BLUE_TIP, - STR_COLOUR_LIGHT_BLUE_TIP, - STR_COLOUR_ICY_BLUE_TIP, - STR_COLOUR_TEAL_TIP, - STR_COLOUR_AQUAMARINE_TIP, - STR_COLOUR_SATURATED_GREEN_TIP, - STR_COLOUR_DARK_GREEN_TIP, - STR_COLOUR_MOSS_GREEN_TIP, - STR_COLOUR_BRIGHT_GREEN_TIP, - STR_COLOUR_OLIVE_GREEN_TIP, - STR_COLOUR_DARK_OLIVE_GREEN_TIP, - STR_COLOUR_BRIGHT_YELLOW_TIP, - STR_COLOUR_YELLOW_TIP, - STR_COLOUR_DARK_YELLOW_TIP, - STR_COLOUR_LIGHT_ORANGE_TIP, - STR_COLOUR_DARK_ORANGE_TIP, - STR_COLOUR_LIGHT_BROWN_TIP, - STR_COLOUR_SATURATED_BROWN_TIP, - STR_COLOUR_DARK_BROWN_TIP, - STR_COLOUR_SALMON_PINK_TIP, - STR_COLOUR_BORDEAUX_RED_TIP, - STR_COLOUR_SATURATED_RED_TIP, - STR_COLOUR_BRIGHT_RED_TIP, - STR_COLOUR_DARK_PINK_TIP, - STR_COLOUR_BRIGHT_PINK_TIP, - STR_COLOUR_LIGHT_PINK_TIP, - STR_COLOUR_DARK_OLIVE_DARK_TIP, - STR_COLOUR_DARK_OLIVE_LIGHT_TIP, - STR_COLOUR_SATURATED_BROWN_LIGHT_TIP, - STR_COLOUR_BORDEAUX_RED_DARK_TIP, - STR_COLOUR_BORDEAUX_RED_LIGHT_TIP, - STR_COLOUR_GRASS_GREEN_DARK_TIP, - STR_COLOUR_GRASS_GREEN_LIGHT_TIP, - STR_COLOUR_OLIVE_DARK_TIP, - STR_COLOUR_OLIVE_LIGHT_TIP, - STR_COLOUR_SATURATED_GREEN_LIGHT_TIP, - STR_COLOUR_TAN_DARK_TIP, - STR_COLOUR_TAN_LIGHT_TIP, - STR_COLOUR_DULL_PURPLE_LIGHT_TIP, - STR_COLOUR_DULL_GREEN_DARK_TIP, - STR_COLOUR_DULL_GREEN_LIGHT_TIP, - STR_COLOUR_SATURATED_PURPLE_DARK_TIP, - STR_COLOUR_SATURATED_PURPLE_LIGHT_TIP, - STR_COLOUR_ORANGE_LIGHT_TIP, - STR_COLOUR_AQUA_DARK_TIP, - STR_COLOUR_MAGENTA_LIGHT_TIP, - STR_COLOUR_DULL_BROWN_DARK_TIP, - STR_COLOUR_DULL_BROWN_LIGHT_TIP, - STR_COLOUR_INVISIBLE_TIP, - STR_COLOUR_VOID_TIP, - }; - WindowTooltipShow(OpenRCT2String{ _colourTooltips[ColourToPaletteIndex(dropdown_index)], {} }, screenCoords); + WindowTooltipShow(OpenRCT2String{ kColourToTip.at(ColourDropDownIndexToColour(dropdown_index)), {} }, screenCoords); } if (dropdown_index < Dropdown::ItemsMaxSize && Dropdown::IsDisabled(dropdown_index)) diff --git a/src/openrct2-ui/interface/Dropdown.h b/src/openrct2-ui/interface/Dropdown.h index 174462d250..86ceaeb95d 100644 --- a/src/openrct2-ui/interface/Dropdown.h +++ b/src/openrct2-ui/interface/Dropdown.h @@ -59,6 +59,8 @@ void WindowDropdownShowColourAvailable( uint32_t DropdownGetAppropriateImageDropdownItemsPerRow(uint32_t numItems); bool WindowDropDownHasMultipleColumns(size_t numItems); +colour_t ColourDropDownIndexToColour(uint8_t ddidx); + namespace Dropdown { enum class ItemFlag : uint8_t @@ -134,5 +136,4 @@ namespace Dropdown return true; } - } // namespace Dropdown diff --git a/src/openrct2-ui/scripting/CustomWindow.cpp b/src/openrct2-ui/scripting/CustomWindow.cpp index dacc2fe7c3..a8f5bc2586 100644 --- a/src/openrct2-ui/scripting/CustomWindow.cpp +++ b/src/openrct2-ui/scripting/CustomWindow.cpp @@ -680,7 +680,7 @@ namespace OpenRCT2::Ui::Windows { if (widgetDesc->Type == "colourpicker") { - UpdateWidgetColour(this, widgetIndex, dropdownIndex); + UpdateWidgetColour(this, widgetIndex, ColourDropDownIndexToColour(dropdownIndex)); } else if (widgetDesc->Type == "dropdown") { diff --git a/src/openrct2-ui/windows/Banner.cpp b/src/openrct2-ui/windows/Banner.cpp index 11b2ba75e3..f61ef7e7c6 100644 --- a/src/openrct2-ui/windows/Banner.cpp +++ b/src/openrct2-ui/windows/Banner.cpp @@ -226,7 +226,8 @@ public: if (dropdownIndex == -1) break; - auto bannerSetStyle = BannerSetStyleAction(BannerSetStyleType::PrimaryColour, GetBannerIndex(), dropdownIndex); + auto bannerSetStyle = BannerSetStyleAction( + BannerSetStyleType::PrimaryColour, GetBannerIndex(), ColourDropDownIndexToColour(dropdownIndex)); GameActions::Execute(&bannerSetStyle); break; } diff --git a/src/openrct2-ui/windows/Dropdown.cpp b/src/openrct2-ui/windows/Dropdown.cpp index 9902964a7e..52a49aacdf 100644 --- a/src/openrct2-ui/windows/Dropdown.cpp +++ b/src/openrct2-ui/windows/Dropdown.cpp @@ -28,11 +28,13 @@ constexpr int32_t DROPDOWN_TEXT_MAX_ROWS = 32; constexpr int32_t DROPDOWN_ITEM_HEIGHT = 12; -static constexpr const uint8_t _appropriateImageDropdownItemsPerRow[34] = { +static constexpr const std::array _appropriateImageDropdownItemsPerRow = { 1, 1, 1, 1, 2, 2, 3, 3, 4, 3, // 10 5, 4, 4, 5, 5, 5, 4, 5, 6, 5, // 20 5, 7, 4, 5, 6, 5, 6, 6, 6, 6, // 30 - 6, 8, 9, 8, // 34 + 6, 8, 8, 8, 9, 9, 9, 9, 9, 9, // 40 + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 50 + 9, 9, 9, 9, 9, 9, 9, // 56 }; enum @@ -443,6 +445,79 @@ int32_t DropdownIndexFromPoint(const ScreenCoordsXY& loc, WindowBase* w) return -1; } +// clang-format off +// colour_t ordered for use in color dropdown +static constexpr colour_t kColoursDropdownOrder[] = { + COLOUR_BLACK, + COLOUR_SATURATED_RED, + COLOUR_DARK_ORANGE, + COLOUR_DARK_YELLOW, + COLOUR_GRASS_GREEN_DARK, + COLOUR_SATURATED_GREEN, + COLOUR_AQUA_DARK, + COLOUR_DARK_BLUE, + COLOUR_SATURATED_PURPLE_DARK, + + COLOUR_GREY, + COLOUR_BRIGHT_RED, + COLOUR_LIGHT_ORANGE, + COLOUR_YELLOW, + COLOUR_MOSS_GREEN, + COLOUR_BRIGHT_GREEN, + COLOUR_TEAL, + COLOUR_LIGHT_BLUE, + COLOUR_BRIGHT_PURPLE, + + COLOUR_WHITE, + COLOUR_LIGHT_PINK, + COLOUR_ORANGE_LIGHT, + COLOUR_BRIGHT_YELLOW, + COLOUR_GRASS_GREEN_LIGHT, + COLOUR_SATURATED_GREEN_LIGHT, + COLOUR_AQUAMARINE, + COLOUR_ICY_BLUE, + COLOUR_SATURATED_PURPLE_LIGHT, + + COLOUR_DULL_BROWN_DARK, + COLOUR_BORDEAUX_RED_DARK, + COLOUR_TAN_DARK, + COLOUR_SATURATED_BROWN, + COLOUR_DARK_OLIVE_DARK, + COLOUR_OLIVE_DARK, + COLOUR_DULL_GREEN_DARK, + COLOUR_DARK_PURPLE, + COLOUR_DARK_PINK, + + COLOUR_DARK_BROWN, + COLOUR_BORDEAUX_RED, + COLOUR_SALMON_PINK, + COLOUR_LIGHT_BROWN, + COLOUR_DARK_OLIVE_GREEN, + COLOUR_OLIVE_GREEN, + COLOUR_DARK_GREEN, + COLOUR_LIGHT_PURPLE, + COLOUR_BRIGHT_PINK, + + COLOUR_DULL_BROWN_LIGHT, + COLOUR_BORDEAUX_RED_LIGHT, + COLOUR_TAN_LIGHT, + COLOUR_SATURATED_BROWN_LIGHT, + COLOUR_DARK_OLIVE_LIGHT, + COLOUR_OLIVE_LIGHT, + COLOUR_DULL_GREEN_LIGHT, + COLOUR_DULL_PURPLE_LIGHT, + COLOUR_MAGENTA_LIGHT, + + COLOUR_INVISIBLE, + COLOUR_VOID +}; +// clang-format on + +colour_t ColourDropDownIndexToColour(uint8_t ddidx) +{ + return kColoursDropdownOrder[ddidx]; +} + /** * rct2: 0x006ED43D */ @@ -454,7 +529,7 @@ void WindowDropdownShowColour(WindowBase* w, Widget* widget, uint8_t dropdownCol // Set items for (uint64_t i = 0; i < numColours; i++) { - auto orderedColour = ColourToPaletteIndex(i); + auto orderedColour = ColourDropDownIndexToColour(i); if (selectedColour == orderedColour) defaultIndex = i; @@ -469,7 +544,8 @@ void WindowDropdownShowColour(WindowBase* w, Widget* widget, uint8_t dropdownCol // Show dropdown WindowDropdownShowImage( w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->height() + 1, dropdownColour, - Dropdown::Flag::StayOpen, numColours, 12, 12, _appropriateImageDropdownItemsPerRow[COLOUR_NUM_ORIGINAL]); + Dropdown::Flag::StayOpen, numColours, 12, 12, + DropdownGetAppropriateImageDropdownItemsPerRow(static_cast(numColours))); gDropdownIsColour = true; gDropdownLastColourHover = -1; @@ -478,7 +554,9 @@ void WindowDropdownShowColour(WindowBase* w, Widget* widget, uint8_t dropdownCol uint32_t DropdownGetAppropriateImageDropdownItemsPerRow(uint32_t numItems) { - return numItems < std::size(_appropriateImageDropdownItemsPerRow) ? _appropriateImageDropdownItemsPerRow[numItems] : 8; + // If above the table size return the last element + return _appropriateImageDropdownItemsPerRow[std::min( + numItems, static_cast(std::size(_appropriateImageDropdownItemsPerRow) - 1))]; } bool WindowDropDownHasMultipleColumns(size_t numItems) diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index aa6c9b94d3..4d9bbf2aca 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -4541,21 +4541,22 @@ static void WindowRideColourDropdown(WindowBase* w, WidgetIndex widgetIndex, int case WIDX_TRACK_MAIN_COLOUR: { auto rideSetAppearanceAction = RideSetAppearanceAction( - rideId, RideSetAppearanceType::TrackColourMain, dropdownIndex, w->ride_colour); + rideId, RideSetAppearanceType::TrackColourMain, ColourDropDownIndexToColour(dropdownIndex), w->ride_colour); GameActions::Execute(&rideSetAppearanceAction); } break; case WIDX_TRACK_ADDITIONAL_COLOUR: { auto rideSetAppearanceAction = RideSetAppearanceAction( - rideId, RideSetAppearanceType::TrackColourAdditional, dropdownIndex, w->ride_colour); + rideId, RideSetAppearanceType::TrackColourAdditional, ColourDropDownIndexToColour(dropdownIndex), + w->ride_colour); GameActions::Execute(&rideSetAppearanceAction); } break; case WIDX_TRACK_SUPPORT_COLOUR: { auto rideSetAppearanceAction = RideSetAppearanceAction( - rideId, RideSetAppearanceType::TrackColourSupports, dropdownIndex, w->ride_colour); + rideId, RideSetAppearanceType::TrackColourSupports, ColourDropDownIndexToColour(dropdownIndex), w->ride_colour); GameActions::Execute(&rideSetAppearanceAction); } break; @@ -4607,21 +4608,22 @@ static void WindowRideColourDropdown(WindowBase* w, WidgetIndex widgetIndex, int case WIDX_VEHICLE_BODY_COLOUR: { auto rideSetAppearanceAction = RideSetAppearanceAction( - rideId, RideSetAppearanceType::VehicleColourBody, dropdownIndex, w->vehicleIndex); + rideId, RideSetAppearanceType::VehicleColourBody, ColourDropDownIndexToColour(dropdownIndex), w->vehicleIndex); GameActions::Execute(&rideSetAppearanceAction); } break; case WIDX_VEHICLE_TRIM_COLOUR: { auto rideSetAppearanceAction = RideSetAppearanceAction( - rideId, RideSetAppearanceType::VehicleColourTrim, dropdownIndex, w->vehicleIndex); + rideId, RideSetAppearanceType::VehicleColourTrim, ColourDropDownIndexToColour(dropdownIndex), w->vehicleIndex); GameActions::Execute(&rideSetAppearanceAction); } break; case WIDX_VEHICLE_TERNARY_COLOUR: { auto rideSetAppearanceAction = RideSetAppearanceAction( - rideId, RideSetAppearanceType::VehicleColourTernary, dropdownIndex, w->vehicleIndex); + rideId, RideSetAppearanceType::VehicleColourTernary, ColourDropDownIndexToColour(dropdownIndex), + w->vehicleIndex); GameActions::Execute(&rideSetAppearanceAction); } break; diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index eb2b994df1..6ead14eacc 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -351,15 +351,15 @@ public: if (widgetIndex == WIDX_SCENERY_PRIMARY_COLOUR_BUTTON) { - gWindowSceneryPrimaryColour = static_cast(dropdownIndex); + gWindowSceneryPrimaryColour = ColourDropDownIndexToColour(dropdownIndex); } else if (widgetIndex == WIDX_SCENERY_SECONDARY_COLOUR_BUTTON) { - gWindowScenerySecondaryColour = static_cast(dropdownIndex); + gWindowScenerySecondaryColour = ColourDropDownIndexToColour(dropdownIndex); } else if (widgetIndex == WIDX_SCENERY_TERTIARY_COLOUR_BUTTON) { - gWindowSceneryTertiaryColour = static_cast(dropdownIndex); + gWindowSceneryTertiaryColour = ColourDropDownIndexToColour(dropdownIndex); } Invalidate(); diff --git a/src/openrct2-ui/windows/Sign.cpp b/src/openrct2-ui/windows/Sign.cpp index 4833c688fa..1676732317 100644 --- a/src/openrct2-ui/windows/Sign.cpp +++ b/src/openrct2-ui/windows/Sign.cpp @@ -209,8 +209,8 @@ public: { if (dropdownIndex == -1) return; - _mainColour = dropdownIndex; - auto signSetStyleAction = SignSetStyleAction(GetBannerIndex(), dropdownIndex, _textColour, !_isSmall); + _mainColour = ColourDropDownIndexToColour(dropdownIndex); + auto signSetStyleAction = SignSetStyleAction(GetBannerIndex(), _mainColour, _textColour, !_isSmall); GameActions::Execute(&signSetStyleAction); break; } @@ -218,8 +218,8 @@ public: { if (dropdownIndex == -1) return; - _textColour = dropdownIndex; - auto signSetStyleAction = SignSetStyleAction(GetBannerIndex(), _mainColour, dropdownIndex, !_isSmall); + _textColour = ColourDropDownIndexToColour(dropdownIndex); + auto signSetStyleAction = SignSetStyleAction(GetBannerIndex(), _mainColour, _textColour, !_isSmall); GameActions::Execute(&signSetStyleAction); break; } diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index 97412f3710..de9d280e9a 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -239,7 +239,7 @@ public: { if (widgetIndex == WIDX_STAFF_LIST_UNIFORM_COLOUR_PICKER) { - auto action = StaffSetColourAction(GetSelectedStaffType(), dropdownIndex); + auto action = StaffSetColourAction(GetSelectedStaffType(), ColourDropDownIndexToColour(dropdownIndex)); GameActions::Execute(&action); } } diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index 40f82d01e4..d24f80b4ce 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -615,7 +615,7 @@ public: case WIDX_THEMES_LIST: if (selectedIndex != -1) { - const auto newColour = ThemeOverrideExtendedColour(selectedIndex); + const auto newColour = ThemeOverrideExtendedColour(ColourDropDownIndexToColour(selectedIndex)); WindowClass wc = GetWindowClassTabIndex(_colour_index_1); uint8_t colour = ThemeGetColour(wc, _colour_index_2); colour = (colour & COLOUR_FLAG_TRANSLUCENT) | newColour; diff --git a/src/openrct2/actions/BannerSetStyleAction.cpp b/src/openrct2/actions/BannerSetStyleAction.cpp index 203a68fbd6..766004afb3 100644 --- a/src/openrct2/actions/BannerSetStyleAction.cpp +++ b/src/openrct2/actions/BannerSetStyleAction.cpp @@ -68,7 +68,7 @@ GameActions::Result BannerSetStyleAction::Query() const switch (_type) { case BannerSetStyleType::PrimaryColour: - if (_parameter > 31) + if (_parameter > COLOUR_COUNT) { LOG_ERROR("Invalid primary colour: colour = %u", _parameter); return GameActions::Result(GameActions::Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_NONE); diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index 22cb5ecc53..259615b1c0 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -611,12 +611,12 @@ void CheatSetAction::GiveObjectToGuests(int32_t object) const break; case OBJECT_BALLOON: peep->GiveItem(ShopItem::Balloon); - peep->BalloonColour = ColourToPaletteIndex(ScenarioRandMax(COLOUR_NUM_NORMAL)); + peep->BalloonColour = ScenarioRandMax(COLOUR_NUM_NORMAL); peep->UpdateSpriteType(); break; case OBJECT_UMBRELLA: peep->GiveItem(ShopItem::Umbrella); - peep->UmbrellaColour = ColourToPaletteIndex(ScenarioRandMax(COLOUR_NUM_NORMAL)); + peep->UmbrellaColour = ScenarioRandMax(COLOUR_NUM_NORMAL); peep->UpdateSpriteType(); break; } diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index 9aed1e9a94..a53e996631 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -1619,19 +1619,16 @@ bool Guest::DecideAndBuyItem(Ride& ride, ShopItem shopItem, money64 price) const auto hasRandomShopColour = ride.HasLifecycleFlag(RIDE_LIFECYCLE_RANDOM_SHOP_COLOURS); if (shopItem == ShopItem::TShirt) - TshirtColour = hasRandomShopColour ? ColourToPaletteIndex(ScenarioRandMax(COLOUR_NUM_NORMAL)) - : ride.track_colour[0].main; + TshirtColour = hasRandomShopColour ? ScenarioRandMax(COLOUR_NUM_NORMAL) : ride.track_colour[0].main; if (shopItem == ShopItem::Hat) - HatColour = hasRandomShopColour ? ColourToPaletteIndex(ScenarioRandMax(COLOUR_NUM_NORMAL)) : ride.track_colour[0].main; + HatColour = hasRandomShopColour ? ScenarioRandMax(COLOUR_NUM_NORMAL) : ride.track_colour[0].main; if (shopItem == ShopItem::Balloon) - BalloonColour = hasRandomShopColour ? ColourToPaletteIndex(ScenarioRandMax(COLOUR_NUM_NORMAL)) - : ride.track_colour[0].main; + BalloonColour = hasRandomShopColour ? ScenarioRandMax(COLOUR_NUM_NORMAL) : ride.track_colour[0].main; if (shopItem == ShopItem::Umbrella) - UmbrellaColour = hasRandomShopColour ? ColourToPaletteIndex(ScenarioRandMax(COLOUR_NUM_NORMAL)) - : ride.track_colour[0].main; + UmbrellaColour = hasRandomShopColour ? ScenarioRandMax(COLOUR_NUM_NORMAL) : ride.track_colour[0].main; if (shopItem == ShopItem::Map) ResetPathfindGoal(); diff --git a/src/openrct2/interface/Colour.cpp b/src/openrct2/interface/Colour.cpp index d70f1d0a39..db80e464de 100644 --- a/src/openrct2/interface/Colour.cpp +++ b/src/openrct2/interface/Colour.cpp @@ -129,11 +129,6 @@ namespace Colour } // namespace Colour -uint8_t ColourToPaletteIndex(colour_t colour) -{ - return COLOUR_USABLE_ORDER[colour]; -} - #ifndef NO_TTF static uint8_t BlendColourMap[PALETTE_COUNT][PALETTE_COUNT] = { 0 }; diff --git a/src/openrct2/interface/Colour.h b/src/openrct2/interface/Colour.h index 0cbe6e4563..ca5b24914d 100644 --- a/src/openrct2/interface/Colour.h +++ b/src/openrct2/interface/Colour.h @@ -185,74 +185,6 @@ enum : PaletteIndex PALETTE_INDEX_254 = 254, // Primary remap 11 }; -// clang-format off -// colour_t ordered for use in color dropdown -static constexpr colour_t COLOUR_USABLE_ORDER[] = { - COLOUR_BLACK, - COLOUR_SATURATED_RED, - COLOUR_DARK_ORANGE, - COLOUR_DARK_YELLOW, - COLOUR_GRASS_GREEN_DARK, - COLOUR_SATURATED_GREEN, - COLOUR_AQUA_DARK, - COLOUR_DARK_BLUE, - COLOUR_SATURATED_PURPLE_DARK, - - COLOUR_GREY, - COLOUR_BRIGHT_RED, - COLOUR_LIGHT_ORANGE, - COLOUR_YELLOW, - COLOUR_MOSS_GREEN, - COLOUR_BRIGHT_GREEN, - COLOUR_TEAL, - COLOUR_LIGHT_BLUE, - COLOUR_BRIGHT_PURPLE, - - COLOUR_WHITE, - COLOUR_LIGHT_PINK, - COLOUR_ORANGE_LIGHT, - COLOUR_BRIGHT_YELLOW, - COLOUR_GRASS_GREEN_LIGHT, - COLOUR_SATURATED_GREEN_LIGHT, - COLOUR_AQUAMARINE, - COLOUR_ICY_BLUE, - COLOUR_SATURATED_PURPLE_LIGHT, - - COLOUR_DULL_BROWN_DARK, - COLOUR_BORDEAUX_RED_DARK, - COLOUR_TAN_DARK, - COLOUR_SATURATED_BROWN, - COLOUR_DARK_OLIVE_DARK, - COLOUR_OLIVE_DARK, - COLOUR_DULL_GREEN_DARK, - COLOUR_DARK_PURPLE, - COLOUR_DARK_PINK, - - COLOUR_DARK_BROWN, - COLOUR_BORDEAUX_RED, - COLOUR_SALMON_PINK, - COLOUR_LIGHT_BROWN, - COLOUR_DARK_OLIVE_GREEN, - COLOUR_OLIVE_GREEN, - COLOUR_DARK_GREEN, - COLOUR_LIGHT_PURPLE, - COLOUR_BRIGHT_PINK, - - COLOUR_DULL_BROWN_LIGHT, - COLOUR_BORDEAUX_RED_LIGHT, - COLOUR_TAN_LIGHT, - COLOUR_SATURATED_BROWN_LIGHT, - COLOUR_DARK_OLIVE_LIGHT, - COLOUR_OLIVE_LIGHT, - COLOUR_DULL_GREEN_LIGHT, - COLOUR_DULL_PURPLE_LIGHT, - COLOUR_MAGENTA_LIGHT, - - COLOUR_INVISIBLE, - COLOUR_VOID -}; -// clang-format on - constexpr size_t PALETTE_COUNT = 256; constexpr uint8_t PALETTE_OFFSET_DYNAMIC = PALETTE_INDEX_10; @@ -317,8 +249,6 @@ namespace Colour colour_t FromString(std::string_view s, colour_t defaultValue = COLOUR_BLACK); } -uint8_t ColourToPaletteIndex(colour_t colour); - #ifndef NO_TTF uint8_t BlendColours(const uint8_t paletteIndex1, const uint8_t paletteIndex2); #endif diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 3bf494f91b..05ec9980d0 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -43,7 +43,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -#define NETWORK_STREAM_VERSION "13" +#define NETWORK_STREAM_VERSION "14" #define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION