From 48e3d70e578c72bc93e42dde9b13432847e3aeb6 Mon Sep 17 00:00:00 2001 From: IntelOrca Date: Sun, 8 Nov 2015 18:55:32 +0000 Subject: [PATCH] refactor colour maps --- projects/colour.c | 1 + projects/openrct2.vcxproj | 1 + projects/openrct2.vcxproj.filters | 3 ++ src/drawing/rect.c | 21 +++++----- src/drawing/scrolling_text.c | 11 ++++-- src/drawing/string.c | 15 +++---- src/interface/colour.c | 25 ++++++++++++ src/interface/colour.h | 31 +++++++++++++++ src/interface/viewport.c | 17 ++------ src/interface/widget.c | 54 +++++++++++++------------- src/interface/window.h | 1 + src/windows/dropdown.c | 6 +-- src/windows/editor_inventions_list.c | 4 +- src/windows/editor_object_selection.c | 4 +- src/windows/editor_objective_options.c | 2 +- src/windows/finances.c | 2 +- src/windows/guest.c | 2 +- src/windows/guest_list.c | 2 +- src/windows/install_track.c | 2 +- src/windows/loadsave.c | 2 +- src/windows/new_ride.c | 2 +- src/windows/player_list.c | 2 +- src/windows/ride_list.c | 2 +- src/windows/scenery.c | 2 +- src/windows/server_list.c | 2 +- src/windows/shortcut_keys.c | 2 +- src/windows/staff_list.c | 2 +- src/windows/text_input.c | 2 +- src/windows/themes.c | 8 ++-- src/windows/tile_inspector.c | 2 +- src/windows/title_editor.c | 14 +++---- src/windows/title_scenarioselect.c | 2 +- src/windows/track_list.c | 4 +- 33 files changed, 154 insertions(+), 98 deletions(-) create mode 100644 projects/colour.c create mode 100644 src/interface/colour.c diff --git a/projects/colour.c b/projects/colour.c new file mode 100644 index 0000000000..769592d27c --- /dev/null +++ b/projects/colour.c @@ -0,0 +1 @@ +#include "coloru" \ No newline at end of file diff --git a/projects/openrct2.vcxproj b/projects/openrct2.vcxproj index 74c3166567..677c094f89 100644 --- a/projects/openrct2.vcxproj +++ b/projects/openrct2.vcxproj @@ -49,6 +49,7 @@ + diff --git a/projects/openrct2.vcxproj.filters b/projects/openrct2.vcxproj.filters index 734c2e6363..1b5b6966ab 100644 --- a/projects/openrct2.vcxproj.filters +++ b/projects/openrct2.vcxproj.filters @@ -549,6 +549,9 @@ Source\Windows + + Source\Interface + diff --git a/src/drawing/rect.c b/src/drawing/rect.c index 8da268b2cc..7b619c1d94 100644 --- a/src/drawing/rect.c +++ b/src/drawing/rect.c @@ -21,8 +21,9 @@ #include #include "../addresses.h" #include "../common.h" -#include "drawing.h" +#include "../interface/colour.h" #include "../platform/platform.h" +#include "drawing.h" /** * @@ -283,13 +284,13 @@ void gfx_fill_rect_inset(rct_drawpixelinfo* dpi, short left, short top, short ri } } else { if (flags & 0x80) { - shadow = RCT2_ADDRESS(0x0141FC46, uint8)[colour * 8]; - fill = RCT2_ADDRESS(0x0141FC48, uint8)[colour * 8]; - hilight = RCT2_ADDRESS(0x0141FC4A, uint8)[colour * 8]; + shadow = ColourMapA[colour].dark; + fill = ColourMapA[colour].mid_light; + hilight = ColourMapA[colour].lighter; } else { - shadow = RCT2_ADDRESS(0x0141FC47, uint8)[colour * 8]; - fill = RCT2_ADDRESS(0x0141FC49, uint8)[colour * 8]; - hilight = RCT2_ADDRESS(0x0141FC4B, uint8)[colour * 8]; + shadow = ColourMapA[colour].mid_dark; + fill = ColourMapA[colour].light; + hilight = ColourMapA[colour].lighter; } if (flags & no_border) { @@ -304,9 +305,9 @@ void gfx_fill_rect_inset(rct_drawpixelinfo* dpi, short left, short top, short ri if (!(flags & no_fill)) { if (!(flags & 0x40)) { if (flags & 0x04) { - fill = RCT2_ADDRESS(0x0141FC49, uint8)[0]; + fill = ColourMapA[COLOUR_BLACK].light; } else { - fill = RCT2_ADDRESS(0x0141FC4A, uint8)[colour * 8]; + fill = ColourMapA[colour].lighter; } } gfx_fill_rect(dpi, left+1, top+1, right-1, bottom-1, fill); @@ -320,7 +321,7 @@ void gfx_fill_rect_inset(rct_drawpixelinfo* dpi, short left, short top, short ri if (!(flags & no_fill)) { if (flags & 0x04) { - fill = RCT2_ADDRESS(0x0141FC49, uint8)[0]; + fill = ColourMapA[COLOUR_BLACK].light; } gfx_fill_rect(dpi, left+1, top+1, right-1, bottom-1, fill); } diff --git a/src/drawing/scrolling_text.c b/src/drawing/scrolling_text.c index 0e96e43166..72a7293d7f 100644 --- a/src/drawing/scrolling_text.c +++ b/src/drawing/scrolling_text.c @@ -1,5 +1,6 @@ #include "../addresses.h" #include "../config.h" +#include "../interface/colour.h" #include "../localisation/localisation.h" #include "drawing.h" @@ -88,10 +89,12 @@ static int scrolling_text_get_matching_or_oldest(rct_string_id stringId, uint16 static uint8 scrolling_text_get_colour(uint32 character) { - int edi = character & 0x7F; - int offset = 0; - if (character >= 0x80) offset = 2; - return RCT2_ADDRESS(0x0141FC47, uint8)[offset + (edi * 8)]; + int colour = character & 0x7F; + if (colour & (1 << 7)) { + return ColourMapA[colour].light; + } else { + return ColourMapA[colour].mid_dark; + } } static void scrolling_text_format(utf8 *dst, rct_draw_scroll_text *scrollText) diff --git a/src/drawing/string.c b/src/drawing/string.c index 97206c6090..1472f4ca90 100644 --- a/src/drawing/string.c +++ b/src/drawing/string.c @@ -19,6 +19,7 @@ *****************************************************************************/ #include "../addresses.h" +#include "../interface/colour.h" #include "../localisation/localisation.h" #include "../sprites.h" #include "../world/map.h" @@ -509,7 +510,7 @@ void colour_char_window(uint8 colour, uint16* current_font_flags,uint8* palette_ int eax; - eax = RCT2_ADDRESS(0x0141FD45, uint8)[colour * 8]; + eax = ColourMapB[colour].b; if (*current_font_flags & 2) { eax |= 0x0A0A00; } @@ -1246,18 +1247,18 @@ static void ttf_process_initial_colour(int colour, text_draw_info *info) uint32 eax; if (info->flags & 4) { if (info->flags & 8) { - eax = RCT2_ADDRESS(0x0141FC48, uint8)[colour * 8]; + eax = ColourMapA[colour].mid_light; eax = eax << 16; - eax = eax | RCT2_ADDRESS(0x0141FC46, uint8)[colour * 8]; + eax = eax | ColourMapA[colour].dark; } else { - eax = RCT2_ADDRESS(0x0141FC49, uint8)[colour * 8]; + eax = ColourMapA[colour].light; eax = eax << 16; - eax = eax | RCT2_ADDRESS(0x0141FC47, uint8)[colour * 8]; + eax = eax | ColourMapA[colour].mid_dark; } } else { - eax = RCT2_ADDRESS(0x0141FC4A, uint8)[colour * 8]; + eax = ColourMapA[colour].lighter; eax = eax << 16; - eax = eax | RCT2_ADDRESS(0x0141FC48, uint8)[colour * 8]; + eax = eax | ColourMapA[colour].mid_light; } // Adjust text palette. Store current colour? ; diff --git a/src/interface/colour.c b/src/interface/colour.c new file mode 100644 index 0000000000..7a880c4062 --- /dev/null +++ b/src/interface/colour.c @@ -0,0 +1,25 @@ +#include "../drawing/drawing.h" +#include "colour.h" + +rct_colour_map_a *ColourMapA = (rct_colour_map_a*)0x0141FC44; +rct_colour_map_b *ColourMapB = (rct_colour_map_b*)0x0141FD44; + +void colours_init_maps() +{ + // Get colour maps from g1 + for (int i = 0; i < 32; i++) { + rct_g1_element *g1Element = &g1Elements[4915 + i]; + + uint8 *dstA = (uint8*)&ColourMapA[i]; + uint8 *dstB = (uint8*)&ColourMapB[i]; + for (int j = 0; j < 4; j++) { + dstA[j] = g1Element->offset[0xF5 + j]; + } + for (int j = 0; j < 4; j++) { + dstA[j + 4] = g1Element->offset[0xF9 + j]; + } + for (int j = 0; j < 4; j++) { + dstB[j] = g1Element->offset[0xFD + j]; + } + } +} diff --git a/src/interface/colour.h b/src/interface/colour.h index 27372884f1..5cb9b3bc84 100644 --- a/src/interface/colour.h +++ b/src/interface/colour.h @@ -1,6 +1,8 @@ #ifndef _COLOUR_H_ #define _COLOUR_H_ +#include "../common.h" + /** * Colour IDs as used by the colour dropdown, NOT palette indices. */ @@ -50,4 +52,33 @@ enum { #define COLOUR_FLAG_TRANSLUCENT (1 << 7) #define TRANSLUCENT(x) ((x) | COLOUR_FLAG_TRANSLUCENT) +#define NUM_COLOURS 32 + +typedef struct { + uint8 darkest; + uint8 darker; + uint8 dark; + uint8 mid_dark; + uint8 mid_light; + uint8 light; + uint8 lighter; + uint8 lightest; +} rct_colour_map_a; + +typedef struct { + uint8 a; + uint8 b; + uint8 c; + uint8 d; + uint8 e; + uint8 f; + uint8 g; + uint8 h; +} rct_colour_map_b; + +extern rct_colour_map_a *ColourMapA; +extern rct_colour_map_b *ColourMapB; + +void colours_init_maps(); + #endif \ No newline at end of file diff --git a/src/interface/viewport.c b/src/interface/viewport.c index 34a7aa41a0..cb664d8422 100644 --- a/src/interface/viewport.c +++ b/src/interface/viewport.c @@ -32,6 +32,7 @@ #include "../world/entrance.h" #include "../world/footpath.h" #include "../world/scenery.h" +#include "colour.h" #include "viewport.h" #include "window.h" @@ -87,26 +88,16 @@ struct paint_struct{ */ void viewport_init_all() { - int i, d; - rct_g1_element *g1_element; - - // Palette from sprites? - d = 0; - for (i = 4915; i < 4947; i++) { - g1_element = &g1Elements[i]; - *((int*)(0x0141FC44 + d)) = *((int*)(&g1_element->offset[0xF5])); - *((int*)(0x0141FC48 + d)) = *((int*)(&g1_element->offset[0xF9])); - *((int*)(0x0141FD44 + d)) = *((int*)(&g1_element->offset[0xFD])); - d += 8; - } + colours_init_maps(); // Setting up windows RCT2_GLOBAL(RCT2_ADDRESS_NEW_WINDOW_PTR, rct_window*) = g_window_list; RCT2_GLOBAL(0x01423604, sint32) = 0; // Setting up viewports - for (i = 0; i < 9; i++) + for (int i = 0; i < 9; i++) { g_viewport_list[i].width = 0; + } RCT2_NEW_VIEWPORT = NULL; // ? diff --git a/src/interface/widget.c b/src/interface/widget.c index 1142e055c1..94557fa04e 100644 --- a/src/interface/widget.c +++ b/src/interface/widget.c @@ -591,24 +591,24 @@ static void widget_groupbox_draw(rct_drawpixelinfo *dpi, rct_window *w, int widg colour = w->colours[widget->colour] & 0x7F; // Border left of text - gfx_fill_rect(dpi, l, t, l + 4, t, RCT2_ADDRESS(0x0141FC47, uint8)[colour * 8]); - gfx_fill_rect(dpi, l + 1, t + 1, l + 4, t + 1, RCT2_ADDRESS(0x0141FC4B, uint8)[colour * 8]); + gfx_fill_rect(dpi, l, t, l + 4, t, ColourMapA[colour].mid_dark); + gfx_fill_rect(dpi, l + 1, t + 1, l + 4, t + 1, ColourMapA[colour].lighter); // Border right of text - gfx_fill_rect(dpi, textRight, t, r - 1, t, RCT2_ADDRESS(0x0141FC47, uint8)[colour * 8]); - gfx_fill_rect(dpi, textRight, t + 1, r - 2, t + 1, RCT2_ADDRESS(0x0141FC4B, uint8)[colour * 8]); + gfx_fill_rect(dpi, textRight, t, r - 1, t, ColourMapA[colour].mid_dark); + gfx_fill_rect(dpi, textRight, t + 1, r - 2, t + 1, ColourMapA[colour].lighter); // Border right - gfx_fill_rect(dpi, r - 1, t + 1, r - 1, b - 1, RCT2_ADDRESS(0x0141FC47, uint8)[colour * 8]); - gfx_fill_rect(dpi, r, t, r, b, RCT2_ADDRESS(0x0141FC4B, uint8)[colour * 8]); + gfx_fill_rect(dpi, r - 1, t + 1, r - 1, b - 1, ColourMapA[colour].mid_dark); + gfx_fill_rect(dpi, r, t, r, b, ColourMapA[colour].lighter); // Border bottom - gfx_fill_rect(dpi, l, b - 1, r - 2, b - 1, RCT2_ADDRESS(0x0141FC47, uint8)[colour * 8]); - gfx_fill_rect(dpi, l, b, r - 1, b, RCT2_ADDRESS(0x0141FC4B, uint8)[colour * 8]); + gfx_fill_rect(dpi, l, b - 1, r - 2, b - 1, ColourMapA[colour].mid_dark); + gfx_fill_rect(dpi, l, b, r - 1, b, ColourMapA[colour].lighter); // Border left - gfx_fill_rect(dpi, l, t + 1, l, b - 2, RCT2_ADDRESS(0x0141FC47, uint8)[colour * 8]); - gfx_fill_rect(dpi, l + 1, t + 2, l + 1, b - 2, RCT2_ADDRESS(0x0141FC4B, uint8)[colour * 8]); + gfx_fill_rect(dpi, l, t + 1, l, b - 2, ColourMapA[colour].mid_dark); + gfx_fill_rect(dpi, l + 1, t + 2, l + 1, b - 2, ColourMapA[colour].lighter); } /** @@ -650,7 +650,7 @@ static void widget_caption_draw(rct_drawpixelinfo *dpi, rct_window *w, int widge press |= 0x80; gfx_fill_rect_inset(dpi, l, t, r, b, colour, press); - gfx_fill_rect(dpi, r + 1, t, r + 1, b, *((char*)(0x0141FC47 + (colour * 8)))); + gfx_fill_rect(dpi, r + 1, t, r + 1, b, ColourMapA[colour].mid_dark); } else { // press = 0x60; @@ -661,7 +661,7 @@ static void widget_caption_draw(rct_drawpixelinfo *dpi, rct_window *w, int widge // Black caption bars look slightly green, this fixes that if (colour == 0) - gfx_fill_rect(dpi, l + 1, t + 1, r - 1, b - 1, *((char*)(0x0141FC46 + (colour * 8)))); + gfx_fill_rect(dpi, l + 1, t + 1, r - 1, b - 1, ColourMapA[colour].dark); else gfx_fill_rect(dpi, l + 1, t + 1, r - 1, b - 1, 0x2000000 | 47); } @@ -853,12 +853,12 @@ static void widget_hscrollbar_draw(rct_drawpixelinfo *dpi, rct_scroll *scroll, i { colour &= 0x7F; // Trough - gfx_fill_rect(dpi, l + 10, t, r - 10, b, *((uint8*)(0x0141FC4B + (colour * 8)))); - gfx_fill_rect(dpi, l + 10, t, r - 10, b, 0x1000000 | *((uint8*)(0x0141FC47 + (colour * 8)))); - gfx_fill_rect(dpi, l + 10, t + 2, r - 10, t + 2, *((uint8*)(0x0141FC47 + (colour * 8)))); - gfx_fill_rect(dpi, l + 10, t + 3, r - 10, t + 3, *((uint8*)(0x0141FC4B + (colour * 8)))); - gfx_fill_rect(dpi, l + 10, t + 7, r - 10, t + 7, *((uint8*)(0x0141FC47 + (colour * 8)))); - gfx_fill_rect(dpi, l + 10, t + 8, r - 10, t + 8, *((uint8*)(0x0141FC4B + (colour * 8)))); + gfx_fill_rect(dpi, l + 10, t, r - 10, b, ColourMapA[colour].lighter); + gfx_fill_rect(dpi, l + 10, t, r - 10, b, 0x1000000 | ColourMapA[colour].mid_dark); + gfx_fill_rect(dpi, l + 10, t + 2, r - 10, t + 2, ColourMapA[colour].mid_dark); + gfx_fill_rect(dpi, l + 10, t + 3, r - 10, t + 3, ColourMapA[colour].lighter); + gfx_fill_rect(dpi, l + 10, t + 7, r - 10, t + 7, ColourMapA[colour].mid_dark); + gfx_fill_rect(dpi, l + 10, t + 8, r - 10, t + 8, ColourMapA[colour].lighter); // Left button gfx_fill_rect_inset(dpi, l, t, l + 9, b, colour, (scroll->flags & HSCROLLBAR_LEFT_PRESSED ? 0x20 : 0)); @@ -879,12 +879,12 @@ static void widget_vscrollbar_draw(rct_drawpixelinfo *dpi, rct_scroll *scroll, i { colour &= 0x7F; // Trough - gfx_fill_rect(dpi, l, t + 10, r, b - 10, *((uint8*)(0x0141FC4B + (colour * 8)))); - gfx_fill_rect(dpi, l, t + 10, r, b - 10, 0x1000000 | *((uint8*)(0x0141FC47 + (colour * 8)))); - gfx_fill_rect(dpi, l + 2, t + 10, l + 2, b - 10, *((uint8*)(0x0141FC47 + (colour * 8)))); - gfx_fill_rect(dpi, l + 3, t + 10, l + 3, b - 10, *((uint8*)(0x0141FC4B + (colour * 8)))); - gfx_fill_rect(dpi, l + 7, t + 10, l + 7, b - 10, *((uint8*)(0x0141FC47 + (colour * 8)))); - gfx_fill_rect(dpi, l + 8, t + 10, l + 8, b - 10, *((uint8*)(0x0141FC4B + (colour * 8)))); + gfx_fill_rect(dpi, l, t + 10, r, b - 10, ColourMapA[colour].lighter); + gfx_fill_rect(dpi, l, t + 10, r, b - 10, 0x1000000 | ColourMapA[colour].mid_dark); + gfx_fill_rect(dpi, l + 2, t + 10, l + 2, b - 10, ColourMapA[colour].mid_dark); + gfx_fill_rect(dpi, l + 3, t + 10, l + 3, b - 10, ColourMapA[colour].lighter); + gfx_fill_rect(dpi, l + 7, t + 10, l + 7, b - 10, ColourMapA[colour].mid_dark); + gfx_fill_rect(dpi, l + 8, t + 10, l + 8, b - 10, ColourMapA[colour].lighter); // Up button gfx_fill_rect_inset(dpi, l, t, r, t + 9, colour, (scroll->flags & VSCROLLBAR_UP_PRESSED ? 0x20 : 0)); @@ -934,7 +934,7 @@ static void widget_draw_image(rct_drawpixelinfo *dpi, rct_window *w, int widgetI if (widget_is_disabled(w, widgetIndex)) { // Draw greyed out (light border bottom right shadow) colour = w->colours[widget->colour]; - colour = RCT2_ADDRESS(0x00141FC4A, uint8)[(colour & 0x7F) * 8] & 0xFF; + colour = ColourMapA[colour & 0x7F].lighter; uint8 palette[256]; memset(palette, colour, 256); @@ -946,7 +946,7 @@ static void widget_draw_image(rct_drawpixelinfo *dpi, rct_window *w, int widgetI // Draw greyed out (dark) colour = w->colours[widget->colour]; - colour = RCT2_ADDRESS(0x00141FC48, uint8)[(colour & 0x7F) * 8] & 0xFF; + colour = ColourMapA[colour & 0x7F].mid_light; memset(palette, colour, 256); palette[0] = 0; @@ -1210,7 +1210,7 @@ static void widget_text_box_draw(rct_drawpixelinfo *dpi, rct_window *w, int widg } if (gTextBoxFrameNo <= 15){ - uint8 colour = RCT2_ADDRESS(0x0141FC48, uint8)[w->colours[1] * 8]; + uint8 colour = ColourMapA[w->colours[1]].mid_light; gfx_fill_rect(dpi, cur_x, t + 9, cur_x + width, t + 9, colour + 5); } } diff --git a/src/interface/window.h b/src/interface/window.h index 429a6ce07f..2bc6786893 100644 --- a/src/interface/window.h +++ b/src/interface/window.h @@ -27,6 +27,7 @@ #include "../ride/ride.h" #include "../ride/vehicle.h" #include "../world/park.h" +#include "colour.h" struct rct_window; union rct_window_event; diff --git a/src/windows/dropdown.c b/src/windows/dropdown.c index 6e3335e92c..2b471441e4 100644 --- a/src/windows/dropdown.c +++ b/src/windows/dropdown.c @@ -308,10 +308,8 @@ static void window_dropdown_paint(rct_window *w, rct_drawpixelinfo *dpi) gfx_fill_rect(dpi, l, t, r, b, (RCT2_ADDRESS(0x009DEDF4, uint8)[w->colours[0]] | 0x02000000) + 1); gfx_fill_rect(dpi, l, t + 1, r, b + 1, (RCT2_ADDRESS(0x009DEDF4, uint8)[w->colours[0]] | 0x02000000) + 2); } else { - gfx_fill_rect(dpi, l, t, r, b, - *((char*)(0x00141FC47 + (w->colours[0] * 8)))); - gfx_fill_rect(dpi, l, t + 1, r, b + 1, - *((char*)(0x00141FC4B + (w->colours[0] * 8)))); + gfx_fill_rect(dpi, l, t, r, b, ColourMapA[w->colours[0]].mid_dark); + gfx_fill_rect(dpi, l, t + 1, r, b + 1, ColourMapA[w->colours[0]].lightest); } } else { // diff --git a/src/windows/editor_inventions_list.c b/src/windows/editor_inventions_list.c index 0a5975f1a6..c88b5ae741 100644 --- a/src/windows/editor_inventions_list.c +++ b/src/windows/editor_inventions_list.c @@ -760,7 +760,7 @@ static void window_editor_inventions_list_paint(rct_window *w, rct_drawpixelinfo w->y + widget->top + 1, w->x + widget->right - 1, w->y + widget->bottom - 1, - RCT2_GLOBAL(0x0141FC44 + (w->colours[1] * 8), uint8) + ColourMapA[w->colours[1]].darkest ); researchItem = _editorInventionsListDraggedItem; @@ -814,7 +814,7 @@ static void window_editor_inventions_list_scrollpaint(rct_window *w, rct_drawpix utf8 buffer[256], *ptr; // Draw background - colour = RCT2_GLOBAL(0x0141FC48 + (w->colours[1] * 8), uint8); + colour = ColourMapA[w->colours[1]].mid_light; colour = (colour << 24) | (colour << 16) | (colour << 8) | colour; gfx_clear(dpi, colour); diff --git a/src/windows/editor_object_selection.c b/src/windows/editor_object_selection.c index bd3b37fdd1..f5eecca514 100644 --- a/src/windows/editor_object_selection.c +++ b/src/windows/editor_object_selection.c @@ -1269,7 +1269,7 @@ static void window_editor_object_selection_paint(rct_window *w, rct_drawpixelinf w->y + widget->top + 1, w->x + widget->right - 1, w->y + widget->bottom - 1, - RCT2_ADDRESS(0x0141FC44, uint8)[w->colours[1] * 8] + ColourMapA[w->colours[1]].darkest ); // Draw number of selected items @@ -1425,7 +1425,7 @@ static void window_editor_object_selection_scrollpaint(rct_window *w, rct_drawpi bool ridePage = (w->selected_tab == WINDOW_OBJECT_SELECTION_PAGE_RIDE_VEHICLES_ATTRACTIONS); - colour = RCT2_ADDRESS(0x0141FC48, uint8)[w->colours[1] * 8]; + colour = ColourMapA[w->colours[1]].mid_light; colour = (colour << 24) | (colour << 16) | (colour << 8) | colour; gfx_clear(dpi, colour); diff --git a/src/windows/editor_objective_options.c b/src/windows/editor_objective_options.c index 9dd1d28e63..5edd55dc33 100644 --- a/src/windows/editor_objective_options.c +++ b/src/windows/editor_objective_options.c @@ -1187,7 +1187,7 @@ static void window_editor_objective_options_rides_scrollpaint(rct_window *w, rct rct_string_id stringId; rct_ride *ride; - colour = RCT2_GLOBAL(0x0141FC48 + (w->colours[1] * 8), uint8); + colour = ColourMapA[w->colours[1]].mid_light; gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, colour); for (i = 0; i < w->no_list_items; i++) { diff --git a/src/windows/finances.c b/src/windows/finances.c index c809ff38f1..006b9a76ff 100644 --- a/src/windows/finances.c +++ b/src/windows/finances.c @@ -665,7 +665,7 @@ static void window_finances_summary_paint(rct_window *w, rct_drawpixelinfo *dpi) for (i = 0; i < 14; i++) { // Darken every even row if (i % 2 == 0) - gfx_fill_rect(dpi, x, y, x + 513 - 2, y + 9, RCT2_GLOBAL(0x0141FC4A + (w->colours[1] * 8), uint8) | 0x1000000); + gfx_fill_rect(dpi, x, y, x + 513 - 2, y + 9, ColourMapA[w->colours[1]].lighter | 0x1000000); gfx_draw_string_left(dpi, STR_FINANCES_SUMMARY_RIDE_CONSTRUCTION + i, NULL, 0, x, y - 1); y += 10; diff --git a/src/windows/guest.c b/src/windows/guest.c index f52c018e41..3c5870e649 100644 --- a/src/windows/guest.c +++ b/src/windows/guest.c @@ -1669,7 +1669,7 @@ void window_guest_rides_scroll_paint(rct_window *w, rct_drawpixelinfo *dpi, int // dx int bottom = dpi->y + dpi->height - 1; - int colour = RCT2_ADDRESS(0x141FC48, uint8)[w->colours[1] * 8]; + int colour = ColourMapA[w->colours[1]].mid_light; gfx_fill_rect(dpi, left, top, right, bottom, colour); for (int list_index = 0; list_index < w->no_list_items; list_index++){ diff --git a/src/windows/guest_list.c b/src/windows/guest_list.c index 6302ff358c..04edb7f2ce 100644 --- a/src/windows/guest_list.c +++ b/src/windows/guest_list.c @@ -646,7 +646,7 @@ static void window_guest_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, uint32 argument_1, argument_2; // Background fill - gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ((char*)0x0141FC48)[w->colours[1] * 8]); + gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light); switch (_window_guest_list_selected_tab) { case PAGE_INDIVIDUAL: diff --git a/src/windows/install_track.c b/src/windows/install_track.c index 08130e8f00..a81bb58868 100644 --- a/src/windows/install_track.c +++ b/src/windows/install_track.c @@ -302,7 +302,7 @@ static void window_install_track_paint(rct_window *w, rct_drawpixelinfo *dpi) widget = &window_install_track_widgets[WIDX_TRACK_PREVIEW]; x = w->x + widget->left + 1; y = w->y + widget->top + 1; - colour = RCT2_GLOBAL(0x0141FC44 + (w->colours[0] * 8), uint8); + colour = ColourMapA[w->colours[0]].darkest; gfx_fill_rect(dpi, x, y, x + 369, y + 216, colour); //call 6d3993 (load track) diff --git a/src/windows/loadsave.c b/src/windows/loadsave.c index c3594396da..c732ff19de 100644 --- a/src/windows/loadsave.c +++ b/src/windows/loadsave.c @@ -532,7 +532,7 @@ static void window_loadsave_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, i rct_string_id stringId, templateStringId = 3165; char *templateString; - gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, RCT2_ADDRESS(0x0141FC48,uint8)[w->colours[1] * 8]); + gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light); templateString = (char*)language_get_string(templateStringId); for (i = 0; i < w->no_list_items; i++) { diff --git a/src/windows/new_ride.c b/src/windows/new_ride.c index 739122f782..5fc5406d83 100644 --- a/src/windows/new_ride.c +++ b/src/windows/new_ride.c @@ -777,7 +777,7 @@ static void window_new_ride_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, i if (_window_new_ride_current_tab == WINDOW_NEW_RIDE_PAGE_RESEARCH) return; - gfx_clear(dpi, RCT2_GLOBAL(0x0141FC48 + (w->colours[1] * 8), uint8) * 0x1010101); + gfx_clear(dpi, ColourMapA[w->colours[1]].mid_light * 0x1010101); int x = 1; int y = 1; diff --git a/src/windows/player_list.c b/src/windows/player_list.c index e342dc4325..f482781f10 100644 --- a/src/windows/player_list.c +++ b/src/windows/player_list.c @@ -269,7 +269,7 @@ static void window_player_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi { int y; - gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ((char*)0x0141FC48)[w->colours[1] * 8]); + gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light); y = 0; for (int i = 0; i < network_get_num_players(); i++) { diff --git a/src/windows/ride_list.c b/src/windows/ride_list.c index 92fd542508..b557ca0f1c 100644 --- a/src/windows/ride_list.c +++ b/src/windows/ride_list.c @@ -451,7 +451,7 @@ static void window_ride_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int i, y, format, formatSecondary, argument; rct_ride *ride; - gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width, dpi->y + dpi->height, RCT2_GLOBAL(0x0141FC48 + (w->colours[1] * 8), uint8)); + gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width, dpi->y + dpi->height, ColourMapA[w->colours[1]].mid_light); y = 0; for (i = 0; i < w->no_list_items; i++) { diff --git a/src/windows/scenery.c b/src/windows/scenery.c index f09153e7dc..f9f99c7c73 100644 --- a/src/windows/scenery.c +++ b/src/windows/scenery.c @@ -1046,7 +1046,7 @@ void window_scenery_paint(rct_window *w, rct_drawpixelinfo *dpi) */ void window_scenery_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex) { - gfx_clear(dpi, ((char*)0x0141FC48)[w->colours[1] * 8] * 0x1010101); + gfx_clear(dpi, ColourMapA[w->colours[1]].mid_light * 0x1010101); uint8 tabIndex = window_scenery_active_tab_index; diff --git a/src/windows/server_list.c b/src/windows/server_list.c index 5bbb4bfbff..e8935c65dc 100644 --- a/src/windows/server_list.c +++ b/src/windows/server_list.c @@ -378,7 +378,7 @@ static void window_server_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi { uint32 colour; - colour = ((char*)0x0141FC48)[w->colours[1] * 8]; + colour = ColourMapA[w->colours[1]].mid_light; colour = (colour << 24) | (colour << 16) | (colour << 8) | colour; gfx_clear(dpi, colour); diff --git a/src/windows/shortcut_keys.c b/src/windows/shortcut_keys.c index b96522bbde..db3db113e1 100644 --- a/src/windows/shortcut_keys.c +++ b/src/windows/shortcut_keys.c @@ -240,7 +240,7 @@ static void window_shortcut_scrollmouseover(rct_window *w, int scrollIndex, int */ static void window_shortcut_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex) { - gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, RCT2_ADDRESS(0x0141FC48,uint8)[w->colours[1] * 8]); + gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light); for (int i = 0; i < w->no_list_items; ++i) { int y = i * 10; diff --git a/src/windows/staff_list.c b/src/windows/staff_list.c index 5156de4cf5..797531f490 100644 --- a/src/windows/staff_list.c +++ b/src/windows/staff_list.c @@ -621,7 +621,7 @@ void window_staff_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int sc uint8 selectedTab; rct_peep *peep; - gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ((char*)0x0141FC48)[w->colours[1] * 8]); + gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light); y = 0; i = 0; diff --git a/src/windows/text_input.c b/src/windows/text_input.c index a990d07905..48cbef83d6 100644 --- a/src/windows/text_input.c +++ b/src/windows/text_input.c @@ -310,7 +310,7 @@ static void window_text_input_paint(rct_window *w, rct_drawpixelinfo *dpi) } if (w->frame_no > 15){ - uint8 colour = RCT2_ADDRESS(0x0141FC48, uint8)[w->colours[1] * 8]; + uint8 colour = ColourMapA[w->colours[1]].mid_light; gfx_fill_rect(dpi, cursorX, y + 9, cursorX + width, y + 9, colour + 5); } diff --git a/src/windows/themes.c b/src/windows/themes.c index 01cba5d5bc..51694d493d 100644 --- a/src/windows/themes.c +++ b/src/windows/themes.c @@ -844,8 +844,8 @@ void window_themes_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scroll return; if ((w->colours[1] & 0x80) == 0) - //gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ((char*)0x0141FC48)[w->colours[1] * 8]); - gfx_clear(dpi, ((char*)0x0141FC48)[w->colours[1] * 8] * 0x1010101); + //gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light); + gfx_clear(dpi, ColourMapA[w->colours[1]].mid_light * 0x1010101); y = 0; for (int i = 0; i < get_colour_scheme_tab_count(); i++) { if (y > dpi->y + dpi->height) { @@ -862,9 +862,9 @@ void window_themes_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scroll gfx_fill_rect(dpi, 0, y + _row_height - 1, window_themes_widgets[WIDX_THEMES_LIST].right, y + _row_height - 1, colour + 2); } else { - colour = RCT2_ADDRESS(0x0141FC47, uint8)[w->colours[1] * 8]; + colour = ColourMapA[w->colours[1]].mid_dark; gfx_fill_rect(dpi, 0, y + _row_height - 2, window_themes_widgets[WIDX_THEMES_LIST].right, y + _row_height - 2, colour); - colour = RCT2_ADDRESS(0x0141FC4B, uint8)[w->colours[1] * 8]; + colour = ColourMapA[w->colours[1]].lightest; gfx_fill_rect(dpi, 0, y + _row_height - 1, window_themes_widgets[WIDX_THEMES_LIST].right, y + _row_height - 1, colour); } } diff --git a/src/windows/tile_inspector.c b/src/windows/tile_inspector.c index 354188e13b..e6e8122b24 100644 --- a/src/windows/tile_inspector.c +++ b/src/windows/tile_inspector.c @@ -318,7 +318,7 @@ static void window_tile_inspector_scrollpaint(rct_window *w, rct_drawpixelinfo * int clearance_height = element->clearance_height; if ((i & 1) != 0) - gfx_fill_rect(dpi, x - 15, y, x + WW - 20, y + 11, RCT2_GLOBAL(0x0141FC4A + (w->colours[1] * 8), uint8) | 0x1000000); + gfx_fill_rect(dpi, x - 15, y, x + WW - 20, y + 11, ColourMapA[w->colours[1]].lighter | 0x1000000); switch (type) { case MAP_ELEMENT_TYPE_SURFACE: diff --git a/src/windows/title_editor.c b/src/windows/title_editor.c index 8a4bd3a2e4..eb82afe2a8 100644 --- a/src/windows/title_editor.c +++ b/src/windows/title_editor.c @@ -887,7 +887,7 @@ void window_title_editor_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int bool selected, hover, error, inTitle; int y, x, x2, width; - gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ((char*)0x0141FC48)[w->colours[1] * 8]); + gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light); title_sequence *title = &gConfigTitleSequences.presets[gCurrentTitleSequence]; @@ -901,14 +901,14 @@ void window_title_editor_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int hover = false; if (i == w->selected_list_item) { selected = true; - gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + ROW_HEIGHT - 1, RCT2_GLOBAL(0x0141FC46 + (w->colours[1] * 8), uint8)); + gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + ROW_HEIGHT - 1, ColourMapA[w->colours[1]].dark); } else if (i == _window_title_editor_highlighted_index || (i == gTitleScriptSave && inTitle && gCurrentTitleSequence == gCurrentPreviewTitleSequence)) { hover = true; - gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + ROW_HEIGHT - 1, RCT2_GLOBAL(0x0141FC47 + (w->colours[1] * 8), uint8)); + gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + ROW_HEIGHT - 1, ColourMapA[w->colours[1]].mid_dark); } else if (i & 1) { - gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + ROW_HEIGHT - 1, RCT2_GLOBAL(0x0141FC4A + (w->colours[1] * 8), uint8) | 0x1000000); + gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + ROW_HEIGHT - 1, ColourMapA[w->colours[1]].lighter | 0x1000000); } RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 0, uint32) = (uint32)&title->saves[i]; @@ -933,14 +933,14 @@ void window_title_editor_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int error = false; if (i == w->selected_list_item) { selected = true; - gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + ROW_HEIGHT - 1, RCT2_GLOBAL(0x0141FC46 + (w->colours[1] * 8), uint8)); + gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + ROW_HEIGHT - 1, ColourMapA[w->colours[1]].dark); } else if (i == (int)_window_title_editor_highlighted_index || (i == gTitleScriptCommand && inTitle && gCurrentTitleSequence == gCurrentPreviewTitleSequence)) { hover = true; - gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + ROW_HEIGHT - 1, RCT2_GLOBAL(0x0141FC47 + (w->colours[1] * 8), uint8)); + gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + ROW_HEIGHT - 1, ColourMapA[w->colours[1]].mid_dark); } else if (i & 1) { - gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + ROW_HEIGHT - 1, RCT2_GLOBAL(0x0141FC4A + (w->colours[1] * 8), uint8) | 0x1000000); + gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + ROW_HEIGHT - 1, ColourMapA[w->colours[1]].lighter | 0x1000000); } rct_string_id commandName; diff --git a/src/windows/title_scenarioselect.c b/src/windows/title_scenarioselect.c index 58dbeb6a29..0a2f57f157 100644 --- a/src/windows/title_scenarioselect.c +++ b/src/windows/title_scenarioselect.c @@ -317,7 +317,7 @@ static void window_scenarioselect_scrollpaint(rct_window *w, rct_drawpixelinfo * int i, y, colour, highlighted, highlighted_format, unhighlighted_format; rct_scenario_basic *scenario; - colour = ((char*)0x0141FC48)[w->colours[1] * 8]; + colour = ColourMapA[w->colours[1]].mid_light; colour = (colour << 24) | (colour << 16) | (colour << 8) | colour; gfx_clear(dpi, colour); diff --git a/src/windows/track_list.c b/src/windows/track_list.c index d6ea9d5d1f..fc8b3187ca 100644 --- a/src/windows/track_list.c +++ b/src/windows/track_list.c @@ -403,7 +403,7 @@ static void window_track_list_paint(rct_window *w, rct_drawpixelinfo *dpi) widget = &window_track_list_widgets[WIDX_TRACK_PREVIEW]; x = w->x + widget->left + 1; y = w->y + widget->top + 1; - colour = RCT2_GLOBAL(0x0141FC44 + (w->colours[0] * 8), uint8); + colour = ColourMapA[w->colours[0]].darkest; gfx_fill_rect(dpi, x, y, x + 369, y + 216, colour); trackDesign = track_get_info(trackIndex, &image); @@ -562,7 +562,7 @@ static void window_track_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int i, x, y, colour; utf8 *trackDesignItem, *trackDesignList = RCT2_ADDRESS(RCT2_ADDRESS_TRACK_LIST, utf8); - colour = RCT2_GLOBAL(0x00141FC48 + (w->colours[0] * 8), uint8); + colour = ColourMapA[w->colours[0]].mid_light; colour = (colour << 24) | (colour << 16) | (colour << 8) | colour; gfx_clear(dpi, colour);