From eca3b4bdddf66ca7a53fdfda8385100780b53b03 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Thu, 13 Mar 2025 17:36:41 +0100 Subject: [PATCH] Rework financial options tab with groupboxes --- data/language/en-GB.txt | 3 ++ src/openrct2-ui/UiStringIds.h | 5 +- .../windows/EditorScenarioOptions.cpp | 51 +++++++++++-------- 3 files changed, 37 insertions(+), 22 deletions(-) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index e0b74bdbc7..eb98e6bd33 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -3802,3 +3802,6 @@ STR_6754 :Scenario options - Land Restrictions STR_6755 :Show objective options STR_6756 :Show scenario details options STR_6757 :Show land restriction options +STR_6758 :Loan options +STR_6759 :Business model +STR_6760 :Earnings: diff --git a/src/openrct2-ui/UiStringIds.h b/src/openrct2-ui/UiStringIds.h index 9dc207ec48..f1aae049ca 100644 --- a/src/openrct2-ui/UiStringIds.h +++ b/src/openrct2-ui/UiStringIds.h @@ -536,6 +536,7 @@ namespace OpenRCT2 STR_CHANGE_DETAIL_NOTES_ABOUT_PARK_SCENARIO_TIP = 3297, STR_CHANGE_NAME_OF_PARK_TIP = 3295, STR_CHANGE_NAME_OF_SCENARIO_TIP = 3296, + STR_EARNINGS_LABEL = 6760, STR_ENTER_SCENARIO_DESCRIPTION = 3316, STR_ENTER_SCENARIO_NAME = 3314, STR_ENTRY_PRICE_LABEL = 3281, @@ -548,6 +549,8 @@ namespace OpenRCT2 STR_FORBID_TREE_REMOVAL = 3267, STR_FORBID_TREE_REMOVAL_TIP = 3268, STR_FREE_PARK_ENTER = 3279, + STR_GROUP_BUSINESS_MODEL = 6759, + STR_GROUP_LOAN_OPTIONS = 6758, STR_GUEST_INIT_HAPPINESS = 3261, STR_GUEST_INIT_HUNGER = 3262, STR_GUEST_INIT_THIRST = 3263, @@ -573,13 +576,13 @@ namespace OpenRCT2 STR_OBJECTIVE_DROPDOWN_BUILD_THE_BEST_RIDE_YOU_CAN = STR_OBJECTIVE_DROPDOWN_NONE + 4, STR_OBJECTIVE_DROPDOWN_FINISH_BUILDING_5_ROLLER_COASTERS = STR_OBJECTIVE_DROPDOWN_NONE + 9, STR_OBJECTIVE_DROPDOWN_HAVE_FUN = STR_OBJECTIVE_DROPDOWN_NONE + 3, + STR_OBJECTIVE_DROPDOWN_LABEL = 3287, STR_OBJECTIVE_DROPDOWN_MONTHLY_INCOME_FROM_RIDE_TICKETS = STR_OBJECTIVE_DROPDOWN_NONE + 7, STR_OBJECTIVE_DROPDOWN_MONTHLY_PROFIT_FROM_FOOD_MERCHANDISE = STR_OBJECTIVE_DROPDOWN_NONE + 11, STR_OBJECTIVE_DROPDOWN_NUMBER_OF_GUESTS_AT_A_GIVEN_DATE = STR_OBJECTIVE_DROPDOWN_NONE + 1, STR_OBJECTIVE_DROPDOWN_NUMBER_OF_GUESTS_IN_PARK = STR_OBJECTIVE_DROPDOWN_NONE + 6, STR_OBJECTIVE_DROPDOWN_PARK_VALUE_AT_A_GIVEN_DATE = STR_OBJECTIVE_DROPDOWN_NONE + 2, STR_OBJECTIVE_DROPDOWN_REPAY_LOAN_AND_ACHIEVE_A_GIVEN_PARK_VALUE = STR_OBJECTIVE_DROPDOWN_NONE + 10, - STR_OBJECTIVE_DROPDOWN_LABEL = 3287, STR_PAID_ENTRY_PAID_RIDES = 6153, STR_PARK_SCENARIO_DETAILS = 3315, STR_PAY_FOR_PARK_PAY_FOR_RIDES_TIP = 3266, diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index 60239e5b90..0c88d226a5 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -43,8 +43,8 @@ namespace OpenRCT2::Ui::Windows static constexpr int32_t WW_SCENARIO_DETAILS = 450; static constexpr int32_t WH_SCENARIO_DETAILS = 169; - static constexpr int32_t WW_FINANCIAL = 300; - static constexpr int32_t WH_FINANCIAL = 200; + static constexpr int32_t WW_FINANCIAL = 380; + static constexpr int32_t WH_FINANCIAL = 260; static constexpr int32_t WW_GUESTS = 380; static constexpr int32_t WH_GUESTS = 154; @@ -141,9 +141,8 @@ namespace OpenRCT2::Ui::Windows // Financial tab WIDX_NO_MONEY = WIDX_PAGE_START, - WIDX_INITIAL_CASH, - WIDX_INITIAL_CASH_INCREASE, - WIDX_INITIAL_CASH_DECREASE, + + WIDX_GROUP_LOAN, WIDX_INITIAL_LOAN, WIDX_INITIAL_LOAN_INCREASE, WIDX_INITIAL_LOAN_DECREASE, @@ -153,11 +152,18 @@ namespace OpenRCT2::Ui::Windows WIDX_INTEREST_RATE, WIDX_INTEREST_RATE_INCREASE, WIDX_INTEREST_RATE_DECREASE, + + WIDX_GROUP_BUSINESS_MODEL, + WIDX_INITIAL_CASH, + WIDX_INITIAL_CASH_INCREASE, + WIDX_INITIAL_CASH_DECREASE, + WIDX_PAY_FOR_PARK_OR_RIDES_LABEL, WIDX_PAY_FOR_PARK_OR_RIDES, WIDX_PAY_FOR_PARK_OR_RIDES_DROPDOWN, WIDX_ENTRY_PRICE, WIDX_ENTRY_PRICE_INCREASE, WIDX_ENTRY_PRICE_DECREASE, + WIDX_FORBID_MARKETING, WIDX_HARD_PARK_RATING, WIDX_RCT1_INTEREST, @@ -222,17 +228,20 @@ namespace OpenRCT2::Ui::Windows static constexpr Widget window_editor_scenario_options_financial_widgets[] = { MAIN_OPTIONS_WIDGETS(STR_SCENARIO_OPTIONS_FINANCIAL, WW_FINANCIAL, WH_FINANCIAL), - MakeWidget ({ 8, 48}, {WW_FINANCIAL - 16, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_MAKE_PARK_NO_MONEY, STR_MAKE_PARK_NO_MONEY_TIP ), - MakeSpinnerWidgets({188, 65}, { 100, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // NB: 3 widgets - MakeSpinnerWidgets({188, 82}, { 100, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // NB: 3 widgets - MakeSpinnerWidgets({188, 99}, { 100, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // NB: 3 widgets - MakeSpinnerWidgets({218, 116}, { 70, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // NB: 3 widgets - MakeWidget ({ 78, 133}, { 210, 12}, WindowWidgetType::DropdownMenu, WindowColour::Secondary, kStringIdNone, STR_PAY_FOR_PARK_PAY_FOR_RIDES_TIP), - MakeWidget ({276, 134}, { 11, 10}, WindowWidgetType::Button, WindowColour::Secondary, STR_DROPDOWN_GLYPH, STR_PAY_FOR_PARK_PAY_FOR_RIDES_TIP), - MakeSpinnerWidgets({218, 150}, { 70, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // NB: 3 widgets - MakeWidget ({ 8, 167}, {WW_FINANCIAL - 16, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_FORBID_MARKETING, STR_FORBID_MARKETING_TIP ), - MakeWidget ({ 8, 184}, {WW_FINANCIAL - 16, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_HARD_PARK_RATING, STR_HARD_PARK_RATING_TIP ), - MakeWidget ({ 8, 201}, {WW_FINANCIAL - 16, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_RCT1_INTEREST, STR_RCT1_INTEREST_TIP ), + MakeWidget ({ 8, 48}, {WW_FINANCIAL - 16, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_MAKE_PARK_NO_MONEY, STR_MAKE_PARK_NO_MONEY_TIP ), + MakeWidget ({ 5, 63}, {WW_FINANCIAL - 10, 67}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_GROUP_LOAN_OPTIONS ), // Hardware group + MakeSpinnerWidgets({268, 77}, { 100, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // NB: 3 widgets + MakeSpinnerWidgets({268, 94}, { 100, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // NB: 3 widgets + MakeSpinnerWidgets({298, 111}, { 70, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // NB: 3 widgets + MakeWidget ({ 5, 133}, {WW_FINANCIAL - 10, 70}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_GROUP_BUSINESS_MODEL ), // Hardware group + MakeSpinnerWidgets({268, 150}, { 100, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // NB: 3 widgets + MakeWidget ({ 10, 167}, { 150, 12}, WindowWidgetType::Label, WindowColour::Secondary, STR_EARNINGS_LABEL ), + MakeWidget ({158, 167}, { 210, 12}, WindowWidgetType::DropdownMenu, WindowColour::Secondary, kStringIdNone, STR_PAY_FOR_PARK_PAY_FOR_RIDES_TIP), + MakeWidget ({356, 168}, { 11, 10}, WindowWidgetType::Button, WindowColour::Secondary, STR_DROPDOWN_GLYPH, STR_PAY_FOR_PARK_PAY_FOR_RIDES_TIP), + MakeSpinnerWidgets({298, 184}, { 70, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // NB: 3 widgets + MakeWidget ({ 8, 209}, {WW_FINANCIAL - 16, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_FORBID_MARKETING, STR_FORBID_MARKETING_TIP ), + MakeWidget ({ 8, 226}, {WW_FINANCIAL - 16, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_HARD_PARK_RATING, STR_HARD_PARK_RATING_TIP ), + MakeWidget ({ 8, 243}, {WW_FINANCIAL - 16, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_RCT1_INTEREST, STR_RCT1_INTEREST_TIP ), }; static constexpr Widget window_editor_scenario_options_guests_widgets[] = { @@ -1589,7 +1598,7 @@ namespace OpenRCT2::Ui::Windows const auto& initialCashWidget = widgets[WIDX_INITIAL_CASH]; if (initialCashWidget.type != WindowWidgetType::Empty) { - screenCoords = windowPos + ScreenCoordsXY{ 8, initialCashWidget.top }; + screenCoords = windowPos + ScreenCoordsXY{ 10, initialCashWidget.top }; DrawTextBasic(dpi, screenCoords, STR_INIT_CASH_LABEL); screenCoords = windowPos + ScreenCoordsXY{ initialCashWidget.left + 1, initialCashWidget.top }; @@ -1601,7 +1610,7 @@ namespace OpenRCT2::Ui::Windows const auto& initialLoanWidget = widgets[WIDX_INITIAL_LOAN]; if (initialLoanWidget.type != WindowWidgetType::Empty) { - screenCoords = windowPos + ScreenCoordsXY{ 8, initialLoanWidget.top }; + screenCoords = windowPos + ScreenCoordsXY{ 10, initialLoanWidget.top }; DrawTextBasic(dpi, screenCoords, STR_INIT_LOAN_LABEL); screenCoords = windowPos + ScreenCoordsXY{ initialLoanWidget.left + 1, initialLoanWidget.top }; @@ -1613,7 +1622,7 @@ namespace OpenRCT2::Ui::Windows const auto& maximumLoanWidget = widgets[WIDX_MAXIMUM_LOAN]; if (maximumLoanWidget.type != WindowWidgetType::Empty) { - screenCoords = windowPos + ScreenCoordsXY{ 8, maximumLoanWidget.top }; + screenCoords = windowPos + ScreenCoordsXY{ 10, maximumLoanWidget.top }; DrawTextBasic(dpi, screenCoords, STR_MAX_LOAN_LABEL); screenCoords = windowPos + ScreenCoordsXY{ maximumLoanWidget.left + 1, maximumLoanWidget.top }; @@ -1625,7 +1634,7 @@ namespace OpenRCT2::Ui::Windows const auto& interestRateWidget = widgets[WIDX_INTEREST_RATE]; if (interestRateWidget.type != WindowWidgetType::Empty) { - screenCoords = windowPos + ScreenCoordsXY{ 8, interestRateWidget.top }; + screenCoords = windowPos + ScreenCoordsXY{ 10, interestRateWidget.top }; DrawTextBasic(dpi, screenCoords, STR_INTEREST_RATE_LABEL); screenCoords = windowPos + ScreenCoordsXY{ interestRateWidget.left + 1, interestRateWidget.top }; @@ -1658,7 +1667,7 @@ namespace OpenRCT2::Ui::Windows if (entryPriceWidget.type != WindowWidgetType::Empty) { // Entry price label - screenCoords = windowPos + ScreenCoordsXY{ 8, entryPriceWidget.top }; + screenCoords = windowPos + ScreenCoordsXY{ 10, entryPriceWidget.top }; DrawTextBasic(dpi, screenCoords, STR_ENTRY_PRICE_LABEL); // Entry price value