From 64312957a0ce4c03c3ad6ac808ad5d677424061f Mon Sep 17 00:00:00 2001 From: Hielke Morsink Date: Tue, 29 Dec 2015 23:19:01 +0100 Subject: [PATCH] Added column headers instead of labels, and added columns for the flags. --- data/language/english_uk.txt | 10 +++++- src/localisation/string_ids.h | 8 +++++ src/windows/tile_inspector.c | 62 ++++++++++++++++++++--------------- 3 files changed, 53 insertions(+), 27 deletions(-) diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index 731d1dd628..9deeb751d7 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -3946,7 +3946,15 @@ STR_5604 :Guest has bought item STR_5605 :Guest has used facility STR_5606 :Guest has died STR_5607 :Remove -STR_5608 :{SMALLFONT}{BLACK}Remove the currently selected map element. This will forcefully remove it, so no cash will be used/gained. Use with caution. +STR_5608 :BH +STR_5609 :CH +STR_5610 :{SMALLFONT}{BLACK}Remove the currently selected map element. This will forcefully remove it, so no cash will be used/gained. Use with caution. +STR_5611 :G +STR_5612 :{SMALLFONT}{BLACK}Ghost flag +STR_5613 :B +STR_5614 :{SMALLFONT}{BLACK}Broken flag +STR_5615 :L +STR_5616 :{SMALLFONT}{BLACK}Last element for tile flag ##################### # Rides/attractions # diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index ba7d04c483..43be830387 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -2004,9 +2004,17 @@ enum { STR_TILE_INSPECTOR_ENTRANCE_START = 5335, STR_TILE_INSPECTOR_ELEMENT_TYPE = 5338, STR_TILE_INSPECTOR_BASE_HEIGHT = 5339, + STR_TILE_INSPECTOR_BASE_HEIGHT_SHORT = 5608, STR_TILE_INSPECTOR_CLEARANGE_HEIGHT = 5340, + STR_TILE_INSPECTOR_CLEARANGE_HEIGHT_SHORT = 5609, STR_TILE_INSPECTOR_FLAGS = 5341, STR_TILE_INSPECTOR_CHOOSE_MSG = 5342, + STR_TILE_INSPECTOR_FLAG_GHOST_SHORT = 5611, + STR_TILE_INSPECTOR_FLAG_GHOST = 5612, + STR_TILE_INSPECTOR_FLAG_BROKEN_SHORT = 5613, + STR_TILE_INSPECTOR_FLAG_BROKEN = 5614, + STR_TILE_INSPECTOR_FLAG_LAST_SHORT = 5615, + STR_TILE_INSPECTOR_FLAG_LAST = 5616, STR_AUTO_STAFF_PLACEMENT = 5343, diff --git a/src/windows/tile_inspector.c b/src/windows/tile_inspector.c index b6aa69a85e..3eb124e83b 100644 --- a/src/windows/tile_inspector.c +++ b/src/windows/tile_inspector.c @@ -36,6 +36,7 @@ enum WINDOW_TILE_INSPECTOR_WIDGET_IDX { WIDX_REMOVE, WIDX_MOVE_DOWN, WIDX_MOVE_UP, + WIDX_COLUMN_LAST = 13, }; #define WW 500 @@ -54,13 +55,21 @@ enum WINDOW_TILE_INSPECTOR_WIDGET_IDX { #define SCROLL_BOTTOM_OFFSET 15 #define LIST_ITEM_HEIGHT 11 +// Column offsets +#define COL_X_TYPE (BW + 3) // Type +#define COL_X_BH (COL_X_TYPE + 200) // Base height +#define COL_X_CH (COL_X_BH + 25) // Clearance height +#define COL_X_GF (COL_X_CH + 25) // Ghost flag +#define COL_X_BF (COL_X_GF + 15) // Broken flag +#define COL_X_LF (COL_X_BF + 15) // Last for tile flag + rct_widget window_tile_inspector_widgets[] = { { WWT_FRAME, 0, 0, WW - 1, 0, WH - 1, 0x0FFFFFFFF, STR_NONE }, // panel / background { WWT_CAPTION, 0, 1, WW - 2, 1, 14, STR_TILE_INSPECTOR_TITLE, STR_WINDOW_TITLE_TIP }, // title bar { WWT_CLOSEBOX, 0, WW - 13, WW - 3, 2, 13, STR_CLOSE_X, STR_CLOSE_WINDOW_TIP }, // close x button // Map element list - { WWT_SCROLL, 1, BW + 3, WW - 3, 30 + BS, WH - SCROLL_BOTTOM_OFFSET, 2, STR_NONE }, // scroll area + { WWT_SCROLL, 1, BW + 3, WW - 3, 29, WH - SCROLL_BOTTOM_OFFSET, 2, STR_NONE }, // scroll area // Buttons { WWT_CLOSEBOX, 1, BX, BW, BY, BH, STR_INSERT_CORRUPT, STR_INSERT_CORRUPT_TIP }, // Insert corrupt button @@ -68,6 +77,14 @@ rct_widget window_tile_inspector_widgets[] = { { WWT_CLOSEBOX, 1, BX, BX + BW / 2 - 1, BY + BS * 3, BH + BS * 3, 5375, 5390 }, // Move down { WWT_CLOSEBOX, 1, BX + BW / 2, BW, BY + BS * 3, BH + BS * 3, 5376, 5391 }, // Move up + // Column headers + { WWT_13, 1, COL_X_TYPE, COL_X_BH - 1, 16, 16 + 13, STR_TILE_INSPECTOR_ELEMENT_TYPE, STR_NONE }, + { WWT_13, 1, COL_X_BH, COL_X_CH - 1, 16, 16 + 13, STR_TILE_INSPECTOR_BASE_HEIGHT_SHORT, STR_TILE_INSPECTOR_BASE_HEIGHT }, + { WWT_13, 1, COL_X_CH, COL_X_GF - 1, 16, 16 + 13, STR_TILE_INSPECTOR_CLEARANGE_HEIGHT_SHORT, STR_TILE_INSPECTOR_CLEARANGE_HEIGHT }, + { WWT_13, 1, COL_X_GF, COL_X_BF - 1, 16, 16 + 13, STR_TILE_INSPECTOR_FLAG_GHOST_SHORT, STR_TILE_INSPECTOR_FLAG_GHOST }, + { WWT_13, 1, COL_X_BF, COL_X_LF - 1, 16, 16 + 13, STR_TILE_INSPECTOR_FLAG_BROKEN_SHORT, STR_TILE_INSPECTOR_FLAG_BROKEN }, + { WWT_13, 1, COL_X_LF, WW - 2, 16, 16 + 13, STR_TILE_INSPECTOR_FLAG_LAST_SHORT, STR_TILE_INSPECTOR_FLAG_LAST }, + { WIDGETS_END }, }; @@ -416,6 +433,7 @@ static void window_tile_inspector_invalidate(rct_window *w) window_tile_inspector_widgets[WIDX_TITLE].right = w->width - 2; window_tile_inspector_widgets[WIDX_LIST].right = w->width - 3; window_tile_inspector_widgets[WIDX_LIST].bottom = w->height - SCROLL_BOTTOM_OFFSET; + window_tile_inspector_widgets[WIDX_COLUMN_LAST].right = w->width - 2; } static void window_tile_inspector_paint(rct_window *w, rct_drawpixelinfo *dpi) @@ -426,15 +444,11 @@ static void window_tile_inspector_paint(rct_window *w, rct_drawpixelinfo *dpi) window_draw_widgets(w, dpi); x = w->x + 20; - y = w->y + 25; + y = w->y + 15; - if (window_tile_inspector_tile_x == -1) { - - // No tile selected + if (window_tile_inspector_tile_x == -1) { // No tile selected gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_CHOOSE_MSG, NULL, 12, x, y); - } else { - sprintf( buffer, "X: %d, Y: %d", @@ -443,16 +457,7 @@ static void window_tile_inspector_paint(rct_window *w, rct_drawpixelinfo *dpi) ); gfx_draw_string(dpi, buffer, 12, x, y); - } - - // Draw header labels - x = w->x + 155; - draw_string_left_underline(dpi, STR_TILE_INSPECTOR_ELEMENT_TYPE, NULL, 12, x, y); - draw_string_left_underline(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT, NULL, 12, x + 200, y); - draw_string_left_underline(dpi, STR_TILE_INSPECTOR_CLEARANGE_HEIGHT, NULL, 12, x + 280, y); - draw_string_left_underline(dpi, STR_TILE_INSPECTOR_FLAGS, NULL, 12, x + 390, y); - } static void window_tile_inspector_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex) @@ -474,12 +479,13 @@ static void window_tile_inspector_scrollpaint(rct_window *w, rct_drawpixelinfo * int clearance_height = element->clearance_height; // Fill colour for current list element + const int list_width = w->widgets[WIDX_LIST].right - w->widgets[WIDX_LIST].left; if (i == w->selected_list_item) // Currently selected element - gfx_fill_rect(dpi, x, y, x + MAX_WW - 20, y + LIST_ITEM_HEIGHT - 1, ColourMapA[w->colours[1]].darker | 0x1000000); + gfx_fill_rect(dpi, 0, y, list_width, y + LIST_ITEM_HEIGHT - 1, ColourMapA[w->colours[1]].darker | 0x1000000); else if (i == window_tile_inspector_highlighted_index) // Hovering - gfx_fill_rect(dpi, x, y, x + MAX_WW - 20, y + LIST_ITEM_HEIGHT - 1, ColourMapA[w->colours[1]].mid_dark | 0x1000000); + gfx_fill_rect(dpi, 0, y, list_width, y + LIST_ITEM_HEIGHT - 1, ColourMapA[w->colours[1]].mid_dark | 0x1000000); else if ((i & 1) != 0) // odd / even check - gfx_fill_rect(dpi, x, y, x + MAX_WW - 20, y + LIST_ITEM_HEIGHT - 1, ColourMapA[w->colours[1]].lighter | 0x1000000); + gfx_fill_rect(dpi, 0, y, list_width, y + LIST_ITEM_HEIGHT - 1, ColourMapA[w->colours[1]].lighter | 0x1000000); switch (type) { case MAP_ELEMENT_TYPE_SURFACE: @@ -560,15 +566,19 @@ static void window_tile_inspector_scrollpaint(rct_window *w, rct_drawpixelinfo * type_name = buffer; } - gfx_draw_string(dpi, type_name, 12, x, y); - gfx_draw_string_left(dpi, 5182, &base_height, 12, x + 200, y); - gfx_draw_string_left(dpi, 5182, &clearance_height, 12, x + 280, y); - - // TODO: Add small columns for ghost, broken, last element for tile (G, B, L) + // Undo relative scroll offset, but keep the 3 pixel padding + x = -w->widgets[WIDX_LIST].left + 3; + const int ghost = element->flags & MAP_ELEMENT_FLAG_GHOST ? 1 : 0; + const int broken = element->flags & MAP_ELEMENT_FLAG_BROKEN ? 1 : 0; + const int last = element->flags & MAP_ELEMENT_FLAG_LAST_TILE ? 1 : 0; + gfx_draw_string(dpi, type_name, 12, x + COL_X_TYPE, y); + gfx_draw_string_left(dpi, 5182, &base_height, 12, x + COL_X_BH, y); + gfx_draw_string_left(dpi, 5182, &clearance_height, 12, x + COL_X_CH, y); + gfx_draw_string_left(dpi, 5182, &ghost, 12, x + COL_X_GF, y); + gfx_draw_string_left(dpi, 5182, &broken, 12, x + COL_X_BF, y); + gfx_draw_string_left(dpi, 5182, &last, 12, x + COL_X_LF, y); y -= LIST_ITEM_HEIGHT; i++; - } while (!map_element_is_last_for_tile(element++)); - }