mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-16 19:43:06 +01:00
Add mapping of new colors to original colors for UI themes
This commit is contained in:
@@ -770,6 +770,55 @@ void ThemeSetColour(WindowClass wc, uint8_t index, colour_t colour)
|
||||
ThemeSave();
|
||||
}
|
||||
|
||||
// Quick and dirty mapping for new colors to original colors, until flags are extracted from color upper bits
|
||||
colour_t ThemeOverrideExtendedColour(colour_t inputColour)
|
||||
{
|
||||
switch (inputColour - COLOUR_ID_G2_OFFSET)
|
||||
{
|
||||
case COLOUR_DARK_OLIVE_DARK:
|
||||
case COLOUR_DARK_OLIVE_LIGHT:
|
||||
return COLOUR_DARK_OLIVE_GREEN;
|
||||
case COLOUR_SATURATED_BROWN_LIGHT:
|
||||
return COLOUR_LIGHT_BROWN;
|
||||
case COLOUR_BORDEAUX_RED_DARK:
|
||||
case COLOUR_BORDEAUX_RED_LIGHT:
|
||||
return COLOUR_BORDEAUX_RED;
|
||||
case COLOUR_GRASS_GREEN_DARK:
|
||||
case COLOUR_GRASS_GREEN_LIGHT:
|
||||
return COLOUR_MOSS_GREEN;
|
||||
case COLOUR_OLIVE_DARK:
|
||||
case COLOUR_OLIVE_LIGHT:
|
||||
return COLOUR_OLIVE_GREEN;
|
||||
case COLOUR_SATURATED_GREEN_LIGHT:
|
||||
return COLOUR_BRIGHT_GREEN;
|
||||
case COLOUR_TAN_DARK:
|
||||
case COLOUR_TAN_LIGHT:
|
||||
return COLOUR_SALMON_PINK;
|
||||
case COLOUR_DULL_PURPLE_LIGHT:
|
||||
return COLOUR_LIGHT_PURPLE;
|
||||
case COLOUR_DULL_GREEN_DARK:
|
||||
case COLOUR_DULL_GREEN_LIGHT:
|
||||
return COLOUR_DARK_GREEN;
|
||||
case COLOUR_SATURATED_PURPLE_DARK:
|
||||
case COLOUR_SATURATED_PURPLE_LIGHT:
|
||||
return COLOUR_BRIGHT_PURPLE;
|
||||
case COLOUR_ORANGE_LIGHT:
|
||||
return COLOUR_LIGHT_ORANGE;
|
||||
case COLOUR_AQUA_DARK:
|
||||
return COLOUR_AQUAMARINE;
|
||||
case COLOUR_MAGENTA_LIGHT:
|
||||
return COLOUR_BRIGHT_PINK;
|
||||
case COLOUR_DULL_BROWN_DARK:
|
||||
case COLOUR_DULL_BROWN_LIGHT:
|
||||
return COLOUR_DARK_BROWN;
|
||||
case COLOUR_INVISIBLE:
|
||||
case COLOUR_VOID:
|
||||
return COLOUR_BLACK;
|
||||
default:
|
||||
return inputColour;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t ThemeGetFlags()
|
||||
{
|
||||
return ThemeManager::CurrentTheme->Flags;
|
||||
|
||||
@@ -37,6 +37,7 @@ size_t ThemeGetIndexForName(const utf8* name);
|
||||
|
||||
colour_t ThemeGetColour(WindowClass wc, uint8_t index);
|
||||
void ThemeSetColour(WindowClass wc, uint8_t index, colour_t colour);
|
||||
colour_t ThemeOverrideExtendedColour(colour_t inputColour);
|
||||
uint8_t ThemeGetFlags();
|
||||
void ThemeSetFlags(uint8_t flags);
|
||||
void ThemeSave();
|
||||
|
||||
@@ -615,9 +615,10 @@ public:
|
||||
case WIDX_THEMES_LIST:
|
||||
if (selectedIndex != -1)
|
||||
{
|
||||
const auto newColour = ThemeOverrideExtendedColour(selectedIndex);
|
||||
WindowClass wc = GetWindowClassTabIndex(_colour_index_1);
|
||||
uint8_t colour = ThemeGetColour(wc, _colour_index_2);
|
||||
colour = (colour & COLOUR_FLAG_TRANSLUCENT) | selectedIndex;
|
||||
colour = (colour & COLOUR_FLAG_TRANSLUCENT) | newColour;
|
||||
ThemeSetColour(wc, _colour_index_2, colour);
|
||||
ColourSchemeUpdateAll();
|
||||
WindowInvalidateAll();
|
||||
|
||||
@@ -42,7 +42,6 @@ void ColoursInitMaps()
|
||||
// Get palette index in g1 / g2
|
||||
const auto paletteIndex = (i < COLOUR_NUM_ORIGINAL) ? SPR_PALETTE_2_START : SPR_G2_PALETTE_BEGIN - COLOUR_NUM_ORIGINAL;
|
||||
const G1Element* g1 = GfxGetG1Element(paletteIndex + i);
|
||||
//TODO: Integrate themes with G2 palettes
|
||||
if (g1 != nullptr)
|
||||
{
|
||||
ColourMapA[i].colour_0 = g1->offset[INDEX_COLOUR_0];
|
||||
|
||||
@@ -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;
|
||||
// COLOUR_ID_G2_OFFSET = PALETTE_TO_G1_OFFSET_COUNT - COLOUR_NUM_ORIGINAL
|
||||
constexpr uint8_t COLOUR_ID_G2_OFFSET = 112;
|
||||
constexpr uint8_t COLOUR_OFFSET_INVISIBLE = 166;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user