From 3508b00c42f35c2a2f4b413fe8ac8afd0fc81903 Mon Sep 17 00:00:00 2001 From: Trevor Finney <8711258+finneyt@users.noreply.github.com> Date: Mon, 20 Feb 2023 17:55:03 -0500 Subject: [PATCH] New colors almost work --- src/openrct2-ui/input/MouseInput.cpp | 7 +++- src/openrct2-ui/windows/Dropdown.cpp | 27 ++++++++------- src/openrct2/drawing/Drawing.h | 51 +++++++++++++++------------- src/openrct2/interface/Colour.cpp | 2 +- src/openrct2/interface/Colour.h | 1 + src/openrct2/sprites.h | 4 +-- 6 files changed, 52 insertions(+), 40 deletions(-) diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index ff25caae34..f427f7634e 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -1473,7 +1473,12 @@ void InputStateWidgetPressed( STR_COLOUR_INVISIBLE_TIP, STR_COLOUR_VOID_TIP, }; - WindowTooltipShow(OpenRCT2String{ _colourTooltips[COLOUR_UI_ORDER[dropdown_index]], {} }, screenCoords); + auto stringId = COLOUR_UI_ORDER[dropdown_index]; + if (stringId > COLOUR_NUM_ORIGINAL) + { + stringId -= COLOUR_ID_G2_OFFSET; + } + WindowTooltipShow(OpenRCT2String{ _colourTooltips[stringId], {} }, screenCoords); } if (dropdown_index < Dropdown::ItemsMaxSize && Dropdown::IsDisabled(dropdown_index)) diff --git a/src/openrct2-ui/windows/Dropdown.cpp b/src/openrct2-ui/windows/Dropdown.cpp index 561859ed04..716b162051 100644 --- a/src/openrct2-ui/windows/Dropdown.cpp +++ b/src/openrct2-ui/windows/Dropdown.cpp @@ -37,13 +37,13 @@ static constexpr const uint8_t _appropriateImageDropdownItemsPerRow[34] = { // Map of color picker index to true color index static constexpr uint8_t COLOUR_UI_ORDER[] = { - 0, 3, 47, 6, 50, 45, 11, 37, 39, - 1, 4, 5, 7, 9, 12, 14, 13, 15, - 2, 44, 48, 8, 10, 46, 41, 38, 40, - 29, 27, 35, 42, 23, 52, 21, 19, 32, - 30, 28, 26, 25, 22, 24, 20, 18, 16, - 51, 31, 36, 43, 34, 53, 49, 17, 33, - 54, 55 + 0, 3, 159, 6, 162, 157, 11, 149, 151, + 1, 4, 5, 7, 9, 12, 14, 13, 15, + 2, 156, 160, 8, 10, 158, 153, 150, 152, + 29, 27, 147, 154, 23, 164, 21, 19, 144, + 30, 28, 26, 25, 22, 24, 20, 18, 16, + 163, 31, 148, 155, 146, 165, 161, 17, 145, + 166, 167 }; @@ -466,12 +466,15 @@ void WindowDropdownShowColour(WindowBase* w, Widget* widget, uint8_t dropdownCol // Set items for (uint64_t i = 0; i < numColours; i++) { - if (selectedColour == COLOUR_UI_ORDER[i]) - defaultIndex = selectedColour; + auto orderedColour = COLOUR_UI_ORDER[i]; + if (selectedColour == orderedColour) + defaultIndex = orderedColour; - // Use special graphic for Invisible color - auto imageId = (i == COLOUR_INVISIBLE) ? ImageId(SPR_G2_ICON_PALETTE_INVISIBLE, COLOUR_BORDEAUX_RED) - : ImageId(SPR_PALETTE_BTN, COLOUR_UI_ORDER[i]); + // Get palette offset for G2 colours + + // Use special graphic for Invisible colour + //auto imageId = (orderedColour == FilterPaletteID::PaletteG2Invisible) ? ImageId(SPR_G2_ICON_PALETTE_INVISIBLE, COLOUR_BORDEAUX_RED) + auto imageId = ImageId(SPR_PALETTE_BTN, orderedColour); gDropdownItems[i].Format = Dropdown::FormatColourPicker; gDropdownItems[i].Args = (i << 32) | imageId.ToUInt32(); diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 09ab4ccf0f..0d5b0555b3 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -296,30 +296,33 @@ enum class FilterPaletteID : int32_t PaletteGlassDarkPink = PaletteGlass + COLOUR_DARK_PINK, PaletteGlassBrightPink = PaletteGlass + COLOUR_BRIGHT_PINK, PaletteGlassLightPink = PaletteGlass + COLOUR_LIGHT_PINK, - PaletteGlassDarkOliveDark = PaletteGlass + COLOUR_DARK_OLIVE_DARK, - PaletteGlassDarkOliveLight = PaletteGlass + COLOUR_DARK_OLIVE_LIGHT, - PaletteGlassSaturatedBrownLight = PaletteGlass + COLOUR_SATURATED_BROWN_LIGHT, - PaletteGlassBordeauxRedDark = PaletteGlass + COLOUR_BORDEAUX_RED_DARK, - PaletteGlassBordeauxRedLight = PaletteGlass + COLOUR_BORDEAUX_RED_LIGHT, - PaletteGlassGrassGreenDark = PaletteGlass + COLOUR_GRASS_GREEN_DARK, - PaletteGlassGrassGreenLight = PaletteGlass + COLOUR_GRASS_GREEN_LIGHT, - PaletteGlassOliveDark = PaletteGlass + COLOUR_OLIVE_DARK, - PaletteGlassOliveLight = PaletteGlass + COLOUR_OLIVE_LIGHT, - PaletteGlassSaturatedGreenLight = PaletteGlass + COLOUR_SATURATED_GREEN_LIGHT, - PaletteGlassTanDark = PaletteGlass + COLOUR_TAN_DARK, - PaletteGlassTanLight = PaletteGlass + COLOUR_TAN_LIGHT, - PaletteGlassDullPurpleLight = PaletteGlass + COLOUR_DULL_PURPLE_LIGHT, - PaletteGlassDullGreenDark = PaletteGlass + COLOUR_DULL_GREEN_DARK, - PaletteGlassDullGreenLight = PaletteGlass + COLOUR_DULL_GREEN_LIGHT, - PaletteGlassSaturatedPurpleDark = PaletteGlass + COLOUR_SATURATED_PURPLE_DARK, - PaletteGlassSaturatedPurpleLight = PaletteGlass + COLOUR_SATURATED_PURPLE_LIGHT, - PaletteGlassOrangeLight = PaletteGlass + COLOUR_ORANGE_LIGHT, - PaletteGlassAquaDark = PaletteGlass + COLOUR_AQUA_DARK, - PaletteGlassMagentaLight = PaletteGlass + COLOUR_MAGENTA_LIGHT, - PaletteGlassDullBrownDark = PaletteGlass + COLOUR_DULL_BROWN_DARK, - PaletteGlassDullBrownLight = PaletteGlass + COLOUR_DULL_BROWN_LIGHT, - PaletteGlassInvisible = PaletteGlass + COLOUR_INVISIBLE, - PaletteGlassVoid = PaletteGlass + COLOUR_VOID, + PaletteG2 = 144, + PaletteG2Invisible = 166, + PaletteGlassG2 = 168, + PaletteGlassDarkOliveDark = PaletteGlassG2, + PaletteGlassDarkOliveLight, + PaletteGlassSaturatedBrownLight, + PaletteGlassBordeauxRedDark, + PaletteGlassBordeauxRedLight, + PaletteGlassGrassGreenDark, + PaletteGlassGrassGreenLight, + PaletteGlassOliveDark, + PaletteGlassOliveLight, + PaletteGlassSaturatedGreenLight, + PaletteGlassTanDark, + PaletteGlassTanLight, + PaletteGlassDullPurpleLight, + PaletteGlassDullGreenDark, + PaletteGlassDullGreenLight, + PaletteGlassSaturatedPurpleDark, + PaletteGlassSaturatedPurpleLight, + PaletteGlassOrangeLight, + PaletteGlassAquaDark, + PaletteGlassMagentaLight, + PaletteGlassDullBrownDark, + PaletteGlassDullBrownLight, + PaletteGlassInvisible, + PaletteGlassVoid, }; struct TranslucentWindowPalette diff --git a/src/openrct2/interface/Colour.cpp b/src/openrct2/interface/Colour.cpp index 62b723f65b..fa0e723b24 100644 --- a/src/openrct2/interface/Colour.cpp +++ b/src/openrct2/interface/Colour.cpp @@ -40,7 +40,7 @@ void ColoursInitMaps() for (int32_t i = 0; i < COLOUR_COUNT; i++) { // Get palette index in g1 / g2 - auto paletteIndex = (i < COLOUR_NUM_ORIGINAL) ? SPR_PALETTE_2_START : SPR_G2_PALETTE_BEGIN - (COLOUR_NUM_ORIGINAL - 1); + auto paletteIndex = (i < COLOUR_NUM_ORIGINAL) ? SPR_PALETTE_2_START : SPR_G2_PALETTE_BEGIN - COLOUR_NUM_ORIGINAL; const G1Element* g1 = GfxGetG1Element(paletteIndex + i); if (g1 != nullptr) { diff --git a/src/openrct2/interface/Colour.h b/src/openrct2/interface/Colour.h index 44fe60f23c..52d1b3b3c8 100644 --- a/src/openrct2/interface/Colour.h +++ b/src/openrct2/interface/Colour.h @@ -205,6 +205,7 @@ constexpr uint8_t PALETTE_LENGTH_ANIMATED = 16; constexpr uint8_t COLOUR_NUM_ORIGINAL = 32; constexpr uint8_t COLOUR_NUM_NORMAL = 54; +constexpr uint8_t COLOUR_ID_G2_OFFSET = 112; #define TEXT_COLOUR_254 (254) #define TEXT_COLOUR_255 (255) diff --git a/src/openrct2/sprites.h b/src/openrct2/sprites.h index 76eba2ebbd..7e38d5b1c0 100644 --- a/src/openrct2/sprites.h +++ b/src/openrct2/sprites.h @@ -1365,8 +1365,8 @@ enum SPR_G2_ALPINE_END = SPR_G2_ALPINE_LIFT_TRACK_GENTLE_DIAGONAL + 12, SPR_G2_ICON_PALETTE_INVISIBLE, - SPR_G2_PALETTE_BEGIN = SPR_G2_ICON_PALETTE_INVISIBLE, - SPR_G2_PAL_REMAP_DARK_OLIVE_DARK, + SPR_G2_PALETTE_BEGIN, + SPR_G2_PAL_REMAP_DARK_OLIVE_DARK = SPR_G2_PALETTE_BEGIN, SPR_G2_PAL_REMAP_DARK_OLIVE_LIGHT, SPR_G2_PAL_REMAP_SATURATED_BROWN_LIGHT, SPR_G2_PAL_REMAP_BORDEAUX_RED_DARK,