From 248585281cbacf8d6c00fcc1fc26d6e111deabc0 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Fri, 25 May 2018 19:16:20 +0200 Subject: [PATCH] Fix #6221: Make invention list resizeable. --- distribution/changelog.txt | 1 + .../windows/EditorInventionsList.cpp | 85 ++++++++++++++++--- 2 files changed, 73 insertions(+), 13 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index e1c03bddb2..bd8cb479ac 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -36,6 +36,7 @@ - Improved: [#2989] Multiplayer window now changes title when tab changes. - Improved: [#5339] Change eyedropper icon to actual eyedropper and change cursor to crosshair. - Improved: [#5832] Resize tile inspector automatically when selecting a tile element. +- Improved: [#6221] The scenario editor's invention list is now resizeable. - Improved: [#7302] Raising land near the map edge makes the affected area smaller instead of showing an 'off edge map' error. - Improved: [#7435] Object indexing now supports multi-threading. - Improved: [#7510] Add horizontal clipping to cut-away view options. diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index 6d5451b715..4f16a7ca7d 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -34,19 +34,22 @@ #pragma region Widgets +#define WW 600 +#define WH 400 + // clang-format off enum { WIDX_BACKGROUND, WIDX_TITLE, WIDX_CLOSE, - WIDX_PAGE_BACKGROUND, + WIDX_RESIZE, WIDX_TAB_1, WIDX_PRE_RESEARCHED_SCROLL, WIDX_RESEARCH_ORDER_SCROLL, WIDX_PREVIEW, - WIDX_RANDOM_SHUFFLE, + WIDX_MOVE_ITEMS_TO_TOP, WIDX_MOVE_ITEMS_TO_BOTTOM, - WIDX_MOVE_ITEMS_TO_TOP + WIDX_RANDOM_SHUFFLE }; static rct_widget window_editor_inventions_list_widgets[] = { @@ -54,13 +57,13 @@ static rct_widget window_editor_inventions_list_widgets[] = { { WWT_CAPTION, 0, 1, 598, 1, 14, STR_INVENTION_LIST, STR_WINDOW_TITLE_TIP }, { WWT_CLOSEBOX, 0, 587, 597, 2, 13, STR_CLOSE_X, STR_CLOSE_WINDOW_TIP }, { WWT_RESIZE, 1, 0, 599, 43, 399, STR_NONE, STR_NONE }, - { WWT_TAB, 1, 3, 33, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_NONE }, - { WWT_SCROLL, 1, 4, 371, 56, 175, SCROLL_VERTICAL, STR_NONE }, - { WWT_SCROLL, 1, 4, 371, 189, 396, SCROLL_VERTICAL, STR_NONE }, + { WWT_TAB, 1, 3, 33, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_NONE }, + { WWT_SCROLL, 1, 4, 371, 56, 216, SCROLL_VERTICAL, STR_NONE }, + { WWT_SCROLL, 1, 4, 371, 231, 387, SCROLL_VERTICAL, STR_NONE }, { WWT_FLATBTN, 1, 431, 544, 106, 219, 0xFFFFFFFF, STR_NONE }, - { WWT_BUTTON, 1, 375, 594, 383, 396, STR_RANDOM_SHUFFLE, STR_RANDOM_SHUFFLE_TIP }, - { WWT_BUTTON, 1, 375, 594, 368, 381, STR_MOVE_ALL_BOTTOM, STR_NONE }, - { WWT_BUTTON, 1, 375, 594, 353, 366, STR_MOVE_ALL_TOP, STR_NONE }, + { WWT_BUTTON, 1, 375, 594, 343, 356, STR_MOVE_ALL_TOP, STR_NONE }, + { WWT_BUTTON, 1, 375, 594, 358, 371, STR_MOVE_ALL_BOTTOM, STR_NONE }, + { WWT_BUTTON, 1, 375, 594, 373, 386, STR_RANDOM_SHUFFLE, STR_RANDOM_SHUFFLE_TIP }, { WIDGETS_END } }; @@ -75,6 +78,7 @@ static rct_widget window_editor_inventions_list_drag_widgets[] = { static void window_editor_inventions_list_close(rct_window *w); static void window_editor_inventions_list_mouseup(rct_window *w, rct_widgetindex widgetIndex); +static void window_editor_inventions_list_resize(rct_window *w); static void window_editor_inventions_list_update(rct_window *w); static void window_editor_inventions_list_scrollgetheight(rct_window *w, sint32 scrollIndex, sint32 *width, sint32 *height); static void window_editor_inventions_list_scrollmousedown(rct_window *w, sint32 scrollIndex, sint32 x, sint32 y); @@ -95,7 +99,7 @@ static rct_string_id window_editor_inventions_list_prepare_name(const rct_resear static rct_window_event_list window_editor_inventions_list_events = { window_editor_inventions_list_close, window_editor_inventions_list_mouseup, - nullptr, + window_editor_inventions_list_resize, nullptr, nullptr, nullptr, @@ -372,15 +376,16 @@ rct_window * window_editor_inventions_list_open() research_always_researched_setup(); w = window_create_centred( - 600, - 400, + WW, + WH, &window_editor_inventions_list_events, WC_EDITOR_INVENTION_LIST, - WF_NO_SCROLLING + WF_NO_SCROLLING | WF_RESIZABLE ); w->widgets = window_editor_inventions_list_widgets; w->enabled_widgets = (1 << WIDX_CLOSE) | + (1 << WIDX_RESIZE) | (1 << WIDX_TAB_1) | (1 << WIDX_RANDOM_SHUFFLE) | (1 << WIDX_MOVE_ITEMS_TO_BOTTOM) | @@ -391,6 +396,11 @@ rct_window * window_editor_inventions_list_open() w->research_item = nullptr; _editorInventionsListDraggedItem = nullptr; + w->min_width = WW; + w->min_height = WH; + w->max_width = WW * 2; + w->max_height = WH * 2; + return w; } @@ -437,6 +447,20 @@ static void window_editor_inventions_list_mouseup(rct_window *w, rct_widgetindex } } +static void window_editor_inventions_list_resize(rct_window *w) +{ + if (w->width < w->min_width) + { + window_invalidate(w); + w->width = w->min_width; + } + if (w->height < w->min_height) + { + window_invalidate(w); + w->height = w->min_height; + } +} + /** * * rct2: 0x00685392 @@ -566,6 +590,41 @@ static void window_editor_inventions_list_invalidate(rct_window *w) w->widgets[WIDX_CLOSE].type = gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR ? WWT_EMPTY : WWT_CLOSEBOX; + + w->widgets[WIDX_BACKGROUND].right = w->width - 1; + w->widgets[WIDX_BACKGROUND].bottom = w->height - 1; + w->widgets[WIDX_TITLE].right = w->width - 2; + w->widgets[WIDX_CLOSE].left = w->width - 13; + w->widgets[WIDX_CLOSE].right = w->width - 3; + w->widgets[WIDX_RESIZE].right = w->width - 1; + w->widgets[WIDX_RESIZE].bottom = w->height - 1; + + sint16 scroll_list_height = (w->height - 88) / 2; + + w->widgets[WIDX_PRE_RESEARCHED_SCROLL].bottom = 60 + scroll_list_height; + w->widgets[WIDX_PRE_RESEARCHED_SCROLL].right = w->width - 229; + + w->widgets[WIDX_RESEARCH_ORDER_SCROLL].top = w->widgets[WIDX_PRE_RESEARCHED_SCROLL].bottom + 15; + w->widgets[WIDX_RESEARCH_ORDER_SCROLL].bottom = w->widgets[WIDX_RESEARCH_ORDER_SCROLL].top + scroll_list_height; + w->widgets[WIDX_RESEARCH_ORDER_SCROLL].right = w->width - 229; + + w->widgets[WIDX_PREVIEW].left = w->width - 169; + w->widgets[WIDX_PREVIEW].right = w->width - 56; + + w->widgets[WIDX_MOVE_ITEMS_TO_TOP].top = w->height - 57; + w->widgets[WIDX_MOVE_ITEMS_TO_TOP].bottom = w->height - 44; + w->widgets[WIDX_MOVE_ITEMS_TO_TOP].left = w->width - 225; + w->widgets[WIDX_MOVE_ITEMS_TO_TOP].right = w->width - 6; + + w->widgets[WIDX_MOVE_ITEMS_TO_BOTTOM].top = w->height - 42; + w->widgets[WIDX_MOVE_ITEMS_TO_BOTTOM].bottom = w->height - 29; + w->widgets[WIDX_MOVE_ITEMS_TO_BOTTOM].left = w->width - 225; + w->widgets[WIDX_MOVE_ITEMS_TO_BOTTOM].right = w->width - 6; + + w->widgets[WIDX_RANDOM_SHUFFLE].top = w->height - 27; + w->widgets[WIDX_RANDOM_SHUFFLE].bottom = w->height - 14; + w->widgets[WIDX_RANDOM_SHUFFLE].left = w->width - 225; + w->widgets[WIDX_RANDOM_SHUFFLE].right = w->width - 6; } /**