From 4243545faa223160d9bf7e81806f50cc50bed0ed Mon Sep 17 00:00:00 2001 From: Broxzier Date: Sun, 2 Oct 2016 22:15:54 +0200 Subject: [PATCH] Large scenery info --- data/language/en-GB.txt | 2 ++ src/localisation/string_ids.h | 6 ++++-- src/windows/tile_inspector.c | 33 +++++++++++++++++++++++++++------ 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index 1b2b9a3bc6..22ad62a67b 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -4290,6 +4290,8 @@ STR_5978 :Left side up STR_5979 :{WINDOW_COLOUR_2}Fence type: {BLACK}{COMMA16} STR_5980 :{WINDOW_COLOUR_2}Banner text: {BLACK}{STRINGID} STR_5981 :{WINDOW_COLOUR_2}Not a banner +STR_5982 :{WINDOW_COLOUR_2}Large scenery type: {BLACK}{COMMA16} +STR_5983 :{WINDOW_COLOUR_2}Large scenery piece ID: {BLACK}{COMMA16} ############# # Scenarios # diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index ab23951443..75f576f9c3 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -3628,8 +3628,10 @@ enum { STR_TILE_INSPECTOR_FENCE_SLOPED_LEFT = 5977, STR_TILE_INSPECTOR_FENCE_SLOPED_RIGHT = 5978, STR_TILE_INSPECTOR_FENCE_TYPE = 5979, - STR_TILE_INSPECTOR_FENCE_BANNER_TEXT = 5980, - STR_TILE_INSPECTOR_FENCE_BANNER_NONE = 5981, + STR_TILE_INSPECTOR_ENTRY_BANNER_TEXT = 5980, + STR_TILE_INSPECTOR_ENTRY_BANNER_NONE = 5981, + STR_TILE_INSPECTOR_LARGE_SCENERY_TYPE = 5982, + STR_TILE_INSPECTOR_LARGE_SCENERY_PIECE_ID = 5983, // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working STR_COUNT = 32768 diff --git a/src/windows/tile_inspector.c b/src/windows/tile_inspector.c index 6083746541..a8b653d00e 100644 --- a/src/windows/tile_inspector.c +++ b/src/windows/tile_inspector.c @@ -372,7 +372,7 @@ static rct_widget windowTileInspectorWidgetsFence[] = { #define LAR_GBPB PADDING_BOTTOM // Large scenery group box properties bottom #define LAR_GBPT (LAR_GBPB + 16 + 1 * 21) // Large scenery group box properties top #define LAR_GBDB (LAR_GBPT + GROUPBOX_PADDING) // Large scenery group box info bottom -#define LAR_GBDT (LAR_GBDB + 20 + 0 * 11) // Large scenery group box info top +#define LAR_GBDT (LAR_GBDB + 20 + 3 * 11) // Large scenery group box info top static rct_widget windowTileInspectorWidgetsLargeScenery[] = { MAIN_TILE_INSPECTOR_WIDGETS, { WWT_SPINNER, 1, GBS(WH - LAR_GBPT, 1, 0), STR_NONE, STR_NONE }, // WIDX_LARGE_SCENERY_SPINNER_HEIGHT @@ -1708,8 +1708,7 @@ static void window_tile_inspector_paint(rct_window *w, rct_drawpixelinfo *dpi) { int y = w->y + w->widgets[WIDX_GROUPBOX_DETAILS].top + 14; // Get map element - rct_map_element *mapElement = window_tile_inspector_get_selected_element(w); - mapElement += w->selected_list_item; + rct_map_element *const mapElement = window_tile_inspector_get_selected_element(w); switch (w->page) { case PAGE_SURFACE: { @@ -1902,13 +1901,13 @@ static void window_tile_inspector_paint(rct_window *w, rct_drawpixelinfo *dpi) { sint16 fenceType = mapElement->properties.fence.type; gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_FENCE_TYPE, &fenceType, 12, x, y); - // Banner text + // Banner info rct_wall_scenery_entry fenceEntry = get_wall_entry(fenceType)->wall; if (fenceEntry.flags & WALL_SCENERY_BANNER) { - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_FENCE_BANNER_TEXT, &gBanners[mapElement->properties.fence.item[0]].string_idx, 12, x, y + 11); + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_TEXT, &gBanners[mapElement->properties.fence.item[0]].string_idx, 12, x, y + 11); } else { - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_FENCE_BANNER_NONE, NULL, 12, x, y + 11); + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_NONE, NULL, 12, x, y + 11); } // Properties @@ -1930,6 +1929,28 @@ static void window_tile_inspector_paint(rct_window *w, rct_drawpixelinfo *dpi) { case PAGE_LARGE_SCENERY: { + // Details + // Type + sint16 largeSceneryType = mapElement->properties.scenerymultiple.type & 0x03FF; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_LARGE_SCENERY_TYPE, &largeSceneryType, 12, x, y); + + // Part ID + sint16 pieceID = (mapElement->properties.scenerymultiple.type & 0xFC00) >> 10; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_LARGE_SCENERY_PIECE_ID, &pieceID, 12, x, y + 11); + + // Banner info + rct_scenery_entry *largeSceneryEntry = get_large_scenery_entry(mapElement->properties.scenerymultiple.type & MAP_ELEMENT_LARGE_TYPE_MASK); + if (largeSceneryEntry->large_scenery.var_11 != 0xFF) { + const int bannerIndex = (mapElement->type & 0xC0) | + ((mapElement->properties.scenerymultiple.colour[0] & 0xE0) >> 2) | + ((mapElement->properties.scenerymultiple.colour[1] & 0xE0) >> 5); + //window_sign_open(bannerIndex); + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_TEXT, &gBanners[bannerIndex].string_idx, 12, x, y + 22); + } + else { + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_NONE, NULL, 12, x, y + 22); + } + // Properties // Raise / lower label y = w->y + w->widgets[WIDX_LARGE_SCENERY_SPINNER_HEIGHT].top;