diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index c4c9ea4cd2..a5252060d7 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -4538,7 +4538,7 @@ STR_6228 :Scenario Options STR_6229 :{WINDOW_COLOUR_2}{STRINGID}: {STRINGID} STR_6230 :{STRINGID}: {MOVE_X}{185}{STRINGID} STR_6231 :{WINDOW_COLOUR_2}{STRINGID}: {MOVE_X}{185}{STRINGID} - +STR_6232 :Frozen ############# # Scenarios # diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index 237080a04b..2687a1044d 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -15,23 +15,25 @@ #pragma endregion #include -#include -#include -#include -#include #include -#include +#include +#include #include #include +#include #include #include +#include #include #include +#include +#include #define CHEATS_MONEY_DEFAULT MONEY(10000,00) #define CHEATS_MONEY_INCREMENT_DIV MONEY(5000,00) static utf8 _moneySpinnerText[MONEY_STRING_MAXLENGTH]; static money32 _moneySpinnerValue = CHEATS_MONEY_DEFAULT; +static sint32 _selectedStaffSpeed = 1; enum { @@ -41,6 +43,13 @@ enum WINDOW_CHEATS_PAGE_RIDES, }; +static rct_string_id _staffSpeedNames[] = +{ + STR_FROZEN, + STR_NORMAL, + STR_FAST, +}; + static constexpr const rct_string_id WeatherTypes[] = { STR_SUNNY, @@ -137,8 +146,8 @@ enum WINDOW_CHEATS_WIDGET_IDX WIDX_FIX_VANDALISM, WIDX_REMOVE_LITTER, WIDX_DISABLE_PLANT_AGING, - WIDX_FAST_STAFF, - WIDX_NORMAL_STAFF, + WIDX_STAFF_SPEED, + WIDX_STAFF_SPEED_DROPDOWN_BUTTON, WIDX_FIX_ALL = WIDX_TAB_CONTENT, WIDX_RENEW_RIDES, @@ -289,9 +298,9 @@ static rct_widget window_cheats_misc_widgets[] = { WWT_BUTTON, 1, XPL(0), WPL(0), YPL(14), HPL(14), STR_CHEAT_WATER_PLANTS, STR_NONE }, // Water plants { WWT_BUTTON, 1, XPL(1), WPL(1), YPL(14), HPL(14), STR_CHEAT_FIX_VANDALISM, STR_NONE }, // Fix vandalism { WWT_BUTTON, 1, XPL(0), WPL(0), YPL(15), HPL(15), STR_CHEAT_REMOVE_LITTER, STR_NONE }, // Remove litter - { WWT_CHECKBOX, 1, XPL(0), WPL(0), YPL(16), HPL(16), STR_CHEAT_DISABLE_PLANT_AGING, STR_CHEAT_DISABLE_PLANT_AGING_TIP }, // Disable plant ageing - { WWT_BUTTON, 1, MAX_BTN_LEFT, MAX_BTN_RIGHT, YPL(17), HPL(17), STR_FAST, STR_NONE }, // Fast staff - { WWT_BUTTON, 1, MIN_BTN_LEFT, MIN_BTN_RIGHT, YPL(17), HPL(17), STR_NORMAL, STR_NONE }, // Normal staff + { WWT_CHECKBOX, 1, XPL(0), WPL(1), YPL(16), HPL(16), STR_CHEAT_DISABLE_PLANT_AGING, STR_CHEAT_DISABLE_PLANT_AGING_TIP }, // Disable plant ageing + { WWT_DROPDOWN, 1, XPL(1), WPL(1), YPL(17) + 2, YPL(17) + 13, STR_NONE, STR_NONE }, // Staff speed + { WWT_BUTTON, 1, WPL(1) - 11, WPL(1) - 1, YPL(17) + 3, YPL(17) + 12, STR_DROPDOWN_GLYPH, STR_NONE }, // Staff speed { WIDGETS_END }, }; static rct_widget window_cheats_rides_widgets[] = @@ -552,8 +561,8 @@ static uint64 window_cheats_page_enabled_widgets[] = { (1ULL << WIDX_NEVERENDING_MARKETING) | (1ULL << WIDX_SANDBOX_MODE) | (1ULL << WIDX_RESET_DATE) | - (1ULL << WIDX_FAST_STAFF) | - (1ULL << WIDX_NORMAL_STAFF) | + (1ULL << WIDX_STAFF_SPEED) | + (1ULL << WIDX_STAFF_SPEED_DROPDOWN_BUTTON) | (1ULL << WIDX_PARK_PARAMETERS) | (1ULL << WIDX_FORCE_PARK_RATING) | (1ULL << WIDX_INCREASE_PARK_RATING) | @@ -706,7 +715,8 @@ static void window_cheats_misc_mousedown(rct_window *w, rct_widgetindex widgetIn if (get_forced_park_rating() >= 0) game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SETFORCEDPARKRATING, park_rating_spinner_value, GAME_COMMAND_CHEAT, 0, 0); break; - case WIDX_WEATHER_DROPDOWN_BUTTON:{ + case WIDX_WEATHER_DROPDOWN_BUTTON: + { rct_widget *dropdownWidget; int i, currentWeather; @@ -729,17 +739,61 @@ static void window_cheats_misc_mousedown(rct_window *w, rct_widgetindex widgetIn currentWeather = gClimateCurrent.Weather; dropdown_set_checked(currentWeather, true); - } - break; + } + break; + case WIDX_STAFF_SPEED_DROPDOWN_BUTTON: + { + rct_widget * dropdownWidget; + + dropdownWidget = widget - 1; + + for (size_t i = 0; i < Util::CountOf(_staffSpeedNames); i++) + { + gDropdownItemsArgs[i] = _staffSpeedNames[i]; + gDropdownItemsFormat[i] = STR_DROPDOWN_MENU_LABEL; + } + + window_dropdown_show_text_custom_width( + w->x + dropdownWidget->left, + w->y + dropdownWidget->top, + dropdownWidget->bottom - dropdownWidget->top + 1, + w->colours[1], + 0, + DROPDOWN_FLAG_STAY_OPEN, + 3, + dropdownWidget->right - dropdownWidget->left - 3 + ); + dropdown_set_checked(_selectedStaffSpeed, true); + } } } static void window_cheats_misc_dropdown(rct_window *w, rct_widgetindex widgetIndex, sint32 dropdownIndex) { - if (widgetIndex != WIDX_WEATHER_DROPDOWN_BUTTON || dropdownIndex == -1) + if (dropdownIndex == -1) + { return; + } + else if (widgetIndex == WIDX_WEATHER_DROPDOWN_BUTTON) + { + game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_FORCEWEATHER, dropdownIndex, GAME_COMMAND_CHEAT, 0, 0); - game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_FORCEWEATHER, dropdownIndex, GAME_COMMAND_CHEAT, 0, 0); + } + else if (widgetIndex == WIDX_STAFF_SPEED_DROPDOWN_BUTTON) + { + sint32 speed = CHEATS_STAFF_FAST_SPEED; + switch (dropdownIndex) + { + case 0: + speed = CHEATS_STAFF_FREEZE_SPEED; + break; + case 1: + speed = CHEATS_STAFF_NORMAL_SPEED; + } + + game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SETSTAFFSPEED, speed, GAME_COMMAND_CHEAT, 0, 0); + _selectedStaffSpeed = dropdownIndex; + } } static void window_cheats_money_mouseup(rct_window *w, rct_widgetindex widgetIndex) @@ -922,12 +976,6 @@ static void window_cheats_misc_mouseup(rct_window *w, rct_widgetindex widgetInde case WIDX_RESET_DATE: game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_RESETDATE, 0, GAME_COMMAND_CHEAT, 0, 0); break; - case WIDX_FAST_STAFF: - game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SETSTAFFSPEED, CHEATS_STAFF_FAST_SPEED, GAME_COMMAND_CHEAT, 0, 0); - break; - case WIDX_NORMAL_STAFF: - game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SETSTAFFSPEED, CHEATS_STAFF_NORMAL_SPEED, GAME_COMMAND_CHEAT, 0, 0); - break; case WIDX_PARK_PARAMETERS: context_open_window(WC_EDITOR_SCENARIO_OPTIONS); break; @@ -1118,6 +1166,8 @@ static void window_cheats_invalidate(rct_window *w) // Current weather window_cheats_misc_widgets[WIDX_WEATHER].text = WeatherTypes[gClimateCurrent.Weather]; + // Staff speed + window_cheats_misc_widgets[WIDX_STAFF_SPEED].text = _staffSpeedNames[_selectedStaffSpeed]; } static void window_cheats_paint(rct_window *w, rct_drawpixelinfo *dpi) diff --git a/src/openrct2/Cheats.h b/src/openrct2/Cheats.h index 4367772b3f..af586517d7 100644 --- a/src/openrct2/Cheats.h +++ b/src/openrct2/Cheats.h @@ -116,6 +116,7 @@ enum { #define CHEATS_TRAM_INCREMENT 250 #define CHEATS_STAFF_FAST_SPEED 0xFF #define CHEATS_STAFF_NORMAL_SPEED 0x60 +#define CHEATS_STAFF_FREEZE_SPEED 0 extern sint32 park_rating_spinner_value; extern sint32 year_spinner_value; diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index a2fffce9a5..75dfb9ee03 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -3895,6 +3895,8 @@ enum { STR_INVENTIONS_LIST_RIDE_AND_VEHICLE_NAME = 6230, STR_INVENTIONS_LIST_RIDE_AND_VEHICLE_NAME_DRAG = 6231, + STR_FROZEN = 6232, + // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working STR_COUNT = 32768 };