From 8503b8e2048e4fffe018f3d6a7823bee0c5a1542 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 5 Sep 2017 20:55:18 +0200 Subject: [PATCH] Move Finances and Park windows --- src/openrct2-ui/WindowManager.cpp | 23 ++++++++ src/openrct2-ui/input/keyboard_shortcut.c | 4 +- .../windows/Finances.cpp | 30 ++++++----- .../windows/Park.cpp | 53 +++++++++++-------- src/openrct2-ui/windows/Window.h | 11 ++++ src/openrct2/Context.cpp | 6 +++ src/openrct2/Context.h | 1 + src/openrct2/interface/viewport_interaction.c | 3 +- src/openrct2/interface/window.h | 17 +++--- src/openrct2/management/news_item.c | 6 +-- src/openrct2/scenario/scenario.c | 5 +- src/openrct2/ui/DummyWindowManager.cpp | 1 + src/openrct2/ui/WindowManager.h | 1 + src/openrct2/windows/GameBottomToolbar.cpp | 6 +-- src/openrct2/windows/NewRide.cpp | 3 +- src/openrct2/windows/TopToolbar.cpp | 4 +- 16 files changed, 119 insertions(+), 55 deletions(-) rename src/{openrct2 => openrct2-ui}/windows/Finances.cpp (98%) rename src/{openrct2 => openrct2-ui}/windows/Park.cpp (98%) diff --git a/src/openrct2-ui/WindowManager.cpp b/src/openrct2-ui/WindowManager.cpp index 38445487e5..99f04b6a0a 100644 --- a/src/openrct2-ui/WindowManager.cpp +++ b/src/openrct2-ui/WindowManager.cpp @@ -46,6 +46,8 @@ public: return window_editor_objective_options_open(); case WC_EDITOR_SCENARIO_OPTIONS: return window_editor_scenario_options_open(); + case WC_FINANCES: + return window_finances_open(); case WC_FOOTPATH: return window_footpath_open(); case WC_LAND: @@ -60,6 +62,8 @@ public: return window_multiplayer_open(); case WC_MUSIC_CREDITS: return window_music_credits_open(); + case WC_PARK_INFORMATION: + return window_park_entrance_open(); case WC_RECENT_NEWS: return window_news_open(); case WC_NOTIFICATION_OPTIONS: @@ -97,6 +101,25 @@ public: } } + rct_window * OpenView(uint8 view) override + { + switch (view) { + case WV_PARK_AWARDS: + return window_park_awards_open(); + case WV_PARK_RATING: + return window_park_rating_open(); + case WV_PARK_OBJECTIVE: + return window_park_objective_open(); + case WV_PARK_GUESTS: + return window_park_guests_open(); + case WV_FINANCES_RESEARCH: + return window_finances_research_open(); + default: + return nullptr; + } + } + + void HandleKeyboard(bool isTitle) override { input_handle_keyboard(isTitle); diff --git a/src/openrct2-ui/input/keyboard_shortcut.c b/src/openrct2-ui/input/keyboard_shortcut.c index 66489e3543..0aa27ddfae 100644 --- a/src/openrct2-ui/input/keyboard_shortcut.c +++ b/src/openrct2-ui/input/keyboard_shortcut.c @@ -385,7 +385,7 @@ static void shortcut_show_financial_information() if (!(gScreenFlags & (SCREEN_FLAGS_TRACK_DESIGNER | SCREEN_FLAGS_TRACK_MANAGER))) if (!(gParkFlags & PARK_FLAGS_NO_MONEY)) - window_finances_open(); + context_open_window(WC_FINANCES); } static void shortcut_show_research_information() @@ -417,7 +417,7 @@ static void shortcut_show_park_information() return; if (!(gScreenFlags & (SCREEN_FLAGS_SCENARIO_EDITOR | SCREEN_FLAGS_TRACK_DESIGNER | SCREEN_FLAGS_TRACK_MANAGER))) { - window_park_entrance_open(); + context_open_window(WC_PARK_INFORMATION); } } diff --git a/src/openrct2/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp similarity index 98% rename from src/openrct2/windows/Finances.cpp rename to src/openrct2-ui/windows/Finances.cpp index 19e9ca16ba..fa8c21dba8 100644 --- a/src/openrct2/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -14,17 +14,17 @@ *****************************************************************************/ #pragma endregion -#include "../config/Config.h" -#include "../core/Math.hpp" - -#include "../game.h" -#include "../interface/graph.h" -#include "../interface/widget.h" -#include "../localisation/date.h" -#include "../localisation/localisation.h" -#include "../ride/ride_data.h" -#include "../sprites.h" -#include "dropdown.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include enum { WINDOW_FINANCES_PAGE_SUMMARY, @@ -541,7 +541,7 @@ static void window_finances_draw_tab_images(rct_drawpixelinfo *dpi, rct_window * * * rct2: 0x0069DDF1 */ -void window_finances_open() +rct_window * window_finances_open() { rct_window *w; @@ -567,13 +567,15 @@ void window_finances_open() w->pressed_widgets = 0; w->disabled_widgets = 0; window_init_scroll_widgets(w); + + return w; } /** * * rct2: 0x0069DDE1 */ -void window_finances_research_open() +rct_window * window_finances_research_open() { rct_window *w; @@ -581,6 +583,8 @@ void window_finances_research_open() w = window_find_by_class(WC_FINANCES); if (w != nullptr) window_finances_set_page(w, WINDOW_FINANCES_PAGE_RESEARCH); + + return w; } #pragma region Summary page diff --git a/src/openrct2/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp similarity index 98% rename from src/openrct2/windows/Park.cpp rename to src/openrct2-ui/windows/Park.cpp index 12a27913a2..cb3754dc7f 100644 --- a/src/openrct2/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -14,23 +14,24 @@ *****************************************************************************/ #pragma endregion -#include "../config/Config.h" -#include "../Context.h" -#include "../core/Math.hpp" +#include +#include +#include +#include -#include "../game.h" -#include "../localisation/date.h" -#include "../localisation/localisation.h" -#include "../input.h" -#include "../interface/graph.h" -#include "../interface/land_tool.h" -#include "../interface/viewport.h" -#include "../interface/widget.h" -#include "../management/award.h" -#include "../util/util.h" -#include "../world/entrance.h" -#include "dropdown.h" -#include "../interface/themes.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include enum WINDOW_PARK_PAGE { WINDOW_PARK_PAGE_ENTRANCE, @@ -594,7 +595,7 @@ static void window_park_prepare_window_title_text() * * rct2: 0x00667C48 */ -void window_park_entrance_open() +rct_window * window_park_entrance_open() { rct_window* window; @@ -613,6 +614,8 @@ void window_park_entrance_open() window->pressed_widgets = 0; window_init_scroll_widgets(window); window_park_init_viewport(window); + + return window; } /** @@ -940,7 +943,7 @@ static void window_park_init_viewport(rct_window *w) * * rct2: 0x00667CA4 */ -void window_park_rating_open() +rct_window * window_park_rating_open() { rct_window* window; @@ -963,6 +966,8 @@ void window_park_rating_open() window->hold_down_widgets = window_park_page_hold_down_widgets[WINDOW_PARK_PAGE_RATING]; window->event_handlers = &window_park_rating_events; window_init_scroll_widgets(window); + + return window; } /** @@ -1054,7 +1059,7 @@ static void window_park_rating_paint(rct_window *w, rct_drawpixelinfo *dpi) * * rct2: 0x00667D35 */ -void window_park_guests_open() +rct_window * window_park_guests_open() { rct_window* window; @@ -1077,6 +1082,8 @@ void window_park_guests_open() window->hold_down_widgets = window_park_page_hold_down_widgets[WINDOW_PARK_PAGE_GUESTS]; window->event_handlers = &window_park_guests_events; window_init_scroll_widgets(window); + + return window; } /** @@ -1418,7 +1425,7 @@ static void window_park_stats_paint(rct_window *w, rct_drawpixelinfo *dpi) * * rct2: 0x00667E57 */ -void window_park_objective_open() +rct_window * window_park_objective_open() { rct_window* window; @@ -1444,6 +1451,8 @@ void window_park_objective_open() window->x = context_get_width() / 2 - 115; window->y = context_get_height() / 2 - 87; window_invalidate(window); + + return window; } /** @@ -1581,7 +1590,7 @@ static void window_park_objective_paint(rct_window *w, rct_drawpixelinfo *dpi) * * rct2: 0x00667DC6 */ -void window_park_awards_open() +rct_window * window_park_awards_open() { rct_window* window; @@ -1604,6 +1613,8 @@ void window_park_awards_open() window->hold_down_widgets = window_park_page_hold_down_widgets[WINDOW_PARK_PAGE_AWARDS]; window->event_handlers = &window_park_awards_events; window_init_scroll_widgets(window); + + return window; } /** diff --git a/src/openrct2-ui/windows/Window.h b/src/openrct2-ui/windows/Window.h index 3eb128b7b8..08156d48df 100644 --- a/src/openrct2-ui/windows/Window.h +++ b/src/openrct2-ui/windows/Window.h @@ -53,3 +53,14 @@ rct_window * window_title_options_open(); rct_window * window_viewport_open(); rct_window * window_water_open(); rct_window * window_view_clipping_open(); + +// WC_FINANCES +rct_window * window_finances_open(); +rct_window * window_finances_research_open(); + +// WC_PARK_INFORMATION +rct_window * window_park_awards_open(); +rct_window * window_park_entrance_open(); +rct_window * window_park_guests_open(); +rct_window * window_park_objective_open(); +rct_window * window_park_rating_open(); diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 1979a16661..b57b4f19f8 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -993,6 +993,12 @@ extern "C" return windowManager->OpenWindow(wc); } + rct_window * context_open_window_view(rct_windowclass wc) + { + auto windowManager = GetContext()->GetUiContext()->GetWindowManager(); + return windowManager->OpenView(wc); + } + void context_input_handle_keyboard(bool isTitle) { auto windowManager = GetContext()->GetUiContext()->GetWindowManager(); diff --git a/src/openrct2/Context.h b/src/openrct2/Context.h index 4283666789..66794e57ac 100644 --- a/src/openrct2/Context.h +++ b/src/openrct2/Context.h @@ -203,6 +203,7 @@ extern "C" bool context_has_focus(); void context_set_cursor_trap(bool value); rct_window * context_open_window(rct_windowclass wc); + rct_window * context_open_window_view(uint8 view); void context_input_handle_keyboard(bool isTitle); bool context_read_bmp(void * * outPixels, uint32 * outWidth, uint32 * outHeight, const utf8 * path); void context_quit(); diff --git a/src/openrct2/interface/viewport_interaction.c b/src/openrct2/interface/viewport_interaction.c index b9f4c261b9..f5360285a7 100644 --- a/src/openrct2/interface/viewport_interaction.c +++ b/src/openrct2/interface/viewport_interaction.c @@ -30,6 +30,7 @@ #include "../world/scenery.h" #include "../world/sprite.h" #include "viewport.h" +#include "../Context.h" static void viewport_interaction_remove_scenery(rct_map_element *mapElement, sint32 x, sint32 y); static void viewport_interaction_remove_footpath(rct_map_element *mapElement, sint32 x, sint32 y); @@ -150,7 +151,7 @@ sint32 viewport_interaction_left_click(sint32 x, sint32 y) window_ride_open_track(info.mapElement); return 1; case VIEWPORT_INTERACTION_ITEM_PARK: - window_park_entrance_open(); + context_open_window(WC_PARK_INFORMATION); return 1; default: return 0; diff --git a/src/openrct2/interface/window.h b/src/openrct2/interface/window.h index a4a33285cb..23a019a6d6 100644 --- a/src/openrct2/interface/window.h +++ b/src/openrct2/interface/window.h @@ -493,6 +493,16 @@ enum { WC_NULL = 255, }; + +enum { + WV_PARK_AWARDS, + WV_PARK_RATING, + WV_PARK_OBJECTIVE, + WV_PARK_GUESTS, + WV_FINANCES_RESEARCH + +}; + #define validate_global_widx(wc, widx) \ static_assert(widx == wc ## __ ## widx, "Global WIDX of " #widx " doesn't match actual value.") @@ -697,13 +707,6 @@ void window_map_open(); void window_guest_open(rct_peep* peep); rct_window *window_staff_open(rct_peep* peep); void window_staff_fire_prompt_open(rct_peep* peep); -void window_park_awards_open(); -void window_park_entrance_open(); -void window_park_guests_open(); -void window_park_objective_open(); -void window_park_rating_open(); -void window_finances_open(); -void window_finances_research_open(); void window_new_campaign_open(sint16 campaignType); rct_window *window_ride_main_open(sint32 rideIndex); rct_window *window_ride_open_station(sint32 rideIndex, sint32 stationIndex); diff --git a/src/openrct2/management/news_item.c b/src/openrct2/management/news_item.c index 1a5aeb8876..7db587a3b4 100644 --- a/src/openrct2/management/news_item.c +++ b/src/openrct2/management/news_item.c @@ -335,7 +335,7 @@ void news_item_open_subject(sint32 type, sint32 subject) window_guest_open(peep); break; case NEWS_ITEM_MONEY: - window_finances_open(); + context_open_window(WC_FINANCES); break; case NEWS_ITEM_RESEARCH: if (subject >= 0x10000) { @@ -372,10 +372,10 @@ void news_item_open_subject(sint32 type, sint32 subject) window_guest_list_open_with_filter(GLFT_GUESTS_THINKING_X, subject);; break; case NEWS_ITEM_AWARD: - window_park_awards_open(); + context_open_window_view(WV_PARK_AWARDS); break; case NEWS_ITEM_GRAPH: - window_park_rating_open(); + context_open_window_view(WV_PARK_RATING); break; } } diff --git a/src/openrct2/scenario/scenario.c b/src/openrct2/scenario/scenario.c index ae7961ff64..833843b198 100644 --- a/src/openrct2/scenario/scenario.c +++ b/src/openrct2/scenario/scenario.c @@ -47,6 +47,7 @@ #include "ScenarioRepository.h" #include "ScenarioSources.h" #include "scenario.h" +#include "../Context.h" const rct_string_id ScenarioCategoryStringIds[SCENARIO_CATEGORY_COUNT] = { STR_BEGINNER_PARKS, @@ -105,7 +106,7 @@ void scenario_begin() scenery_set_default_placement_configuration(); news_item_init_queue(); if (gScenarioObjectiveType != OBJECTIVE_NONE) - window_park_objective_open(); + context_open_window_view(WV_PARK_OBJECTIVE); gParkRating = calculate_park_rating(); gParkValue = calculate_park_value(); @@ -201,7 +202,7 @@ static void scenario_end() if (!(w->flags & (WF_STICK_TO_BACK | WF_STICK_TO_FRONT))) window_close(w); } - window_park_objective_open(); + context_open_window_view(WV_PARK_OBJECTIVE); } /** diff --git a/src/openrct2/ui/DummyWindowManager.cpp b/src/openrct2/ui/DummyWindowManager.cpp index 08a1078f23..639fcc4277 100644 --- a/src/openrct2/ui/DummyWindowManager.cpp +++ b/src/openrct2/ui/DummyWindowManager.cpp @@ -21,6 +21,7 @@ namespace OpenRCT2 { namespace Ui class DummyWindowManager final : public IWindowManager { rct_window * OpenWindow(rct_windowclass wc) override { return nullptr; } + rct_window * OpenView(uint8 view) override { return nullptr; } void HandleKeyboard(bool isTitle) override { } std::string GetKeyboardShortcutString(sint32 shortcut) override { return std::string(); } }; diff --git a/src/openrct2/ui/WindowManager.h b/src/openrct2/ui/WindowManager.h index 424a2555f4..862fcda34f 100644 --- a/src/openrct2/ui/WindowManager.h +++ b/src/openrct2/ui/WindowManager.h @@ -34,6 +34,7 @@ namespace OpenRCT2 { virtual ~IWindowManager() = default; virtual rct_window * OpenWindow(rct_windowclass wc) abstract; + virtual rct_window * OpenView(uint8 view) abstract; virtual void HandleKeyboard(bool isTitle) abstract; virtual std::string GetKeyboardShortcutString(sint32 shortcut) abstract; diff --git a/src/openrct2/windows/GameBottomToolbar.cpp b/src/openrct2/windows/GameBottomToolbar.cpp index a893c58499..1be6484a37 100644 --- a/src/openrct2/windows/GameBottomToolbar.cpp +++ b/src/openrct2/windows/GameBottomToolbar.cpp @@ -169,13 +169,13 @@ static void window_game_bottom_toolbar_mouseup(rct_window *w, rct_widgetindex wi case WIDX_LEFT_OUTSET: case WIDX_MONEY: if (!(gParkFlags & PARK_FLAGS_NO_MONEY)) - window_finances_open(); + context_open_window(WC_FINANCES); break; case WIDX_GUESTS: - window_park_guests_open(); + context_open_window_view(WV_PARK_GUESTS); break; case WIDX_PARK_RATING: - window_park_rating_open(); + context_open_window_view(WV_PARK_RATING); break; case WIDX_MIDDLE_INSET: if (news_item_is_queue_empty()) diff --git a/src/openrct2/windows/NewRide.cpp b/src/openrct2/windows/NewRide.cpp index cd3b1f6b0f..338fa6202f 100644 --- a/src/openrct2/windows/NewRide.cpp +++ b/src/openrct2/windows/NewRide.cpp @@ -21,6 +21,7 @@ #include "../ride/TrackDesignRepository.h" #include "../core/Util.hpp" #include "../core/Math.hpp" +#include "../Context.h" #include "../audio/audio.h" #include "../game.h" @@ -682,7 +683,7 @@ static void window_new_ride_mouseup(rct_window *w, rct_widgetindex widgetIndex) news_item_open_subject(NEWS_ITEM_RESEARCH, (sint32)gResearchLastItemSubject); break; case WIDX_RESEARCH_FUNDING_BUTTON: - window_finances_research_open(); + context_open_window_view(WV_FINANCES_RESEARCH); break; } } diff --git a/src/openrct2/windows/TopToolbar.cpp b/src/openrct2/windows/TopToolbar.cpp index d0a1cfcd43..dc1b90a728 100644 --- a/src/openrct2/windows/TopToolbar.cpp +++ b/src/openrct2/windows/TopToolbar.cpp @@ -349,7 +349,7 @@ static void window_top_toolbar_mouseup(rct_window *w, rct_widgetindex widgetInde window_ride_list_open(); break; case WIDX_PARK: - window_park_entrance_open(); + context_open_window(WC_PARK_INFORMATION); break; case WIDX_STAFF: context_open_window(WC_STAFF_LIST); @@ -358,7 +358,7 @@ static void window_top_toolbar_mouseup(rct_window *w, rct_widgetindex widgetInde window_guest_list_open(); break; case WIDX_FINANCES: - window_finances_open(); + context_open_window(WC_FINANCES); break; case WIDX_RESEARCH: window_research_open();