From 4f478082012bee0db7142bdc0bcafc1bf90d0cf1 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Wed, 9 Nov 2016 23:40:13 +0100 Subject: [PATCH] Name glass palettes --- src/drawing/drawing.c | 133 +++++++++++++++++++++++-------- src/drawing/drawing.h | 35 +++++++- src/interface/colour.h | 6 +- src/paint/map_element/entrance.c | 2 +- src/paint/map_element/scenery.c | 2 +- src/windows/error.c | 2 +- src/windows/ride.c | 2 +- src/windows/scenery.c | 4 +- src/windows/tooltip.c | 2 +- 9 files changed, 144 insertions(+), 44 deletions(-) diff --git a/src/drawing/drawing.c b/src/drawing/drawing.c index e2962e68c1..f1812eeb38 100644 --- a/src/drawing/drawing.c +++ b/src/drawing/drawing.c @@ -148,6 +148,74 @@ enum SPR_PALETTE_DARK_PINK = 4944, SPR_PALETTE_BRIGHT_PINK = 4945, SPR_PALETTE_LIGHT_PINK = 4946, + + SPR_PALETTE_GLASS_BLACK = 5016, + SPR_PALETTE_GLASS_GREY = 5017, + SPR_PALETTE_GLASS_WHITE = 5018, + SPR_PALETTE_GLASS_DARK_PURPLE = 5019, + SPR_PALETTE_GLASS_LIGHT_PURPLE = 5020, + SPR_PALETTE_GLASS_BRIGHT_PURPLE = 5021, + SPR_PALETTE_GLASS_DARK_BLUE = 5022, + SPR_PALETTE_GLASS_LIGHT_BLUE = 5023, + SPR_PALETTE_GLASS_ICY_BLUE = 5024, + SPR_PALETTE_GLASS_TEAL = 5025, + SPR_PALETTE_GLASS_AQUAMARINE = 5026, + SPR_PALETTE_GLASS_SATURATED_GREEN = 5027, + SPR_PALETTE_GLASS_DARK_GREEN = 5028, + SPR_PALETTE_GLASS_MOSS_GREEN = 5029, + SPR_PALETTE_GLASS_BRIGHT_GREEN = 5030, + SPR_PALETTE_GLASS_OLIVE_GREEN = 5031, + SPR_PALETTE_GLASS_DARK_OLIVE_GREEN = 5032, + SPR_PALETTE_GLASS_BRIGHT_YELLOW = 5033, + SPR_PALETTE_GLASS_YELLOW = 5034, + SPR_PALETTE_GLASS_DARK_YELLOW = 5035, + SPR_PALETTE_GLASS_LIGHT_ORANGE = 5036, + SPR_PALETTE_GLASS_DARK_ORANGE = 5037, + SPR_PALETTE_GLASS_LIGHT_BROWN = 5038, + SPR_PALETTE_GLASS_SATURATED_BROWN = 5039, + SPR_PALETTE_GLASS_DARK_BROWN = 5040, + SPR_PALETTE_GLASS_SALMON_PINK = 5041, + SPR_PALETTE_GLASS_BORDEAUX_RED = 5042, + SPR_PALETTE_GLASS_SATURATED_RED = 5043, + SPR_PALETTE_GLASS_BRIGHT_RED = 5044, + SPR_PALETTE_GLASS_DARK_PINK = 5045, + SPR_PALETTE_GLASS_BRIGHT_PINK = 5046, + SPR_PALETTE_GLASS_LIGHT_PINK = 5047, +}; + +const FILTER_PALETTE_ID GlassPaletteIds[COLOUR_COUNT] = { + PALETTE_GLASS_BLACK, + PALETTE_GLASS_GREY, + PALETTE_GLASS_WHITE, + PALETTE_GLASS_DARK_PURPLE, + PALETTE_GLASS_LIGHT_PURPLE, + PALETTE_GLASS_BRIGHT_PURPLE, + PALETTE_GLASS_DARK_BLUE, + PALETTE_GLASS_LIGHT_BLUE, + PALETTE_GLASS_ICY_BLUE, + PALETTE_GLASS_TEAL, + PALETTE_GLASS_AQUAMARINE, + PALETTE_GLASS_SATURATED_GREEN, + PALETTE_GLASS_DARK_GREEN, + PALETTE_GLASS_MOSS_GREEN, + PALETTE_GLASS_BRIGHT_GREEN, + PALETTE_GLASS_OLIVE_GREEN, + PALETTE_GLASS_DARK_OLIVE_GREEN, + PALETTE_GLASS_BRIGHT_YELLOW, + PALETTE_GLASS_YELLOW, + PALETTE_GLASS_DARK_YELLOW, + PALETTE_GLASS_LIGHT_ORANGE, + PALETTE_GLASS_DARK_ORANGE, + PALETTE_GLASS_LIGHT_BROWN, + PALETTE_GLASS_SATURATED_BROWN, + PALETTE_GLASS_DARK_BROWN, + PALETTE_GLASS_SALMON_PINK, + PALETTE_GLASS_BORDEAUX_RED, + PALETTE_GLASS_SATURATED_RED, + PALETTE_GLASS_BRIGHT_RED, + PALETTE_GLASS_DARK_PINK, + PALETTE_GLASS_BRIGHT_PINK, + PALETTE_GLASS_LIGHT_PINK, }; // Previously 0x97FCBC use it to get the correct palette from g1_elements @@ -229,39 +297,38 @@ const uint16 palette_to_g1_offset[PALETTE_TO_G1_OFFSET_COUNT] = { 5010, 0x1393, 0x1394, // PALETTE_TRANSLUCENT_LIGHT_PINK 5013, 0x1396, 0x1397, // PALETTE_TRANSLUCENT_WHITE - // Used by SMALL_SCENERY_FLAG_HAS_GLASS - 0x1398, // 112 + BLACK - 0x1399, // 112 + GREY - 0x139A, // 112 + WHITE - 0x139B, // 112 + DARK_PURPLE - 0x139C, // 112 + LIGHT_PURPLE - 0x139D, // 112 + BRIGHT_PURPLE - 0x139E, // 112 + DARK_BLUE - 0x139F, // 112 + LIGHT_BLUE - 0x13A0, // 112 + ICY_BLUE - 0x13A1, // 112 + TEAL - 0x13A2, // 112 + AQUAMARINE - 0x13A3, // 112 + SATURATED_GREEN - 0x13A4, // 112 + DARK_GREEN - 0x13A5, // 112 + MOSS_GREEN - 0x13A6, // 112 + BRIGHT_GREEN - 0x13A7, // 112 + OLIVE_GREEN - 0x13A8, // 112 + DARK_OLIVE_GREEN - 0x13A9, // 112 + BRIGHT_YELLOW - 0x13AA, // 112 + YELLOW - 0x13AB, // 112 + DARK_YELLOW - 0x13AC, // 112 + LIGHT_ORANGE - 0x13AD, // 112 + DARK_ORANGE - 0x13AE, // 112 + LIGHT_BROWN - 0x13AF, // 112 + SATURATED_BROWN - 0x13B0, // 112 + DARK_BROWN - 0x13B1, // 112 + SALMON_PINK - 0x13B2, // 112 + BORDEAUX_RED - 0x13B3, // 112 + SATURATED_RED - 0x13B4, // 112 + BRIGHT_RED - 0x13B5, // 112 + DARK_PINK - 0x13B6, // 112 + BRIGHT_PINK - 0x13B7, // 112 + LIGHT_PINK + SPR_PALETTE_GLASS_BLACK, + SPR_PALETTE_GLASS_GREY, + SPR_PALETTE_GLASS_WHITE, + SPR_PALETTE_GLASS_DARK_PURPLE, + SPR_PALETTE_GLASS_LIGHT_PURPLE, + SPR_PALETTE_GLASS_BRIGHT_PURPLE, + SPR_PALETTE_GLASS_DARK_BLUE, + SPR_PALETTE_GLASS_LIGHT_BLUE, + SPR_PALETTE_GLASS_ICY_BLUE, + SPR_PALETTE_GLASS_TEAL, + SPR_PALETTE_GLASS_AQUAMARINE, + SPR_PALETTE_GLASS_SATURATED_GREEN, + SPR_PALETTE_GLASS_DARK_GREEN, + SPR_PALETTE_GLASS_MOSS_GREEN, + SPR_PALETTE_GLASS_BRIGHT_GREEN, + SPR_PALETTE_GLASS_OLIVE_GREEN, + SPR_PALETTE_GLASS_DARK_OLIVE_GREEN, + SPR_PALETTE_GLASS_BRIGHT_YELLOW, + SPR_PALETTE_GLASS_YELLOW, + SPR_PALETTE_GLASS_DARK_YELLOW, + SPR_PALETTE_GLASS_LIGHT_ORANGE, + SPR_PALETTE_GLASS_DARK_ORANGE, + SPR_PALETTE_GLASS_LIGHT_BROWN, + SPR_PALETTE_GLASS_SATURATED_BROWN, + SPR_PALETTE_GLASS_DARK_BROWN, + SPR_PALETTE_GLASS_SALMON_PINK, + SPR_PALETTE_GLASS_BORDEAUX_RED, + SPR_PALETTE_GLASS_SATURATED_RED, + SPR_PALETTE_GLASS_BRIGHT_RED, + SPR_PALETTE_GLASS_DARK_PINK, + SPR_PALETTE_GLASS_BRIGHT_PINK, + SPR_PALETTE_GLASS_LIGHT_PINK, }; /** rct2: 0x009DEDF4 */ diff --git a/src/drawing/drawing.h b/src/drawing/drawing.h index 8fe4f36dd5..1b70e81e02 100644 --- a/src/drawing/drawing.h +++ b/src/drawing/drawing.h @@ -132,8 +132,38 @@ typedef enum { PALETTE_TRANSLUCENT_LIGHT_PINK = 106, PALETTE_TRANSLUCENT_WHITE = 109, - PALETTE_132 = 112 + COLOUR_LIGHT_ORANGE, - PALETTE_139 = 112 + COLOUR_SATURATED_RED, + PALETTE_GLASS_BLACK = 112 + COLOUR_BLACK, + PALETTE_GLASS_GREY = 112 + COLOUR_GREY, + PALETTE_GLASS_WHITE = 112 + COLOUR_WHITE, + PALETTE_GLASS_DARK_PURPLE = 112 + COLOUR_DARK_PURPLE, + PALETTE_GLASS_LIGHT_PURPLE = 112 + COLOUR_LIGHT_PURPLE, + PALETTE_GLASS_BRIGHT_PURPLE = 112 + COLOUR_BRIGHT_PURPLE, + PALETTE_GLASS_DARK_BLUE = 112 + COLOUR_DARK_BLUE, + PALETTE_GLASS_LIGHT_BLUE = 112 + COLOUR_LIGHT_BLUE, + PALETTE_GLASS_ICY_BLUE = 112 + COLOUR_ICY_BLUE, + PALETTE_GLASS_TEAL = 112 + COLOUR_TEAL, + PALETTE_GLASS_AQUAMARINE = 112 + COLOUR_AQUAMARINE, + PALETTE_GLASS_SATURATED_GREEN = 112 + COLOUR_SATURATED_GREEN, + PALETTE_GLASS_DARK_GREEN = 112 + COLOUR_DARK_GREEN, + PALETTE_GLASS_MOSS_GREEN = 112 + COLOUR_MOSS_GREEN, + PALETTE_GLASS_BRIGHT_GREEN = 112 + COLOUR_BRIGHT_GREEN, + PALETTE_GLASS_OLIVE_GREEN = 112 + COLOUR_OLIVE_GREEN, + PALETTE_GLASS_DARK_OLIVE_GREEN = 112 + COLOUR_DARK_OLIVE_GREEN, + PALETTE_GLASS_BRIGHT_YELLOW = 112 + COLOUR_BRIGHT_YELLOW, + PALETTE_GLASS_YELLOW = 112 + COLOUR_YELLOW, + PALETTE_GLASS_DARK_YELLOW = 112 + COLOUR_DARK_YELLOW, + PALETTE_GLASS_LIGHT_ORANGE = 112 + COLOUR_LIGHT_ORANGE, + PALETTE_GLASS_DARK_ORANGE = 112 + COLOUR_DARK_ORANGE, + PALETTE_GLASS_LIGHT_BROWN = 112 + COLOUR_LIGHT_BROWN, + PALETTE_GLASS_SATURATED_BROWN = 112 + COLOUR_SATURATED_BROWN, + PALETTE_GLASS_DARK_BROWN = 112 + COLOUR_DARK_BROWN, + PALETTE_GLASS_SALMON_PINK = 112 + COLOUR_SALMON_PINK, + PALETTE_GLASS_BORDEAUX_RED = 112 + COLOUR_BORDEAUX_RED, + PALETTE_GLASS_SATURATED_RED = 112 + COLOUR_SATURATED_RED, + PALETTE_GLASS_BRIGHT_RED = 112 + COLOUR_BRIGHT_RED, + PALETTE_GLASS_DARK_PINK = 112 + COLOUR_DARK_PINK, + PALETTE_GLASS_BRIGHT_PINK = 112 + COLOUR_BRIGHT_PINK, + PALETTE_GLASS_LIGHT_PINK = 112 + COLOUR_LIGHT_PINK, } FILTER_PALETTE_ID; typedef struct rct_g1_header { @@ -182,6 +212,7 @@ extern uint16 gCurrentFontFlags; extern uint8 gGamePalette[256 * 4]; extern uint32 gPaletteEffectFrame; +extern const FILTER_PALETTE_ID GlassPaletteIds[COLOUR_COUNT]; extern const uint16 palette_to_g1_offset[]; extern uint8 gPeepPalette[256]; extern uint8 gOtherPalette[256]; diff --git a/src/interface/colour.h b/src/interface/colour.h index 7b240fdeeb..605888f56f 100644 --- a/src/interface/colour.h +++ b/src/interface/colour.h @@ -54,7 +54,9 @@ enum { COLOUR_BRIGHT_RED, COLOUR_DARK_PINK, COLOUR_BRIGHT_PINK, - COLOUR_LIGHT_PINK + COLOUR_LIGHT_PINK, + + COLOUR_COUNT }; /** @@ -89,7 +91,7 @@ typedef struct rct_colour_map { uint8 colour_11; } rct_colour_map; -extern rct_colour_map ColourMapA[32]; +extern rct_colour_map ColourMapA[COLOUR_COUNT]; void colours_init_maps(); diff --git a/src/paint/map_element/entrance.c b/src/paint/map_element/entrance.c index 2f989d85a8..08b6e93d24 100644 --- a/src/paint/map_element/entrance.c +++ b/src/paint/map_element/entrance.c @@ -73,7 +73,7 @@ static void ride_entrance_exit_paint(uint8 direction, int height, rct_map_elemen uint8 colour_1, colour_2; uint32 transparant_image_id = 0, image_id = 0; if (style->base_image_id & 0x40000000) { - colour_1 = ride->track_colour_main[0] + 0x70; + colour_1 = GlassPaletteIds[ride->track_colour_main[0]]; transparant_image_id = (colour_1 << 19) | 0x40000000; } diff --git a/src/paint/map_element/scenery.c b/src/paint/map_element/scenery.c index 1b94cd1a30..475f960b5b 100644 --- a/src/paint/map_element/scenery.c +++ b/src/paint/map_element/scenery.c @@ -134,7 +134,7 @@ void scenery_paint(uint8 direction, int height, rct_map_element* mapElement) { if (dword_F64EB0 == 0) { // Draw translucent overlay: // TODO: Name palette entries - int image_id = (baseImageid & 0x7FFFF) + (((mapElement->properties.scenery.colour_1 & 0x1F) + 112) << 19) + 0x40000004; + int image_id = (baseImageid & 0x7FFFF) + (GlassPaletteIds[(mapElement->properties.scenery.colour_1 & 0x1F)] << 19) + 0x40000004; sub_98199C(image_id, x_offset, y_offset, boxlength.x, boxlength.y, boxlength.z - 1, height, boxoffset.x, boxoffset.y, boxoffset.z, rotation); } } diff --git a/src/windows/error.c b/src/windows/error.c index b250cd0212..a412f95d6d 100644 --- a/src/windows/error.c +++ b/src/windows/error.c @@ -162,7 +162,7 @@ static void window_error_paint(rct_window *w, rct_drawpixelinfo *dpi) b = w->y + w->height - 1; gfx_filter_rect(dpi, l + 1, t + 1, r - 1, b - 1, PALETTE_45); - gfx_filter_rect(dpi, l, t, r, b, PALETTE_139); + gfx_filter_rect(dpi, l, t, r, b, PALETTE_GLASS_SATURATED_RED); gfx_filter_rect(dpi, l, t + 2, l, b - 2, PALETTE_47); gfx_filter_rect(dpi, r, t + 2, r, b - 2, PALETTE_47); diff --git a/src/windows/ride.c b/src/windows/ride.c index 0106118c0c..d256f98009 100644 --- a/src/windows/ride.c +++ b/src/windows/ride.c @@ -4689,7 +4689,7 @@ static void window_ride_colour_paint(rct_window *w, rct_drawpixelinfo *dpi) terniaryColour = 0; if (entranceStyle->base_image_id & 0x40000000) { - terniaryColour = 0x40000000 | ((trackColour.main + 112) << 19); + terniaryColour = 0x40000000 | (GlassPaletteIds[trackColour.main] << 19); } spriteIndex = (trackColour.additional << 24) | (trackColour.main << 19); diff --git a/src/windows/scenery.c b/src/windows/scenery.c index fc9b87e181..23504f6927 100644 --- a/src/windows/scenery.c +++ b/src/windows/scenery.c @@ -1147,7 +1147,7 @@ void window_scenery_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrol gfx_draw_sprite(&clipdpi, imageId, 0x2F, (sceneryEntry->wall.height * 2) + 0x32, tertiaryColour); - imageId = (sceneryEntry->image + 0x40000006) | ((gWindowSceneryPrimaryColour + 0x70) << 19); + imageId = (sceneryEntry->image + 0x40000006) | (GlassPaletteIds[gWindowSceneryPrimaryColour] << 19); gfx_draw_sprite(&clipdpi, imageId, 0x2F, (sceneryEntry->wall.height * 2) + 0x32, tertiaryColour); } @@ -1202,7 +1202,7 @@ void window_scenery_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrol if (sceneryEntry->small_scenery.flags & SMALL_SCENERY_FLAG_HAS_GLASS) { imageId = ((sceneryEntry->image + gWindowSceneryRotation) + 0x40000004) + - ((gWindowSceneryPrimaryColour + 0x70) << 19); + (GlassPaletteIds[gWindowSceneryPrimaryColour] << 19); gfx_draw_sprite(&clipdpi, imageId, 0x20, spriteTop, w->colours[1]); } diff --git a/src/windows/tooltip.c b/src/windows/tooltip.c index ec7fea8e4b..ce1982d0d4 100644 --- a/src/windows/tooltip.c +++ b/src/windows/tooltip.c @@ -195,7 +195,7 @@ static void window_tooltip_paint(rct_window *w, rct_drawpixelinfo *dpi) // Background gfx_filter_rect(dpi, left + 1, top + 1, right - 1, bottom - 1, PALETTE_45); - gfx_filter_rect(dpi, left + 1, top + 1, right - 1, bottom - 1, PALETTE_132); + gfx_filter_rect(dpi, left + 1, top + 1, right - 1, bottom - 1, PALETTE_GLASS_LIGHT_ORANGE); // Sides gfx_filter_rect(dpi, left + 0, top + 2, left + 0, bottom - 2, PALETTE_47);