mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-24 15:24:30 +01:00
[WIP] Prepared group boxes for details and properties
This commit is contained in:
@@ -4228,6 +4228,28 @@ STR_5916 :{COMMA16} player
|
||||
STR_5917 :{COMMA16} players
|
||||
STR_5918 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COMMA16}
|
||||
STR_5919 :{COMMA16}
|
||||
STR_5920 :Surface details
|
||||
STR_5921 :Path details
|
||||
STR_5922 :Track details
|
||||
STR_5923 :Scenery details
|
||||
STR_5924 :Entrance details
|
||||
STR_5925 :Fence details
|
||||
STR_5926 :Large scenery details
|
||||
STR_5927 :Banner details
|
||||
STR_5928 :Currupt element details
|
||||
STR_5929 :Properties
|
||||
STR_5930 :Terrain texture: {BLACK}{STRINGID}
|
||||
STR_5931 :Terrain edge: {BLACK}{STRINGID}
|
||||
STR_5932 :Water level: {BLACK}{COMMA16}
|
||||
STR_5933 :Remove park fences
|
||||
STR_5934 :Restore park fences
|
||||
|
||||
#TODO: Add and use those in strings_ids and tile_inspector.c
|
||||
STR_5835 :{WINDOW_COLOUR_2}Ride ID: {BLACK}{COMMA16}
|
||||
STR_5836 :{WINDOW_COLOUR_2}Ride name: {BLACK}{STRINGID}
|
||||
STR_5837 :{WINDOW_COLOUR_2}Track piece sequence: {BLACK}{COMMA16}/{COMMA16}
|
||||
|
||||
#TODO: Fix rebase
|
||||
STR_5920 :Render weather effects
|
||||
STR_5921 :{SMALLFONT}{BLACK}If enabled, rain and gloomy colours will be rendered during storms.
|
||||
STR_5922 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{SMALLFONT}{BLACK}Max {STRINGID}
|
||||
|
||||
@@ -3290,16 +3290,31 @@ enum {
|
||||
STR_NOTIFICATION_GUEST_BOUGHT_ITEM = 5604,
|
||||
STR_NOTIFICATION_GUEST_USED_FACILITY = 5605,
|
||||
STR_NOTIFICATION_GUEST_DIED = 5606,
|
||||
STR_REMOVE_SELECTED_ELEMENT_TIP = 5607,
|
||||
STR_TILE_INSPECTOR_BASE_HEIGHT_SHORT = 5608,
|
||||
STR_TILE_INSPECTOR_CLEARANGE_HEIGHT_SHORT = 5609,
|
||||
// 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_REMOVE_SELECTED_ELEMENT_TIP = 5610,
|
||||
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_TILE_INSPECTOR_GROUPBOX_SURFACE_INFO = 5920,
|
||||
STR_TILE_INSPECTOR_GROUPBOX_PATH_INFO = 5921,
|
||||
STR_TILE_INSPECTOR_GROUPBOX_TRACK_INFO = 5922,
|
||||
STR_TILE_INSPECTOR_GROUPBOX_SCENERY_INFO = 5923,
|
||||
STR_TILE_INSPECTOR_GROUPBOX_ENTRANCE_INFO = 5924,
|
||||
STR_TILE_INSPECTOR_GROUPBOX_FENCE_INFO = 5925,
|
||||
STR_TILE_INSPECTOR_GROUPBOX_LARGE_SCENERY_INFO = 5926,
|
||||
STR_TILE_INSPECTOR_GROUPBOX_BANNER_INFO = 5927,
|
||||
STR_TILE_INSPECTOR_GROUPBOX_CORRUPT_INFO = 5928,
|
||||
STR_TILE_INSPECTOR_GROUPBOX_PROPERTIES = 5929,
|
||||
STR_TILE_INSPECTOR_SURFACE_TERAIN = 5930,
|
||||
STR_TILE_INSPECTOR_SURFACE_EDGE = 5931,
|
||||
STR_TILE_INSPECTOR_SURFACE_WATER_LEVEL = 5932,
|
||||
STR_TILE_INSPECTOR_SURFACE_REMOVE_FENCES = 5933,
|
||||
STR_TILE_INSPECTOR_SURFACE_RESTORE_FENCES = 5934,
|
||||
STR_MOVE_SELECTED_ELEMENT_UP_TIP = 5617,
|
||||
STR_MOVE_SELECTED_ELEMENT_DOWN_TIP = 5618,
|
||||
STR_SCENARIO_CATEGORY_RCT1 = 5619,
|
||||
@@ -3570,6 +3585,7 @@ enum {
|
||||
STR_MULTIPLAYER_PLAYER_COUNT_PLURAL = 5917,
|
||||
STR_SERVER_MAX_PLAYERS_VALUE = 5918,
|
||||
STR_COMMA16 = 5919,
|
||||
|
||||
STR_RENDER_WEATHER_EFFECTS = 5920,
|
||||
STR_RENDER_WEATHER_EFFECTS_TIP = 5921,
|
||||
STR_MAX_VEHICLES_TIP = 5922,
|
||||
|
||||
@@ -59,7 +59,18 @@ static const rct_string_id EntranceTypes[] = {
|
||||
STR_TILE_INSPECTOR_ENTRANCE_TYPE_PARK_ENTRANC,
|
||||
};
|
||||
|
||||
|
||||
enum WINDOW_TILE_INSPECTOR_PAGES {
|
||||
PAGE_DEFAULT,
|
||||
PAGE_SURFACE,
|
||||
PAGE_PATH,
|
||||
PAGE_TRACK,
|
||||
PAGE_SCENERY,
|
||||
PAGE_ENTRANCE,
|
||||
PAGE_FENCE,
|
||||
PAGE_LARGE_SCENERY,
|
||||
PAGE_BANNER,
|
||||
PAGE_CORRUPT
|
||||
};
|
||||
|
||||
enum WINDOW_TILE_INSPECTOR_WIDGET_IDX {
|
||||
WIDX_BACKGROUND,
|
||||
@@ -77,13 +88,53 @@ enum WINDOW_TILE_INSPECTOR_WIDGET_IDX {
|
||||
WIDX_COLUMN_GHOSTFLAG,
|
||||
WIDX_COLUMN_BROKENFLAG,
|
||||
WIDX_COLUMN_LASTFLAG,
|
||||
|
||||
PAGE_START,
|
||||
|
||||
// Surface
|
||||
WIDX_SURFACE_GROUPBOX_DETAILS = PAGE_START,
|
||||
WIDX_SURFACE_GROUPBOX_PROPERTIES,
|
||||
WIDX_SURFACE_BUTTON_REMOVE_FENCES,
|
||||
WIDX_SURFACE_BUTTON_RESTORE_FENCES,
|
||||
|
||||
// Path
|
||||
WIDX_PATH_GROUPBOX_PROPERTIES = PAGE_START,
|
||||
WIDX_PATH_GROUPBOX_DETAILS,
|
||||
|
||||
// Path
|
||||
WIDX_TRACK_GROUPBOX_PROPERTIES = PAGE_START,
|
||||
WIDX_TRACK_GROUPBOX_DETAILS,
|
||||
|
||||
// Path
|
||||
WIDX_SCENERY_GROUPBOX_PROPERTIES = PAGE_START,
|
||||
WIDX_SCENERY_GROUPBOX_DETAILS,
|
||||
|
||||
// Path
|
||||
WIDX_ENTRANCE_GROUPBOX_PROPERTIES = PAGE_START,
|
||||
WIDX_ENTRANCE_GROUPBOX_DETAILS,
|
||||
|
||||
// Path
|
||||
WIDX_FENCE_GROUPBOX_PROPERTIES = PAGE_START,
|
||||
WIDX_FENCE_GROUPBOX_DETAILS,
|
||||
|
||||
// Path
|
||||
WIDX_LARGE_SCENERY_GROUPBOX_PROPERTIES = PAGE_START,
|
||||
WIDX_LARGE_SCENERY_GROUPBOX_DETAILS,
|
||||
|
||||
// Path
|
||||
WIDX_BANNER_GROUPBOX_PROPERTIES = PAGE_START,
|
||||
WIDX_BANNER_GROUPBOX_DETAILS,
|
||||
|
||||
// Path
|
||||
WIDX_CORRUPT_GROUPBOX_PROPERTIES = PAGE_START,
|
||||
WIDX_CORRUPT_GROUPBOX_DETAILS,
|
||||
};
|
||||
|
||||
#define WW 400
|
||||
#define WH 200
|
||||
#define WH 220
|
||||
#define MIN_WW WW
|
||||
#define MAX_WW WW
|
||||
#define MIN_WH 150
|
||||
#define MIN_WH 200
|
||||
#define MAX_WH 800
|
||||
|
||||
#define BW (WW - 5) // Button's right side
|
||||
@@ -92,7 +143,8 @@ enum WINDOW_TILE_INSPECTOR_WIDGET_IDX {
|
||||
#define BH (BY + 23) // Button's Bottom
|
||||
#define BS 24
|
||||
|
||||
#define SCROLL_BOTTOM_OFFSET 15
|
||||
#define PADDING_BOTTOM 15
|
||||
#define GROUPBOX_PADDING 6
|
||||
#define LIST_ITEM_HEIGHT 11
|
||||
|
||||
// Column offsets
|
||||
@@ -103,32 +155,188 @@ enum WINDOW_TILE_INSPECTOR_WIDGET_IDX {
|
||||
#define COL_X_BF (COL_X_GF + 12) // Broken flag
|
||||
#define COL_X_LF (COL_X_BF + 12) // Last for tile flag
|
||||
|
||||
#define MAIN_TILE_INSPECTOR_WIDGETS \
|
||||
{ WWT_FRAME, 0, 0, WW - 1, 0, WH - 1, 0xFFFFFFFF, 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 */ \
|
||||
{ WWT_SCROLL, 1, 3, WW - 4, 57, WH - PADDING_BOTTOM, 2, STR_NONE }, /* Element list */ \
|
||||
/* Buttons */ \
|
||||
{ WWT_FLATBTN, 1, BX, BW, BY, BH, SPR_MAP, STR_INSERT_CORRUPT_TIP }, /* Insert corrupt button */ \
|
||||
{ WWT_FLATBTN, 1, BX - BS * 1, BW - BS * 1, BY, BH, SPR_DEMOLISH, STR_REMOVE_SELECTED_ELEMENT_TIP }, /* Remove button */ \
|
||||
{ WWT_CLOSEBOX, 1, BX - BS * 2, BW - BS * 2, BY, BY + 11, STR_UP, STR_MOVE_SELECTED_ELEMENT_UP_TIP }, /* Move down */ \
|
||||
{ WWT_CLOSEBOX, 1, BX - BS * 2, BW - BS * 2, BH - 11, BH, STR_DOWN, STR_MOVE_SELECTED_ELEMENT_DOWN_TIP }, /* Move up */ \
|
||||
{ WWT_FLATBTN, 1, BX - BS * 3, BW - BS * 3, BY, BH, SPR_ROTATE_ARROW, STR_ROTATE_SELECTED_ELEMENT_TIP }, /* Rotate button */ \
|
||||
/* Column headers */ \
|
||||
{ WWT_13, 1, COL_X_TYPE, COL_X_BH - 1, 42, 42 + 13, STR_NONE, STR_NONE }, /* Type */ \
|
||||
{ WWT_13, 1, COL_X_BH, COL_X_CH - 1, 42, 42 + 13, STR_NONE, STR_TILE_INSPECTOR_BASE_HEIGHT }, /* Base height */ \
|
||||
{ WWT_13, 1, COL_X_CH, COL_X_GF - 1, 42, 42 + 13, STR_NONE, STR_TILE_INSPECTOR_CLEARANCE_HEIGHT }, /* Clearance height */ \
|
||||
{ WWT_13, 1, COL_X_GF, COL_X_BF - 1, 42, 42 + 13, STR_NONE, STR_TILE_INSPECTOR_FLAG_GHOST }, /* Ghost flag */ \
|
||||
{ WWT_13, 1, COL_X_BF, COL_X_LF - 1, 42, 42 + 13, STR_NONE, STR_TILE_INSPECTOR_FLAG_BROKEN }, /* Broken flag */ \
|
||||
{ WWT_13, 1, COL_X_LF, WW - 3, 42, 42 + 13, STR_NONE, STR_TILE_INSPECTOR_FLAG_LAST } /* Last of tile flag */
|
||||
|
||||
rct_widget window_tile_inspector_widgets[] = {
|
||||
{ WWT_FRAME, 0, 0, WW - 1, 0, WH - 1, 0xFFFFFFFF, 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
|
||||
MAIN_TILE_INSPECTOR_WIDGETS,
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
// Map element list
|
||||
{ WWT_SCROLL, 1, 3, WW - 4, 57, WH - SCROLL_BOTTOM_OFFSET, 2, STR_NONE }, // scroll area
|
||||
// Calculates the .left, .right, .top and .bottom for buttons in a group box
|
||||
#define GBB(GBT, col, row) 12 + col * 115, 12 + col * 115 + 110, WH - GBT + 14 + row * 21, WH - GBT + 31 + row * 21
|
||||
|
||||
// Buttons
|
||||
{ WWT_FLATBTN, 1, BX, BW, BY, BH, SPR_MAP, STR_INSERT_CORRUPT_TIP }, // Insert corrupt button
|
||||
{ WWT_FLATBTN, 1, BX - BS * 1, BW - BS * 1, BY, BH, SPR_DEMOLISH, STR_REMOVE_SELECTED_ELEMENT_TIP }, // Remove button
|
||||
{ WWT_CLOSEBOX, 1, BX - BS * 2, BW - BS * 2, BY, BY + 11, STR_UP, STR_MOVE_SELECTED_ELEMENT_UP_TIP }, // Move down
|
||||
{ WWT_CLOSEBOX, 1, BX - BS * 2, BW - BS * 2, BH - 11, BH, STR_DOWN, STR_MOVE_SELECTED_ELEMENT_DOWN_TIP }, // Move up
|
||||
{ WWT_FLATBTN, 1, BX - BS * 3, BW - BS * 3, BY, BH, SPR_ROTATE_ARROW, STR_ROTATE_SELECTED_ELEMENT_TIP }, // Rotate button
|
||||
// Offsets from the bottom for the group boxes. They are used as anchors for other widgets
|
||||
#define SUR_GBPB PADDING_BOTTOM // Surface group box properties bottom
|
||||
#define SUR_GBPT (SUR_GBPB + 16 + 1 * 21) // Surface group box properties top
|
||||
#define SUR_GBDB (SUR_GBPT + GROUPBOX_PADDING) // Surface group box details bottom
|
||||
#define SUR_GBDT (SUR_GBDB + 20 + 3 * 11) // Surface group box details top
|
||||
rct_widget window_tile_inspector_widgets_surface[] = {
|
||||
MAIN_TILE_INSPECTOR_WIDGETS,
|
||||
|
||||
// Column headers
|
||||
{ WWT_13, 1, COL_X_TYPE, COL_X_BH - 1, 42, 42 + 13, STR_NONE, STR_NONE }, // Type
|
||||
{ WWT_13, 1, COL_X_BH, COL_X_CH - 1, 42, 42 + 13, STR_NONE, STR_TILE_INSPECTOR_BASE_HEIGHT }, // Base height
|
||||
{ WWT_13, 1, COL_X_CH, COL_X_GF - 1, 42, 42 + 13, STR_NONE, STR_TILE_INSPECTOR_CLEARANCE_HEIGHT }, // Clearance height
|
||||
{ WWT_13, 1, COL_X_GF, COL_X_BF - 1, 42, 42 + 13, STR_NONE, STR_TILE_INSPECTOR_FLAG_GHOST }, // Ghost flag
|
||||
{ WWT_13, 1, COL_X_BF, COL_X_LF - 1, 42, 42 + 13, STR_NONE, STR_TILE_INSPECTOR_FLAG_BROKEN }, // Broken flag
|
||||
{ WWT_13, 1, COL_X_LF, WW - 3, 42, 42 + 13, STR_NONE, STR_TILE_INSPECTOR_FLAG_LAST }, // Last of tile flag
|
||||
// Group boxes
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - SUR_GBDT, WH - SUR_GBDB, STR_TILE_INSPECTOR_GROUPBOX_SURFACE_INFO, STR_NONE }, // WIDX_SURFACE_GROUPBOX_DETAILS
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - SUR_GBPT, WH - SUR_GBPB, STR_TILE_INSPECTOR_GROUPBOX_PROPERTIES, STR_NONE }, // WIDX_SURFACE_GROUPBOX_PROPERTIES
|
||||
{ WWT_CLOSEBOX, 1, GBB(SUR_GBPT, 0, 0), STR_TILE_INSPECTOR_SURFACE_REMOVE_FENCES, STR_NONE }, // WIDX_SURFACE_BUTTON_REMOVE_FENCES
|
||||
{ WWT_CLOSEBOX, 1, GBB(SUR_GBPT, 1, 0), STR_TILE_INSPECTOR_SURFACE_RESTORE_FENCES, STR_NONE }, // WIDX_SURFACE_BUTTON_RESTORE_FENCES
|
||||
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
#define PAT_GBPB PADDING_BOTTOM // Path group box properties bottom
|
||||
#define PAT_GBPT (PAT_GBPB + 16) // Path group box properties top
|
||||
#define PAT_GBDB (PAT_GBPT + GROUPBOX_PADDING) // Path group box info bottom
|
||||
#define PAT_GBDT (PAT_GBDB + 20) // Path group box info top
|
||||
rct_widget window_tile_inspector_widgets_path[] = {
|
||||
MAIN_TILE_INSPECTOR_WIDGETS,
|
||||
|
||||
// Group boxes
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - PAT_GBDT, WH - PAT_GBDB, STR_TILE_INSPECTOR_GROUPBOX_PATH_INFO, STR_NONE }, // WIDX_PATH_GROUPBOX_DETAILS
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - PAT_GBPT, WH - PAT_GBPB, STR_TILE_INSPECTOR_GROUPBOX_PROPERTIES, STR_NONE }, // WIDX_PATH_GROUPBOX_PROPERTIES
|
||||
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
#define TRA_GBPB PADDING_BOTTOM // Track group box properties bottom
|
||||
#define TRA_GBPT (TRA_GBPB + 16) // Track group box properties top
|
||||
#define TRA_GBDB (TRA_GBPT + GROUPBOX_PADDING) // Track group box info bottom
|
||||
#define TRA_GBDT (TRA_GBDB + 20) // Track group box info top
|
||||
rct_widget window_tile_inspector_widgets_track[] = {
|
||||
MAIN_TILE_INSPECTOR_WIDGETS,
|
||||
|
||||
// Group boxes
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - TRA_GBDT, WH - TRA_GBDB, STR_TILE_INSPECTOR_GROUPBOX_TRACK_INFO, STR_NONE }, // WIDX_TRACK_GROUPBOX_DETAILS
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - TRA_GBPT, WH - TRA_GBPB, STR_TILE_INSPECTOR_GROUPBOX_PROPERTIES, STR_NONE }, // WIDX_TRACK_GROUPBOX_PROPERTIES
|
||||
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
#define SCE_GBPB PADDING_BOTTOM // Scenery group box properties bottom
|
||||
#define SCE_GBPT (SCE_GBPB + 16) // Scenery group box properties top
|
||||
#define SCE_GBDB (SCE_GBPT + GROUPBOX_PADDING) // Scenery group box info bottom
|
||||
#define SCE_GBDT (SCE_GBDB + 20) // Scenery group box info top
|
||||
rct_widget window_tile_inspector_widgets_scenery[] = {
|
||||
MAIN_TILE_INSPECTOR_WIDGETS,
|
||||
|
||||
// Group boxes
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - SCE_GBDT, WH - SCE_GBDB, STR_TILE_INSPECTOR_GROUPBOX_SCENERY_INFO, STR_NONE }, // WIDX_SCENERY_GROUPBOX_DETAILS
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - SCE_GBPT, WH - SCE_GBPB, STR_TILE_INSPECTOR_GROUPBOX_PROPERTIES, STR_NONE }, // WIDX_SCENERY_GROUPBOX_PROPERTIES
|
||||
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
#define ENT_GBPB PADDING_BOTTOM // Entrance group box properties bottom
|
||||
#define ENT_GBPT (ENT_GBPB + 16) // Entrance group box properties top
|
||||
#define ENT_GBDB (ENT_GBPT + GROUPBOX_PADDING) // Entrance group box info bottom
|
||||
#define ENT_GBDT (ENT_GBDB + 20) // Entrance group box info top
|
||||
rct_widget window_tile_inspector_widgets_entrance[] = {
|
||||
MAIN_TILE_INSPECTOR_WIDGETS,
|
||||
|
||||
// Group boxes
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - ENT_GBDT, WH - ENT_GBDB, STR_TILE_INSPECTOR_GROUPBOX_ENTRANCE_INFO, STR_NONE }, // WIDX_ENTRANCE_GROUPBOX_DETAILS
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - ENT_GBPT, WH - ENT_GBPB, STR_TILE_INSPECTOR_GROUPBOX_PROPERTIES, STR_NONE }, // WIDX_ENTRANCE_GROUPBOX_PROPERTIES
|
||||
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
#define FEN_GBPB PADDING_BOTTOM // Fence group box properties bottom
|
||||
#define FEN_GBPT (FEN_GBPB + 16) // Fence group box properties top
|
||||
#define FEN_GBDB (FEN_GBPT + GROUPBOX_PADDING) // Fence group box info bottom
|
||||
#define FEN_GBDT (FEN_GBDB + 20) // Fence group box info top
|
||||
rct_widget window_tile_inspector_widgets_fence[] = {
|
||||
MAIN_TILE_INSPECTOR_WIDGETS,
|
||||
|
||||
// Group boxes
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - FEN_GBDT, WH - FEN_GBDB, STR_TILE_INSPECTOR_GROUPBOX_FENCE_INFO, STR_NONE }, // WIDX_FENCE_GROUPBOX_DETAILS
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - FEN_GBPT, WH - FEN_GBPB, STR_TILE_INSPECTOR_GROUPBOX_PROPERTIES, STR_NONE }, // WIDX_FENCE_GROUPBOX_PROPERTIES
|
||||
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
#define LAR_GBPB PADDING_BOTTOM // Large scenery group box properties bottom
|
||||
#define LAR_GBPT (LAR_GBPB + 16) // 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) // Large scenery group box info top
|
||||
rct_widget window_tile_inspector_widgets_large_scenery[] = {
|
||||
MAIN_TILE_INSPECTOR_WIDGETS,
|
||||
|
||||
// Group boxes
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - LAR_GBDT, WH - LAR_GBDB, STR_TILE_INSPECTOR_GROUPBOX_LARGE_SCENERY_INFO, STR_NONE }, // WIDX_LARGE_SCENERY_GROUPBOX_DETAILS
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - LAR_GBPT, WH - LAR_GBPB, STR_TILE_INSPECTOR_GROUPBOX_PROPERTIES, STR_NONE }, // WIDX_LARGE_SCENERY_GROUPBOX_PROPERTIES
|
||||
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
#define BAN_GBPB PADDING_BOTTOM // Banner group box properties bottom
|
||||
#define BAN_GBPT (BAN_GBPB + 16) // Banner group box properties top
|
||||
#define BAN_GBDB (BAN_GBPT + GROUPBOX_PADDING) // Banner group box info bottom
|
||||
#define BAN_GBDT (BAN_GBDB + 20) // Banner group box info top
|
||||
rct_widget window_tile_inspector_widgets_banner[] = {
|
||||
MAIN_TILE_INSPECTOR_WIDGETS,
|
||||
|
||||
// Group boxes
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - BAN_GBDT, WH - BAN_GBDB, STR_TILE_INSPECTOR_GROUPBOX_BANNER_INFO, STR_NONE }, // WIDX_BANNER_GROUPBOX_DETAILS
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - BAN_GBPT, WH - BAN_GBPB, STR_TILE_INSPECTOR_GROUPBOX_PROPERTIES, STR_NONE }, // WIDX_BANNER_GROUPBOX_PROPERTIES
|
||||
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
#define COR_GBPB PADDING_BOTTOM // Corrupt element group box properties bottom
|
||||
#define COR_GBPT (COR_GBPB + 16) // Corrupt element group box properties top
|
||||
#define COR_GBDB (COR_GBPT + GROUPBOX_PADDING) // Corrupt element group box info bottom
|
||||
#define COR_GBDT (COR_GBDB + 20) // Corrupt element group box info top
|
||||
rct_widget window_tile_inspector_widgets_corrupt[] = {
|
||||
MAIN_TILE_INSPECTOR_WIDGETS,
|
||||
|
||||
// Group boxes
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - COR_GBDT, WH - COR_GBDB, STR_TILE_INSPECTOR_GROUPBOX_CORRUPT_INFO, STR_NONE }, // WIDX_CORRUPT_GROUPBOX_DETAILS
|
||||
{ WWT_GROUPBOX, 1, 6, WW - 6, WH - COR_GBPT, WH - COR_GBPB, STR_TILE_INSPECTOR_GROUPBOX_PROPERTIES, STR_NONE }, // WIDX_CORRUPT_GROUPBOX_PROPERTIES
|
||||
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
rct_widget *tile_inspector_widgets[] = {
|
||||
window_tile_inspector_widgets,
|
||||
window_tile_inspector_widgets_surface,
|
||||
window_tile_inspector_widgets_path,
|
||||
window_tile_inspector_widgets_track,
|
||||
window_tile_inspector_widgets_scenery,
|
||||
window_tile_inspector_widgets_entrance,
|
||||
window_tile_inspector_widgets_fence,
|
||||
window_tile_inspector_widgets_large_scenery,
|
||||
window_tile_inspector_widgets_banner,
|
||||
window_tile_inspector_widgets_corrupt,
|
||||
};
|
||||
|
||||
unsigned short bottom_boxes_height[] = {
|
||||
0,
|
||||
SUR_GBDT - SUR_GBPB + GROUPBOX_PADDING,
|
||||
PAT_GBDT - PAT_GBPB + GROUPBOX_PADDING,
|
||||
TRA_GBDT - TRA_GBPB + GROUPBOX_PADDING,
|
||||
SCE_GBDT - SCE_GBPB + GROUPBOX_PADDING,
|
||||
ENT_GBDT - ENT_GBPB + GROUPBOX_PADDING,
|
||||
FEN_GBDT - FEN_GBPB + GROUPBOX_PADDING,
|
||||
LAR_GBDT - LAR_GBPB + GROUPBOX_PADDING,
|
||||
BAN_GBDT - BAN_GBPB + GROUPBOX_PADDING,
|
||||
COR_GBDT - COR_GBPB + GROUPBOX_PADDING,
|
||||
};
|
||||
|
||||
static sint16 window_tile_inspector_highlighted_index = -1;
|
||||
|
||||
static int window_tile_inspector_tile_x;
|
||||
@@ -180,6 +388,32 @@ static rct_window_event_list window_tile_inspector_events = {
|
||||
window_tile_inspector_scrollpaint
|
||||
};
|
||||
|
||||
static uint64 window_tile_inspector_page_enabled_widgets[] = {
|
||||
(1UL << WIDX_CLOSE),
|
||||
(1UL << WIDX_CLOSE) | (1UL << WIDX_REMOVE) | (1UL << WIDX_SURFACE_BUTTON_REMOVE_FENCES) | (1UL << WIDX_SURFACE_BUTTON_RESTORE_FENCES),
|
||||
(1UL << WIDX_CLOSE) | (1UL << WIDX_REMOVE),
|
||||
(1UL << WIDX_CLOSE) | (1UL << WIDX_REMOVE),
|
||||
(1UL << WIDX_CLOSE) | (1UL << WIDX_REMOVE),
|
||||
(1UL << WIDX_CLOSE) | (1UL << WIDX_REMOVE),
|
||||
(1UL << WIDX_CLOSE) | (1UL << WIDX_REMOVE),
|
||||
(1UL << WIDX_CLOSE) | (1UL << WIDX_REMOVE),
|
||||
(1UL << WIDX_CLOSE) | (1UL << WIDX_REMOVE),
|
||||
(1UL << WIDX_CLOSE) | (1UL << WIDX_REMOVE),
|
||||
};
|
||||
|
||||
static uint64 window_tile_inspector_page_disabled_widgets[] = {
|
||||
(1 << WIDX_CORRUPT) | (1 << WIDX_MOVE_UP) | (1 << WIDX_MOVE_DOWN) | (1 << WIDX_REMOVE) | (1 << WIDX_ROTATE),
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
};
|
||||
|
||||
void window_tile_inspector_open()
|
||||
{
|
||||
rct_window* window;
|
||||
@@ -198,9 +432,10 @@ void window_tile_inspector_open()
|
||||
WC_TILE_INSPECTOR,
|
||||
WF_RESIZABLE
|
||||
);
|
||||
window->page = PAGE_DEFAULT;
|
||||
window->widgets = window_tile_inspector_widgets;
|
||||
window->enabled_widgets = (1 << WIDX_CLOSE);
|
||||
window->disabled_widgets = (1 << WIDX_CORRUPT) | (1 << WIDX_MOVE_UP) | (1 << WIDX_MOVE_DOWN) | (1 << WIDX_REMOVE) | (1 << WIDX_ROTATE);
|
||||
window->enabled_widgets = window_tile_inspector_page_enabled_widgets[window->page];
|
||||
window->disabled_widgets = window_tile_inspector_page_disabled_widgets[window->page];
|
||||
|
||||
window_init_scroll_widgets(window);
|
||||
window->min_width = MIN_WW;
|
||||
@@ -247,28 +482,28 @@ static void rotate_element(int index)
|
||||
mapElement += index;
|
||||
switch (map_element_get_type(mapElement))
|
||||
{
|
||||
case MAP_ELEMENT_TYPE_PATH: // Only sloped paths have a direction
|
||||
if (footpath_element_is_sloped(mapElement))
|
||||
{
|
||||
new_rotation = (footpath_element_get_slope_direction(mapElement) + 1) & 3;
|
||||
mapElement->properties.path.type &= ~3;
|
||||
mapElement->properties.path.type |= new_rotation;
|
||||
}
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_TRACK:
|
||||
case MAP_ELEMENT_TYPE_SCENERY:
|
||||
case MAP_ELEMENT_TYPE_ENTRANCE:
|
||||
case MAP_ELEMENT_TYPE_FENCE:
|
||||
new_rotation = (mapElement->type + 1) & 0x3;
|
||||
mapElement->type &= ~0x3;
|
||||
mapElement->type |= new_rotation;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_SCENERY_MULTIPLE:
|
||||
case MAP_ELEMENT_TYPE_BANNER:
|
||||
case MAP_ELEMENT_TYPE_CORRUPT:
|
||||
default:
|
||||
// Not rotating - button should be disabled
|
||||
case MAP_ELEMENT_TYPE_PATH: // Only sloped paths have a direction
|
||||
if (footpath_element_is_sloped(mapElement))
|
||||
{
|
||||
new_rotation = (footpath_element_get_slope_direction(mapElement) + 1) & 3;
|
||||
mapElement->properties.path.type &= ~3;
|
||||
mapElement->properties.path.type |= new_rotation;
|
||||
break;
|
||||
}
|
||||
case MAP_ELEMENT_TYPE_TRACK:
|
||||
case MAP_ELEMENT_TYPE_SCENERY:
|
||||
case MAP_ELEMENT_TYPE_ENTRANCE:
|
||||
case MAP_ELEMENT_TYPE_FENCE:
|
||||
new_rotation = (mapElement->type + 1) & 0x3;
|
||||
mapElement->type &= ~0x3;
|
||||
mapElement->type |= new_rotation;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_SCENERY_MULTIPLE:
|
||||
case MAP_ELEMENT_TYPE_BANNER:
|
||||
case MAP_ELEMENT_TYPE_CORRUPT:
|
||||
default:
|
||||
// Not rotating - button should be disabled
|
||||
break;
|
||||
}
|
||||
|
||||
map_invalidate_tile_full(window_tile_inspector_tile_x << 5, window_tile_inspector_tile_y << 5);
|
||||
@@ -346,6 +581,25 @@ static void window_tile_inspector_mouseup(rct_window *w, int widgetIndex)
|
||||
widget_invalidate(w, WIDX_LIST);
|
||||
break;
|
||||
}
|
||||
|
||||
rct_map_element *mapElement;
|
||||
|
||||
// Page widgets
|
||||
switch (w->page) {
|
||||
case PAGE_SURFACE:
|
||||
switch (widgetIndex) {
|
||||
case WIDX_SURFACE_BUTTON_REMOVE_FENCES:
|
||||
mapElement = map_get_surface_element_at(window_tile_inspector_tile_x, window_tile_inspector_tile_y);
|
||||
mapElement->properties.surface.ownership &= ~0xF;
|
||||
map_invalidate_tile_full(window_tile_inspector_tile_x << 5, window_tile_inspector_tile_y << 5);
|
||||
break;
|
||||
|
||||
case WIDX_SURFACE_BUTTON_RESTORE_FENCES:
|
||||
update_park_fences(window_tile_inspector_tile_x << 5, window_tile_inspector_tile_y << 5);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void window_tile_inspector_resize(rct_window *w)
|
||||
@@ -424,6 +678,12 @@ static void window_tile_inspector_tool_down(rct_window* w, int widgetIndex, int
|
||||
|
||||
window_tile_inspector_item_count = numItems;
|
||||
|
||||
// Set default page
|
||||
w->page = PAGE_DEFAULT;
|
||||
w->widgets = tile_inspector_widgets[w->page];
|
||||
w->enabled_widgets = window_tile_inspector_page_enabled_widgets[w->page];
|
||||
w->disabled_widgets = window_tile_inspector_page_disabled_widgets[w->page];
|
||||
|
||||
// Enable 'insert corrupt element' button
|
||||
w->enabled_widgets |= (1 << WIDX_CORRUPT);
|
||||
w->disabled_widgets &= ~(1ULL << WIDX_CORRUPT);
|
||||
@@ -458,17 +718,17 @@ static void window_tile_inspector_auto_set_buttons(rct_window *w)
|
||||
rct_map_element *mapElement = map_get_first_element_at(window_tile_inspector_tile_x, window_tile_inspector_tile_y);
|
||||
mapElement += w->selected_list_item;
|
||||
switch (map_element_get_type(mapElement)) {
|
||||
case MAP_ELEMENT_TYPE_PATH:
|
||||
case MAP_ELEMENT_TYPE_TRACK:
|
||||
case MAP_ELEMENT_TYPE_SCENERY:
|
||||
case MAP_ELEMENT_TYPE_ENTRANCE:
|
||||
case MAP_ELEMENT_TYPE_FENCE:
|
||||
w->enabled_widgets |= (1 << WIDX_ROTATE);
|
||||
w->disabled_widgets &= ~(1 << WIDX_ROTATE);
|
||||
case MAP_ELEMENT_TYPE_PATH:
|
||||
case MAP_ELEMENT_TYPE_TRACK:
|
||||
case MAP_ELEMENT_TYPE_SCENERY:
|
||||
case MAP_ELEMENT_TYPE_ENTRANCE:
|
||||
case MAP_ELEMENT_TYPE_FENCE:
|
||||
w->enabled_widgets |= (1 << WIDX_ROTATE);
|
||||
w->disabled_widgets &= ~(1 << WIDX_ROTATE);
|
||||
break;
|
||||
default:
|
||||
w->disabled_widgets |= (1 << WIDX_ROTATE);
|
||||
w->enabled_widgets &= ~(1 << WIDX_ROTATE);
|
||||
default:
|
||||
w->disabled_widgets |= (1 << WIDX_ROTATE);
|
||||
w->enabled_widgets &= ~(1 << WIDX_ROTATE);
|
||||
break;
|
||||
}
|
||||
widget_invalidate(w, WIDX_ROTATE);
|
||||
@@ -498,13 +758,26 @@ static void window_tile_inspector_scrollmousedown(rct_window *w, int scrollIndex
|
||||
{
|
||||
// Because the list items are displayed in reverse order, subtract the number from the amount of elements
|
||||
sint16 index = window_tile_inspector_item_count - (y - 1) / LIST_ITEM_HEIGHT - 1;
|
||||
if (index < 0 || index >= window_tile_inspector_item_count)
|
||||
return;
|
||||
w->selected_list_item = index;
|
||||
if (index < 0 || index >= window_tile_inspector_item_count) {
|
||||
w->selected_list_item = -1;
|
||||
w->page = 0;
|
||||
}
|
||||
else {
|
||||
w->selected_list_item = index;
|
||||
|
||||
// Pick widget layout
|
||||
rct_map_element *mapElement = map_get_first_element_at(window_tile_inspector_tile_x, window_tile_inspector_tile_y);
|
||||
mapElement += index;
|
||||
w->page = (min(map_element_get_type(mapElement), MAP_ELEMENT_TYPE_CORRUPT) >> 2) + 1;
|
||||
}
|
||||
|
||||
w->widgets = tile_inspector_widgets[w->page];
|
||||
w->enabled_widgets = window_tile_inspector_page_enabled_widgets[w->page];
|
||||
w->disabled_widgets = window_tile_inspector_page_disabled_widgets[w->page];
|
||||
|
||||
// Enable/disable buttons
|
||||
window_tile_inspector_auto_set_buttons(w);
|
||||
widget_invalidate(w, WIDX_LIST);
|
||||
window_invalidate(w);
|
||||
}
|
||||
|
||||
static void window_tile_inspector_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
|
||||
@@ -522,14 +795,65 @@ static void window_tile_inspector_invalidate(rct_window *w)
|
||||
{
|
||||
colour_scheme_update(w);
|
||||
|
||||
window_tile_inspector_widgets[WIDX_BACKGROUND].right = w->width - 1;
|
||||
window_tile_inspector_widgets[WIDX_BACKGROUND].bottom = w->height - 1;
|
||||
window_tile_inspector_widgets[WIDX_CLOSE].left = w->width - 13;
|
||||
window_tile_inspector_widgets[WIDX_CLOSE].right = w->width - 3;
|
||||
window_tile_inspector_widgets[WIDX_TITLE].right = w->width - 2;
|
||||
window_tile_inspector_widgets[WIDX_LIST].right = w->width - 4;
|
||||
window_tile_inspector_widgets[WIDX_LIST].bottom = w->height - SCROLL_BOTTOM_OFFSET;
|
||||
window_tile_inspector_widgets[WIDX_COLUMN_LASTFLAG].right = w->width - 3;
|
||||
w->widgets[WIDX_BACKGROUND].bottom = w->height - 1;
|
||||
w->widgets[WIDX_LIST].bottom = w->height - bottom_boxes_height[w->page] - PADDING_BOTTOM;
|
||||
|
||||
switch (w->page) {
|
||||
case PAGE_SURFACE:
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].top = w->height - SUR_GBDT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].bottom = w->height - SUR_GBDB;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].top = w->height - SUR_GBPT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].bottom = w->height - SUR_GBPB;
|
||||
break;
|
||||
case PAGE_PATH:
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].top = w->height - PAT_GBDT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].bottom = w->height - PAT_GBDB;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].top = w->height - PAT_GBPT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].bottom = w->height - PAT_GBPB;
|
||||
break;
|
||||
case PAGE_TRACK:
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].top = w->height - TRA_GBDT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].bottom = w->height - TRA_GBDB;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].top = w->height - TRA_GBPT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].bottom = w->height - TRA_GBPB;
|
||||
break;
|
||||
case PAGE_SCENERY:
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].top = w->height - SCE_GBDT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].bottom = w->height - SCE_GBDB;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].top = w->height - SCE_GBPT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].bottom = w->height - SCE_GBPB;
|
||||
break;
|
||||
case PAGE_ENTRANCE:
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].top = w->height - ENT_GBDT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].bottom = w->height - ENT_GBDB;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].top = w->height - ENT_GBPT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].bottom = w->height - ENT_GBPB;
|
||||
break;
|
||||
case PAGE_FENCE:
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].top = w->height - FEN_GBDT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].bottom = w->height - FEN_GBDB;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].top = w->height - FEN_GBPT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].bottom = w->height - FEN_GBPB;
|
||||
break;
|
||||
case PAGE_LARGE_SCENERY:
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].top = w->height - LAR_GBDT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].bottom = w->height - LAR_GBDB;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].top = w->height - LAR_GBPT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].bottom = w->height - LAR_GBPB;
|
||||
break;
|
||||
case PAGE_BANNER:
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].top = w->height - BAN_GBDT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].bottom = w->height - BAN_GBDB;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].top = w->height - BAN_GBPT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].bottom = w->height - BAN_GBPB;
|
||||
break;
|
||||
case PAGE_CORRUPT:
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].top = w->height - COR_GBDT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].bottom = w->height - COR_GBDB;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].top = w->height - COR_GBPT;
|
||||
w->widgets[WIDX_SURFACE_GROUPBOX_PROPERTIES].bottom = w->height - COR_GBPB;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void window_tile_inspector_paint(rct_window *w, rct_drawpixelinfo *dpi)
|
||||
@@ -582,6 +906,26 @@ static void window_tile_inspector_paint(rct_window *w, rct_drawpixelinfo *dpi)
|
||||
|
||||
gfx_draw_string(dpi, buffer, 12, x, y);
|
||||
}
|
||||
|
||||
if (w->selected_list_item != -1) {
|
||||
// Get map element
|
||||
rct_map_element *mapElement = map_get_first_element_at(window_tile_inspector_tile_x, window_tile_inspector_tile_y);
|
||||
mapElement += w->selected_list_item;
|
||||
|
||||
switch (map_element_get_type(mapElement)) {
|
||||
case MAP_ELEMENT_TYPE_SURFACE: {
|
||||
x = w->x + w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].left + 7;
|
||||
y = w->y + w->widgets[WIDX_SURFACE_GROUPBOX_DETAILS].top + 14;
|
||||
rct_string_id terrain_name_id = TerrainTypes[map_element_get_terrain(mapElement)];
|
||||
rct_string_id terrain_edge_name_id = TerrainEdgeTypes[map_element_get_terrain_edge(mapElement)];
|
||||
int water_level = mapElement->properties.surface.terrain & MAP_ELEMENT_WATER_HEIGHT_MASK;
|
||||
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SURFACE_TERAIN, &terrain_name_id, 12, x, y);
|
||||
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SURFACE_EDGE, &terrain_edge_name_id, 12, x, y + 11);
|
||||
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SURFACE_WATER_LEVEL, &water_level, 12, x, y + 22);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void window_tile_inspector_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
|
||||
@@ -613,87 +957,81 @@ static void window_tile_inspector_scrollpaint(rct_window *w, rct_drawpixelinfo *
|
||||
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:
|
||||
case MAP_ELEMENT_TYPE_SURFACE:
|
||||
type_name = "Surface";
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_PATH:
|
||||
{
|
||||
const uint8 pathType = footpath_element_get_type(element);
|
||||
const uint8 pathHasScenery = footpath_element_has_path_scenery(element);
|
||||
const uint8 pathAdditionType = footpath_element_get_path_scenery_index(element);
|
||||
if (footpath_element_is_queue(element)) {
|
||||
snprintf(
|
||||
buffer, 256,
|
||||
"Surface (%s, %s)",
|
||||
language_get_string(TerrainTypes[map_element_get_terrain(element)]),
|
||||
language_get_string(TerrainEdgeTypes[map_element_get_terrain_edge(element)])
|
||||
buffer, sizeof(buffer), "Queue (%s)%s%s for (%d)",
|
||||
language_get_string(get_footpath_entry(pathType)->string_idx), // Path name
|
||||
pathHasScenery ? " with " : "", // Adds " with " when there is something on the path
|
||||
pathHasScenery ? language_get_string(get_footpath_item_entry(pathAdditionType)->name) : "", // Path addition name
|
||||
element->properties.path.ride_index // Ride index for queue
|
||||
);
|
||||
} else {
|
||||
snprintf(
|
||||
buffer, sizeof(buffer), "Path (%s)%s%s",
|
||||
language_get_string(get_footpath_entry(pathType)->string_idx), // Path name
|
||||
pathHasScenery ? " with " : "", // Adds " with " when there is something on the path
|
||||
pathHasScenery ? language_get_string(get_footpath_item_entry(pathAdditionType)->name) : "" // Path addition name
|
||||
);
|
||||
type_name = buffer;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_PATH:
|
||||
{
|
||||
const uint8 pathType = footpath_element_get_type(element);
|
||||
const uint8 pathHasScenery = footpath_element_has_path_scenery(element);
|
||||
const uint8 pathAdditionType = footpath_element_get_path_scenery_index(element);
|
||||
if (footpath_element_is_queue(element)) {
|
||||
snprintf(
|
||||
buffer, 256, "Queue (%s)%s%s for (%d)",
|
||||
language_get_string(get_footpath_entry(pathType)->string_idx), // Path name
|
||||
pathHasScenery ? " with " : "", // Adds " with " when there is something on the path
|
||||
pathHasScenery ? language_get_string(get_footpath_item_entry(pathAdditionType)->name) : "", // Path addition name
|
||||
element->properties.path.ride_index // Ride index for queue
|
||||
);
|
||||
} else {
|
||||
snprintf(
|
||||
buffer, 256, "Path (%s)%s%s",
|
||||
language_get_string(get_footpath_entry(pathType)->string_idx), // Path name
|
||||
pathHasScenery ? " with " : "", // Adds " with " when there is something on the path
|
||||
pathHasScenery ? language_get_string(get_footpath_item_entry(pathAdditionType)->name) : "" // Path addition name
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
type_name = buffer;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_TRACK:
|
||||
snprintf(
|
||||
buffer, sizeof(buffer),
|
||||
"Track (%s)",
|
||||
language_get_string(STR_RIDE_NAME_SPIRAL_ROLLER_COASTER + get_ride(element->properties.track.ride_index)->type)
|
||||
);
|
||||
type_name = buffer;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_TRACK:
|
||||
snprintf(
|
||||
buffer, 256,
|
||||
"Track (%s)",
|
||||
language_get_string(RideNaming[get_ride(element->properties.track.ride_index)->type].name)
|
||||
case MAP_ELEMENT_TYPE_SCENERY:
|
||||
snprintf(
|
||||
buffer, sizeof(buffer),
|
||||
"Scenery (%s)",
|
||||
language_get_string(get_small_scenery_entry(element->properties.scenery.type)->name)
|
||||
);
|
||||
type_name = buffer;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_ENTRANCE:
|
||||
snprintf(
|
||||
buffer, sizeof(buffer),
|
||||
"Entrance (%s)",
|
||||
language_get_string(EntranceTypes[element->properties.entrance.type])
|
||||
);
|
||||
type_name = buffer;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_SCENERY:
|
||||
snprintf(
|
||||
buffer, 256,
|
||||
"Scenery (%s)",
|
||||
language_get_string(get_small_scenery_entry(element->properties.scenery.type)->name)
|
||||
type_name = buffer;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_FENCE:
|
||||
snprintf(
|
||||
buffer, sizeof(buffer),
|
||||
"Fence (%s)",
|
||||
language_get_string(get_wall_entry(element->properties.scenery.type)->name)
|
||||
);
|
||||
type_name = buffer;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_ENTRANCE:
|
||||
snprintf(
|
||||
buffer, 256,
|
||||
"Entrance (%s)",
|
||||
language_get_string(EntranceTypes[element->properties.entrance.type])
|
||||
);
|
||||
type_name = buffer;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_FENCE:
|
||||
snprintf(
|
||||
buffer, 256,
|
||||
"Fence (%s)",
|
||||
language_get_string(get_wall_entry(element->properties.scenery.type)->name)
|
||||
);
|
||||
type_name = buffer;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_SCENERY_MULTIPLE:
|
||||
type_name = "Scenery multiple";
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_BANNER:
|
||||
snprintf(
|
||||
buffer, 256,
|
||||
"Banner (%d)",
|
||||
element->properties.banner.index
|
||||
);
|
||||
type_name = buffer;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_CORRUPT:
|
||||
// fall-through
|
||||
default:
|
||||
snprintf(buffer, 256, "Unknown (type %d)", type);
|
||||
type_name = buffer;
|
||||
type_name = buffer;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_SCENERY_MULTIPLE:
|
||||
type_name = "Scenery multiple";
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_BANNER:
|
||||
snprintf(
|
||||
buffer, sizeof(buffer),
|
||||
"Banner (%d)",
|
||||
element->properties.banner.index
|
||||
);
|
||||
type_name = buffer;
|
||||
break;
|
||||
case MAP_ELEMENT_TYPE_CORRUPT:
|
||||
// fall-through
|
||||
default:
|
||||
snprintf(buffer, sizeof(buffer), "Unknown (type %d)", type);
|
||||
type_name = buffer;
|
||||
}
|
||||
|
||||
// Undo relative scroll offset, but keep the 3 pixel padding
|
||||
|
||||
Reference in New Issue
Block a user