Setup for extended palette
@@ -3653,6 +3653,31 @@ STR_6548 :Show railings at junction
|
||||
STR_6549 :Compatibility objects cannot be selected!
|
||||
STR_6550 :This entry is included for backwards compatibility with old or damaged objects. It cannot be selected, only deselected.
|
||||
|
||||
STR_6551 :Army green
|
||||
STR_6552 :Honeydew
|
||||
STR_6553 :Tan
|
||||
STR_6554 :Maroon
|
||||
STR_6555 :Coral Pink
|
||||
STR_6556 :Forest green
|
||||
STR_6557 :Chartreuse
|
||||
STR_6558 :Hunter green
|
||||
STR_6559 :Celadon
|
||||
STR_6560 :Lime green
|
||||
STR_6561 :Sepia
|
||||
STR_6562 :Peach
|
||||
STR_6563 :Lilac
|
||||
STR_6564 :Viridian
|
||||
STR_6565 :Seafoam green
|
||||
STR_6566 :Violet
|
||||
STR_6567 :Lavender
|
||||
STR_6568 :Pastel orange
|
||||
STR_6569 :Deep water
|
||||
STR_6570 :Pastel pink
|
||||
STR_6571 :Umber
|
||||
STR_6572 :Beige
|
||||
STR_6573 :Invisible
|
||||
STR_6574 :Void
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
################
|
||||
|
||||
BIN
resources/g2/palette_map/palette_map_aqua_dark.png
Normal file
|
After Width: | Height: | Size: 608 B |
BIN
resources/g2/palette_map/palette_map_bordeaux_red_dark.png
Normal file
|
After Width: | Height: | Size: 615 B |
BIN
resources/g2/palette_map/palette_map_bordeaux_red_light.png
Normal file
|
After Width: | Height: | Size: 605 B |
BIN
resources/g2/palette_map/palette_map_dark_olive_dark.png
Normal file
|
After Width: | Height: | Size: 617 B |
BIN
resources/g2/palette_map/palette_map_dark_olive_light.png
Normal file
|
After Width: | Height: | Size: 616 B |
BIN
resources/g2/palette_map/palette_map_dull_brown_dark.png
Normal file
|
After Width: | Height: | Size: 617 B |
BIN
resources/g2/palette_map/palette_map_dull_brown_light.png
Normal file
|
After Width: | Height: | Size: 609 B |
BIN
resources/g2/palette_map/palette_map_dull_green_dark.png
Normal file
|
After Width: | Height: | Size: 618 B |
BIN
resources/g2/palette_map/palette_map_dull_green_light.png
Normal file
|
After Width: | Height: | Size: 614 B |
BIN
resources/g2/palette_map/palette_map_dull_purple_light.png
Normal file
|
After Width: | Height: | Size: 612 B |
BIN
resources/g2/palette_map/palette_map_grass_green_dark.png
Normal file
|
After Width: | Height: | Size: 609 B |
BIN
resources/g2/palette_map/palette_map_grass_green_light.png
Normal file
|
After Width: | Height: | Size: 615 B |
BIN
resources/g2/palette_map/palette_map_invisible.png
Normal file
|
After Width: | Height: | Size: 602 B |
BIN
resources/g2/palette_map/palette_map_magenta_light.png
Normal file
|
After Width: | Height: | Size: 607 B |
BIN
resources/g2/palette_map/palette_map_olive_dark.png
Normal file
|
After Width: | Height: | Size: 608 B |
BIN
resources/g2/palette_map/palette_map_olive_light.png
Normal file
|
After Width: | Height: | Size: 611 B |
BIN
resources/g2/palette_map/palette_map_orange_light.png
Normal file
|
After Width: | Height: | Size: 607 B |
BIN
resources/g2/palette_map/palette_map_saturated_brown_light.png
Normal file
|
After Width: | Height: | Size: 614 B |
BIN
resources/g2/palette_map/palette_map_saturated_green_light.png
Normal file
|
After Width: | Height: | Size: 609 B |
BIN
resources/g2/palette_map/palette_map_saturated_purple_dark.png
Normal file
|
After Width: | Height: | Size: 609 B |
BIN
resources/g2/palette_map/palette_map_saturated_purple_light.png
Normal file
|
After Width: | Height: | Size: 609 B |
BIN
resources/g2/palette_map/palette_map_tan_dark.png
Normal file
|
After Width: | Height: | Size: 620 B |
BIN
resources/g2/palette_map/palette_map_tan_light.png
Normal file
|
After Width: | Height: | Size: 608 B |
BIN
resources/g2/palette_map/palette_map_void.png
Normal file
|
After Width: | Height: | Size: 608 B |
@@ -20588,5 +20588,77 @@
|
||||
"x_offset": -5,
|
||||
"y_offset": -20,
|
||||
"palette": "keep"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_dark_olive_dark.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_dark_olive_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_saturated_brown_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_bordeaux_red_dark.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_bordeaux_red_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_grass_green_dark.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_grass_green_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_olive_dark.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_olive_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_saturated_green_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_tan_dark.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_tan_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_dull_purple_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_dull_green_dark.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_dull_green_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_saturated_purple_dark.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_saturated_purple_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_orange_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_aqua_dark.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_magenta_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_dull_brown_dark.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_dull_brown_light.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_invisible.png"
|
||||
},
|
||||
{
|
||||
"path": "palette_map/palette_map_void.png"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -201,7 +201,7 @@ void TextureCache::CreateTextures()
|
||||
|
||||
void TextureCache::GeneratePaletteTexture()
|
||||
{
|
||||
static_assert(PALETTE_TO_G1_OFFSET_COUNT + 5 < 256, "Height of palette too large!");
|
||||
static_assert(PALETTE_TOTAL_OFFSETS + 5 < 256, "Height of palette too large!");
|
||||
constexpr int32_t height = 256;
|
||||
constexpr int32_t width = height;
|
||||
DrawPixelInfo dpi = CreateDPI(width, height);
|
||||
@@ -223,6 +223,18 @@ void TextureCache::GeneratePaletteTexture()
|
||||
GfxDrawSpriteSoftware(&dpi, ImageId(g1Index.value()), { -element->x_offset, y - element->y_offset });
|
||||
}
|
||||
}
|
||||
// G2 Palette textures
|
||||
for (int i = PALETTE_TO_G1_OFFSET_COUNT; i < PALETTE_TOTAL_OFFSETS; ++i)
|
||||
{
|
||||
GLint y = PaletteToY(static_cast<FilterPaletteID>(i));
|
||||
|
||||
auto g2Index = GetPaletteG2Index(i);
|
||||
if (g2Index.has_value())
|
||||
{
|
||||
auto element = GfxGetG1Element(g2Index.value());
|
||||
GfxDrawSpriteSoftware(&dpi, ImageId(g2Index.value()), { -element->x_offset, y - element->y_offset });
|
||||
}
|
||||
}
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, _paletteTexture);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_R8UI, width, height, 0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, dpi.bits);
|
||||
|
||||
@@ -1445,6 +1445,30 @@ void InputStateWidgetPressed(
|
||||
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[dropdown_index], {} }, screenCoords);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ static constexpr const uint8_t _appropriateImageDropdownItemsPerRow[34] = {
|
||||
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, 8, 8, // 34
|
||||
6, 8, 9, 8, // 34
|
||||
};
|
||||
|
||||
enum
|
||||
@@ -462,7 +462,7 @@ 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, COLOUR_COUNT, 12, 12, _appropriateImageDropdownItemsPerRow[COLOUR_COUNT]);
|
||||
Dropdown::Flag::StayOpen, COLOUR_COUNT, 12, 12, _appropriateImageDropdownItemsPerRow[COLOR_NUM_ORIGINAL]);
|
||||
|
||||
gDropdownIsColour = true;
|
||||
gDropdownLastColourHover = -1;
|
||||
|
||||
@@ -293,6 +293,58 @@ enum
|
||||
SPR_PALETTE_GLASS_DARK_PINK = 5045,
|
||||
SPR_PALETTE_GLASS_BRIGHT_PINK = 5046,
|
||||
SPR_PALETTE_GLASS_LIGHT_PINK = 5047,
|
||||
|
||||
// Start of G2 Palettes
|
||||
|
||||
SPR_PALETTE_DARK_OLIVE_DARK = 32607,
|
||||
SPR_PALETTE_DARK_OLIVE_LIGHT,
|
||||
SPR_PALETTE_SATURATED_BROWN_LIGHT,
|
||||
SPR_PALETTE_BORDEAUX_RED_DARK,
|
||||
SPR_PALETTE_BORDEAUX_RED_LIGHT,
|
||||
SPR_PALETTE_GRASS_GREEN_DARK,
|
||||
SPR_PALETTE_GRASS_GREEN_LIGHT,
|
||||
SPR_PALETTE_OLIVE_DARK,
|
||||
SPR_PALETTE_OLIVE_LIGHT,
|
||||
SPR_PALETTE_SATURATED_GREEN_LIGHT,
|
||||
SPR_PALETTE_TAN_DARK,
|
||||
SPR_PALETTE_TAN_LIGHT,
|
||||
SPR_PALETTE_DULL_PURPLE_LIGHT,
|
||||
SPR_PALETTE_DULL_GREEN_DARK,
|
||||
SPR_PALETTE_DULL_GREEN_LIGHT,
|
||||
SPR_PALETTE_SATURATED_PURPLE_DARK,
|
||||
SPR_PALETTE_SATURATED_PURPLE_LIGHT,
|
||||
SPR_PALETTE_ORANGE_LIGHT,
|
||||
SPR_PALETTE_AQUA_DARK,
|
||||
SPR_PALETTE_MAGENTA_LIGHT,
|
||||
SPR_PALETTE_DULL_BROWN_DARK,
|
||||
SPR_PALETTE_DULL_BROWN_LIGHT,
|
||||
SPR_PALETTE_INVISIBLE,
|
||||
SPR_PALETTE_VOID,
|
||||
|
||||
SPR_PALETTE_GLASS_DARK_OLIVE_DARK,
|
||||
SPR_PALETTE_GLASS_DARK_OLIVE_LIGHT,
|
||||
SPR_PALETTE_GLASS_SATURATED_BROWN_LIGHT,
|
||||
SPR_PALETTE_GLASS_BORDEAUX_RED_DARK,
|
||||
SPR_PALETTE_GLASS_BORDEAUX_RED_LIGHT,
|
||||
SPR_PALETTE_GLASS_GRASS_GREEN_DARK,
|
||||
SPR_PALETTE_GLASS_GRASS_GREEN_LIGHT,
|
||||
SPR_PALETTE_GLASS_OLIVE_DARK,
|
||||
SPR_PALETTE_GLASS_OLIVE_LIGHT,
|
||||
SPR_PALETTE_GLASS_SATURATED_GREEN_LIGHT,
|
||||
SPR_PALETTE_GLASS_TAN_DARK,
|
||||
SPR_PALETTE_GLASS_TAN_LIGHT,
|
||||
SPR_PALETTE_GLASS_DULL_PURPLE_LIGHT,
|
||||
SPR_PALETTE_GLASS_DULL_GREEN_DARK,
|
||||
SPR_PALETTE_GLASS_DULL_GREEN_LIGHT,
|
||||
SPR_PALETTE_GLASS_SATURATED_PURPLE_DARK,
|
||||
SPR_PALETTE_GLASS_SATURATED_PURPLE_LIGHT,
|
||||
SPR_PALETTE_GLASS_ORANGE_LIGHT,
|
||||
SPR_PALETTE_GLASS_AQUA_DARK,
|
||||
SPR_PALETTE_GLASS_MAGENTA_LIGHT,
|
||||
SPR_PALETTE_GLASS_DULL_BROWN_DARK,
|
||||
SPR_PALETTE_GLASS_DULL_BROWN_LIGHT,
|
||||
SPR_PALETTE_GLASS_INVISIBLE,
|
||||
SPR_PALETTE_GLASS_VOID,
|
||||
};
|
||||
|
||||
const FilterPaletteID GlassPaletteIds[COLOUR_COUNT] = {
|
||||
@@ -328,10 +380,34 @@ const FilterPaletteID GlassPaletteIds[COLOUR_COUNT] = {
|
||||
FilterPaletteID::PaletteGlassDarkPink,
|
||||
FilterPaletteID::PaletteGlassBrightPink,
|
||||
FilterPaletteID::PaletteGlassLightPink,
|
||||
FilterPaletteID::PaletteGlassDarkOliveDark,
|
||||
FilterPaletteID::PaletteGlassDarkOliveLight,
|
||||
FilterPaletteID::PaletteGlassSaturatedBrownLight,
|
||||
FilterPaletteID::PaletteGlassBordeauxRedDark,
|
||||
FilterPaletteID::PaletteGlassBordeauxRedLight,
|
||||
FilterPaletteID::PaletteGlassGrassGreenDark,
|
||||
FilterPaletteID::PaletteGlassGrassGreenLight,
|
||||
FilterPaletteID::PaletteGlassOliveDark,
|
||||
FilterPaletteID::PaletteGlassOliveLight,
|
||||
FilterPaletteID::PaletteGlassSaturatedGreenLight,
|
||||
FilterPaletteID::PaletteGlassTanDark,
|
||||
FilterPaletteID::PaletteGlassTanLight,
|
||||
FilterPaletteID::PaletteGlassDullPurpleLight,
|
||||
FilterPaletteID::PaletteGlassDullGreenDark,
|
||||
FilterPaletteID::PaletteGlassDullGreenLight,
|
||||
FilterPaletteID::PaletteGlassSaturatedPurpleDark,
|
||||
FilterPaletteID::PaletteGlassSaturatedPurpleLight,
|
||||
FilterPaletteID::PaletteGlassOrangeLight,
|
||||
FilterPaletteID::PaletteGlassAquaDark,
|
||||
FilterPaletteID::PaletteGlassMagentaLight,
|
||||
FilterPaletteID::PaletteGlassDullBrownDark,
|
||||
FilterPaletteID::PaletteGlassDullBrownLight,
|
||||
FilterPaletteID::PaletteGlassInvisible,
|
||||
FilterPaletteID::PaletteGlassVoid,
|
||||
};
|
||||
|
||||
// Previously 0x97FCBC use it to get the correct palette from g1_elements
|
||||
static const uint16_t palette_to_g1_offset[PALETTE_TO_G1_OFFSET_COUNT] = {
|
||||
static const uint16_t palette_to_g1_offset[PALETTE_TOTAL_OFFSETS] = {
|
||||
SPR_PALETTE_BLACK,
|
||||
SPR_PALETTE_GREY,
|
||||
SPR_PALETTE_WHITE,
|
||||
@@ -480,6 +556,31 @@ static const uint16_t palette_to_g1_offset[PALETTE_TO_G1_OFFSET_COUNT] = {
|
||||
SPR_PALETTE_GLASS_DARK_PINK,
|
||||
SPR_PALETTE_GLASS_BRIGHT_PINK,
|
||||
SPR_PALETTE_GLASS_LIGHT_PINK,
|
||||
|
||||
SPR_PALETTE_DARK_OLIVE_DARK,
|
||||
SPR_PALETTE_DARK_OLIVE_LIGHT,
|
||||
SPR_PALETTE_SATURATED_BROWN_LIGHT,
|
||||
SPR_PALETTE_BORDEAUX_RED_DARK,
|
||||
SPR_PALETTE_BORDEAUX_RED_LIGHT,
|
||||
SPR_PALETTE_GRASS_GREEN_DARK,
|
||||
SPR_PALETTE_GRASS_GREEN_LIGHT,
|
||||
SPR_PALETTE_OLIVE_DARK,
|
||||
SPR_PALETTE_OLIVE_LIGHT,
|
||||
SPR_PALETTE_SATURATED_GREEN_LIGHT,
|
||||
SPR_PALETTE_TAN_DARK,
|
||||
SPR_PALETTE_TAN_LIGHT,
|
||||
SPR_PALETTE_DULL_PURPLE_LIGHT,
|
||||
SPR_PALETTE_DULL_GREEN_DARK,
|
||||
SPR_PALETTE_DULL_GREEN_LIGHT,
|
||||
SPR_PALETTE_SATURATED_PURPLE_DARK,
|
||||
SPR_PALETTE_SATURATED_PURPLE_LIGHT,
|
||||
SPR_PALETTE_ORANGE_LIGHT,
|
||||
SPR_PALETTE_AQUA_DARK,
|
||||
SPR_PALETTE_MAGENTA_LIGHT,
|
||||
SPR_PALETTE_DULL_BROWN_DARK,
|
||||
SPR_PALETTE_DULL_BROWN_LIGHT,
|
||||
SPR_PALETTE_INVISIBLE,
|
||||
SPR_PALETTE_VOID,
|
||||
};
|
||||
|
||||
#define WINDOW_PALETTE_GREY {FilterPaletteID::PaletteTranslucentGrey, FilterPaletteID::PaletteTranslucentGreyHighlight, FilterPaletteID::PaletteTranslucentGreyShadow}
|
||||
@@ -747,7 +848,16 @@ void GfxDrawPickedUpPeep(DrawPixelInfo* dpi)
|
||||
|
||||
std::optional<uint32_t> GetPaletteG1Index(colour_t paletteId)
|
||||
{
|
||||
if (paletteId < std::size(palette_to_g1_offset))
|
||||
if (paletteId < PALETTE_TO_G1_OFFSET_COUNT)
|
||||
{
|
||||
return palette_to_g1_offset[paletteId];
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
std::optional<uint32_t> GetPaletteG2Index(colour_t paletteId)
|
||||
{
|
||||
if (paletteId < PALETTE_TOTAL_OFFSETS)
|
||||
{
|
||||
return palette_to_g1_offset[paletteId];
|
||||
}
|
||||
|
||||
@@ -296,6 +296,30 @@ 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,
|
||||
};
|
||||
|
||||
struct TranslucentWindowPalette
|
||||
@@ -446,6 +470,7 @@ void FASTCALL BlitPixels(const uint8_t* src, uint8_t* dst, const PaletteMap& pal
|
||||
}
|
||||
|
||||
#define PALETTE_TO_G1_OFFSET_COUNT 144
|
||||
#define PALETTE_TOTAL_OFFSETS 192
|
||||
|
||||
#define INSET_RECT_F_30 (INSET_RECT_FLAG_BORDER_INSET | INSET_RECT_FLAG_FILL_NONE)
|
||||
#define INSET_RECT_F_60 (INSET_RECT_FLAG_BORDER_INSET | INSET_RECT_FLAG_FILL_DONT_LIGHTEN)
|
||||
@@ -570,6 +595,7 @@ extern void (*MaskFn)(
|
||||
int32_t maskWrap, int32_t colourWrap, int32_t dstWrap);
|
||||
|
||||
std::optional<uint32_t> GetPaletteG1Index(colour_t paletteId);
|
||||
std::optional<uint32_t> GetPaletteG2Index(colour_t paletteId);
|
||||
std::optional<PaletteMap> GetPaletteMapForColour(colour_t paletteId);
|
||||
void UpdatePalette(const uint8_t* colours, int32_t start_index, int32_t num_colours);
|
||||
|
||||
|
||||
@@ -227,7 +227,7 @@ public:
|
||||
[[nodiscard]] constexpr ImageId WithPrimary(colour_t colour) const
|
||||
{
|
||||
ImageId result = *this;
|
||||
result._primary = colour & 31;
|
||||
result._primary = colour;
|
||||
result._flags |= NEW_FLAG_PRIMARY;
|
||||
return result;
|
||||
}
|
||||
@@ -235,7 +235,7 @@ public:
|
||||
[[nodiscard]] constexpr ImageId WithSecondary(colour_t colour) const
|
||||
{
|
||||
ImageId result = *this;
|
||||
result._secondary = colour & 31;
|
||||
result._secondary = colour;
|
||||
result._flags |= NEW_FLAG_SECONDARY;
|
||||
return result;
|
||||
}
|
||||
@@ -251,7 +251,7 @@ public:
|
||||
[[nodiscard]] constexpr ImageId WithTertiary(colour_t tertiary) const
|
||||
{
|
||||
ImageId result = *this;
|
||||
result._tertiary = tertiary & 31;
|
||||
result._tertiary = tertiary;
|
||||
result._flags &= ~NEW_FLAG_PRIMARY;
|
||||
result._flags |= NEW_FLAG_SECONDARY;
|
||||
if (!(_flags & NEW_FLAG_SECONDARY))
|
||||
@@ -265,7 +265,7 @@ public:
|
||||
|
||||
[[nodiscard]] ImageId WithTransparency(colour_t colour) const
|
||||
{
|
||||
return WithTransparency(GetGlassPaletteId(colour & 31));
|
||||
return WithTransparency(GetGlassPaletteId(colour));
|
||||
}
|
||||
|
||||
[[nodiscard]] ImageId WithTransparency(FilterPaletteID palette) const
|
||||
|
||||
@@ -37,7 +37,7 @@ enum
|
||||
void ColoursInitMaps()
|
||||
{
|
||||
// Get colour maps from g1
|
||||
for (int32_t i = 0; i < COLOUR_COUNT; i++)
|
||||
for (int32_t i = 0; i < 32; i++)
|
||||
{
|
||||
const G1Element* g1 = GfxGetG1Element(SPR_PALETTE_2_START + i);
|
||||
if (g1 != nullptr)
|
||||
@@ -93,6 +93,30 @@ namespace Colour
|
||||
{ "dark_pink", COLOUR_DARK_PINK },
|
||||
{ "bright_pink", COLOUR_BRIGHT_PINK },
|
||||
{ "light_pink", COLOUR_LIGHT_PINK },
|
||||
{ "dark_olive_dark", COLOUR_DARK_OLIVE_DARK },
|
||||
{ "dark_olive_light", COLOUR_DARK_OLIVE_LIGHT },
|
||||
{ "saturated_brown_light", COLOUR_SATURATED_BROWN_LIGHT },
|
||||
{ "bordeaux_red_dark", COLOUR_BORDEAUX_RED_DARK },
|
||||
{ "bordeaux_red_light", COLOUR_BORDEAUX_RED_LIGHT },
|
||||
{ "grass_green_dark", COLOUR_GRASS_GREEN_DARK },
|
||||
{ "grass_green_light", COLOUR_GRASS_GREEN_LIGHT },
|
||||
{ "olive_dark", COLOUR_OLIVE_DARK },
|
||||
{ "olive_light", COLOUR_OLIVE_LIGHT },
|
||||
{ "saturated_green_light", COLOUR_SATURATED_GREEN_LIGHT },
|
||||
{ "tan_dark", COLOUR_TAN_DARK },
|
||||
{ "tan_light", COLOUR_TAN_LIGHT },
|
||||
{ "dull_purple_light", COLOUR_DULL_PURPLE_LIGHT },
|
||||
{ "dull_green_dark", COLOUR_DULL_GREEN_DARK },
|
||||
{ "dull_green_light", COLOUR_DULL_GREEN_LIGHT },
|
||||
{ "saturated_purple_dark", COLOUR_SATURATED_PURPLE_DARK },
|
||||
{ "saturated_purple_light", COLOUR_SATURATED_PURPLE_LIGHT },
|
||||
{ "orange_light", COLOUR_ORANGE_LIGHT },
|
||||
{ "aqua_dark", COLOUR_AQUA_DARK },
|
||||
{ "magenta_light", COLOUR_MAGENTA_LIGHT },
|
||||
{ "dull_brown_dark", COLOUR_DULL_BROWN_DARK },
|
||||
{ "dull_brown_light", COLOUR_DULL_BROWN_LIGHT },
|
||||
{ "invisible", COLOUR_INVISIBLE },
|
||||
{ "void", COLOUR_VOID },
|
||||
};
|
||||
|
||||
colour_t FromString(std::string_view s, colour_t defaultValue)
|
||||
|
||||
@@ -52,6 +52,30 @@ enum : colour_t
|
||||
COLOUR_DARK_PINK,
|
||||
COLOUR_BRIGHT_PINK,
|
||||
COLOUR_LIGHT_PINK,
|
||||
COLOUR_DARK_OLIVE_DARK,
|
||||
COLOUR_DARK_OLIVE_LIGHT,
|
||||
COLOUR_SATURATED_BROWN_LIGHT,
|
||||
COLOUR_BORDEAUX_RED_DARK,
|
||||
COLOUR_BORDEAUX_RED_LIGHT,
|
||||
COLOUR_GRASS_GREEN_DARK,
|
||||
COLOUR_GRASS_GREEN_LIGHT,
|
||||
COLOUR_OLIVE_DARK,
|
||||
COLOUR_OLIVE_LIGHT,
|
||||
COLOUR_SATURATED_GREEN_LIGHT,
|
||||
COLOUR_TAN_DARK,
|
||||
COLOUR_TAN_LIGHT,
|
||||
COLOUR_DULL_PURPLE_LIGHT,
|
||||
COLOUR_DULL_GREEN_DARK,
|
||||
COLOUR_DULL_GREEN_LIGHT,
|
||||
COLOUR_SATURATED_PURPLE_DARK,
|
||||
COLOUR_SATURATED_PURPLE_LIGHT,
|
||||
COLOUR_ORANGE_LIGHT,
|
||||
COLOUR_AQUA_DARK,
|
||||
COLOUR_MAGENTA_LIGHT,
|
||||
COLOUR_DULL_BROWN_DARK,
|
||||
COLOUR_DULL_BROWN_LIGHT,
|
||||
COLOUR_INVISIBLE,
|
||||
COLOUR_VOID,
|
||||
|
||||
COLOUR_COUNT,
|
||||
|
||||
@@ -64,7 +88,8 @@ enum : colour_t
|
||||
enum
|
||||
{
|
||||
COLOUR_DARK_WATER = 9,
|
||||
COLOUR_LIGHT_WATER = 10
|
||||
COLOUR_LIGHT_WATER = 10,
|
||||
COLOUR_DEEP_WATER = 50
|
||||
};
|
||||
|
||||
enum : PaletteIndex
|
||||
@@ -178,6 +203,10 @@ constexpr uint8_t PALETTE_LENGTH_REMAP = 12;
|
||||
constexpr uint8_t PALETTE_OFFSET_ANIMATED = PALETTE_INDEX_230;
|
||||
constexpr uint8_t PALETTE_LENGTH_ANIMATED = 16;
|
||||
|
||||
constexpr uint8_t COLOR_NUM_ORIGINAL = 32;
|
||||
constexpr uint8_t COLOR_NUM_EXTENDED = 24;
|
||||
constexpr uint8_t COLOR_NUM_SPECIAL = 2;
|
||||
|
||||
#define TEXT_COLOUR_254 (254)
|
||||
#define TEXT_COLOUR_255 (255)
|
||||
|
||||
|
||||
@@ -3950,6 +3950,31 @@ enum : uint16_t
|
||||
STR_OBJECT_SELECTION_ERR_COMPAT_OBJECT = 6549,
|
||||
STR_OBJECT_SELECTION_COMPAT_OBJECT_DESCRIPTION = 6550,
|
||||
|
||||
STR_COLOUR_DARK_OLIVE_DARK_TIP = 6551,
|
||||
STR_COLOUR_DARK_OLIVE_LIGHT_TIP = 6552,
|
||||
STR_COLOUR_SATURATED_BROWN_LIGHT_TIP = 6553,
|
||||
STR_COLOUR_BORDEAUX_RED_DARK_TIP = 6554,
|
||||
STR_COLOUR_BORDEAUX_RED_LIGHT_TIP = 6555,
|
||||
STR_COLOUR_GRASS_GREEN_DARK_TIP = 6556,
|
||||
STR_COLOUR_GRASS_GREEN_LIGHT_TIP = 6557,
|
||||
STR_COLOUR_OLIVE_DARK_TIP = 6558,
|
||||
STR_COLOUR_OLIVE_LIGHT_TIP = 6559,
|
||||
STR_COLOUR_SATURATED_GREEN_LIGHT_TIP = 6560,
|
||||
STR_COLOUR_TAN_DARK_TIP = 6561,
|
||||
STR_COLOUR_TAN_LIGHT_TIP = 6562,
|
||||
STR_COLOUR_DULL_PURPLE_LIGHT_TIP = 6563,
|
||||
STR_COLOUR_DULL_GREEN_DARK_TIP = 6564,
|
||||
STR_COLOUR_DULL_GREEN_LIGHT_TIP = 6565,
|
||||
STR_COLOUR_SATURATED_PURPLE_DARK_TIP = 6566,
|
||||
STR_COLOUR_SATURATED_PURPLE_LIGHT_TIP = 6567,
|
||||
STR_COLOUR_ORANGE_LIGHT_TIP = 6568,
|
||||
STR_COLOUR_AQUA_DARK_TIP = 6569,
|
||||
STR_COLOUR_MAGENTA_LIGHT_TIP = 6570,
|
||||
STR_COLOUR_DULL_BROWN_DARK_TIP = 6571,
|
||||
STR_COLOUR_DULL_BROWN_LIGHT_TIP = 6572,
|
||||
STR_COLOUR_INVISIBLE_TIP = 6573,
|
||||
STR_COLOUR_VOID_TIP = 6574,
|
||||
|
||||
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
|
||||
/* MAX_STR_COUNT = 32768 */ // MAX_STR_COUNT - upper limit for number of strings, not the current count strings
|
||||
};
|
||||
|
||||
@@ -1364,7 +1364,34 @@ enum
|
||||
SPR_G2_ALPINE_LIFT_TRACK_GENTLE_DIAGONAL = SPR_G2_ALPINE_LIFT_TRACK_FLAT_DIAGONAL + 4,
|
||||
SPR_G2_ALPINE_END = SPR_G2_ALPINE_LIFT_TRACK_GENTLE_DIAGONAL + 12,
|
||||
|
||||
SPR_G2_END = SPR_G2_ALPINE_END,
|
||||
SPR_G2_PAL_REMAP_BEGIN = SPR_G2_ALPINE_END,
|
||||
SPR_G2_PAL_REMAP_DARK_OLIVE_DARK,
|
||||
SPR_G2_PAL_REMAP_DARK_OLIVE_LIGHT,
|
||||
SPR_G2_PAL_REMAP_SATURATED_BROWN_LIGHT,
|
||||
SPR_G2_PAL_REMAP_BORDEAUX_RED_DARK,
|
||||
SPR_G2_PAL_REMAP_BORDEAUX_RED_LIGHT,
|
||||
SPR_G2_PAL_REMAP_GRASS_GREEN_DARK,
|
||||
SPR_G2_PAL_REMAP_GRASS_GREEN_LIGHT,
|
||||
SPR_G2_PAL_REMAP_OLIVE_DARK,
|
||||
SPR_G2_PAL_REMAP_OLIVE_LIGHT,
|
||||
SPR_G2_PAL_REMAP_SATURATED_GREEN_LIGHT,
|
||||
SPR_G2_PAL_REMAP_TAN_DARK,
|
||||
SPR_G2_PAL_REMAP_TAN_LIGHT,
|
||||
SPR_G2_PAL_REMAP_DULL_PURPLE_LIGHT,
|
||||
SPR_G2_PAL_REMAP_DULL_GREEN_DARK,
|
||||
SPR_G2_PAL_REMAP_DULL_GREEN_LIGHT,
|
||||
SPR_G2_PAL_REMAP_SATURATED_PURPLE_DARK,
|
||||
SPR_G2_PAL_REMAP_SATURATED_PURPLE_LIGHT,
|
||||
SPR_G2_PAL_REMAP_ORANGE_LIGHT,
|
||||
SPR_G2_PAL_REMAP_AQUA_DARK,
|
||||
SPR_G2_PAL_REMAP_MAGENTA_LIGHT,
|
||||
SPR_G2_PAL_REMAP_DULL_BROWN_DARK,
|
||||
SPR_G2_PAL_REMAP_DULL_BROWN_LIGHT,
|
||||
SPR_G2_PAL_REMAP_INVISIBLE,
|
||||
SPR_G2_PAL_REMAP_VOID,
|
||||
SPR_G2_PAL_REMAP_END = SPR_G2_PAL_REMAP_VOID,
|
||||
|
||||
SPR_G2_END = SPR_G2_PAL_REMAP_END,
|
||||
|
||||
SPR_CSG_BEGIN = SPR_G2_END,
|
||||
SPR_CSG_END = SPR_CSG_BEGIN + RCT1::Limits::Num_LL_CSG_Entries,
|
||||
|
||||