1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-22 15:23:01 +01:00

Refactor the weather cheat UI

I removed the two buttons that were used previously to change the park's weather with a proper dropdown, which allows the player to select any of the available weather, not being limited to just two options. This change is (currently) listed on the project's wiki page 'Features to implement'.
This commit is contained in:
Martin Černáč
2016-01-27 20:29:19 +01:00
parent 52a42126f3
commit 85b6effd0f
3 changed files with 70 additions and 15 deletions

View File

@@ -2763,8 +2763,8 @@ STR_2753 :Mowed grass
STR_2754 :Water plants STR_2754 :Water plants
STR_2755 :Fix vandalism STR_2755 :Fix vandalism
STR_2756 :Remove litter STR_2756 :Remove litter
STR_2757 :Force Sun STR_2757 :<not used anymore>
STR_2758 :Force Thunder STR_2758 :<not used anymore>
STR_2759 :Zero Clearance STR_2759 :Zero Clearance
STR_2760 :+{CURRENCY} STR_2760 :+{CURRENCY}
STR_2761 :<not used anymore> STR_2761 :<not used anymore>
@@ -4021,6 +4021,14 @@ STR_5716 :Not allowed in multiplayer mode
# For identifying client network version in server list window # For identifying client network version in server list window
STR_5717 :Network version: {STRING} STR_5717 :Network version: {STRING}
STR_5718 :{SMALLFONT}{BLACK}Network version: {STRING} STR_5718 :{SMALLFONT}{BLACK}Network version: {STRING}
STR_5719 :Sunny
STR_5720 :Partially Cloudy
STR_5721 :Cloudy
STR_5722 :Rain
STR_5723 :Heavy Rain
STR_5724 :Thunderstorm
STR_5725 :{BLACK}Force weather:
STR_5726 :{SMALLFONT}{BLACK}Sets the current weather in park
############# #############
# Scenarios # # Scenarios #

View File

@@ -2313,6 +2313,15 @@ enum {
STR_NETWORK_VERSION = 5717, STR_NETWORK_VERSION = 5717,
STR_NETWORK_VERSION_TIP = 5718, STR_NETWORK_VERSION_TIP = 5718,
STR_SUNNY = 5719,
STR_PARTIALLY_CLOUDY = STR_SUNNY + 1,
STR_CLOUDY = STR_SUNNY + 2,
STR_RAIN = STR_SUNNY + 3,
STR_HEAVY_RAIN = STR_SUNNY + 4,
STR_THUNDERSTORM = STR_SUNNY + 5,
STR_FORCE_WEATHER = 5725,
STR_FORCE_WEATHER_TOOLTIP = 5726,
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
STR_COUNT = 32768 STR_COUNT = 32768
}; };

View File

@@ -38,6 +38,7 @@
#include "../cheats.h" #include "../cheats.h"
#include "../network/network.h" #include "../network/network.h"
#include "error.h" #include "error.h"
#include "dropdown.h"
#define CHEATS_MONEY_INCREMENT MONEY(5000,00) #define CHEATS_MONEY_INCREMENT MONEY(5000,00)
#define CHEATS_TRAM_INCREMENT 250 #define CHEATS_TRAM_INCREMENT 250
@@ -102,8 +103,8 @@ enum WINDOW_CHEATS_WIDGET_IDX {
WIDX_HAVE_FUN, WIDX_HAVE_FUN,
WIDX_CLIMATE_GROUP, WIDX_CLIMATE_GROUP,
WIDX_FREEZE_CLIMATE, WIDX_FREEZE_CLIMATE,
WIDX_WEATHER_SUN, WIDX_WEATHER,
WIDX_WEATHER_THUNDER, WIDX_WEATHER_DROPDOWN_BUTTON,
WIDX_STAFF_GROUP, WIDX_STAFF_GROUP,
WIDX_CLEAR_GRASS, WIDX_CLEAR_GRASS,
WIDX_MOWED_GRASS, WIDX_MOWED_GRASS,
@@ -238,8 +239,8 @@ static rct_widget window_cheats_misc_widgets[] = {
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(5), HPL(5), STR_CHEAT_HAVE_FUN, STR_NONE}, // Have fun! { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(5), HPL(5), STR_CHEAT_HAVE_FUN, STR_NONE}, // Have fun!
{ WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(7), HPL(9.5), STR_CHEAT_CLIMATE_GROUP, STR_NONE }, // Climate group { WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(7), HPL(9.5), STR_CHEAT_CLIMATE_GROUP, STR_NONE }, // Climate group
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(8), HPL(8), STR_CHEAT_FREEZE_CLIMATE, STR_NONE}, // Freeze climate { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(8), HPL(8), STR_CHEAT_FREEZE_CLIMATE, STR_NONE}, // Freeze climate
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(9), HPL(9), STR_CHEAT_FORCE_SUN, STR_NONE}, // Sun { WWT_DROPDOWN, 1, XPL(1), WPL(1), YPL(9) + 2, YPL(9) + 13, STR_NONE, STR_FORCE_WEATHER_TOOLTIP }, // Force weather
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(9), HPL(9), STR_CHEAT_FORCE_THUNDER, STR_NONE}, // Thunder { WWT_DROPDOWN_BUTTON, 1, WPL(1) - 11, WPL(1) - 1, YPL(9) + 3, YPL(9) + 12, STR_DROPDOWN_GLYPH, STR_FORCE_WEATHER_TOOLTIP }, // Force weather
{ WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(11), HPL(15.5), STR_CHEAT_STAFF_GROUP, STR_NONE }, // Staff group { WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(11), HPL(15.5), STR_CHEAT_STAFF_GROUP, STR_NONE }, // Staff group
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(12), HPL(12), STR_CHEAT_CLEAR_GRASS, STR_NONE}, // Clear grass { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(12), HPL(12), STR_CHEAT_CLEAR_GRASS, STR_NONE}, // Clear grass
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(12), HPL(12), STR_CHEAT_MOWED_GRASS, STR_NONE}, // Mowed grass { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(12), HPL(12), STR_CHEAT_MOWED_GRASS, STR_NONE}, // Mowed grass
@@ -276,6 +277,8 @@ static rct_widget *window_cheats_page_widgets[] = {
}; };
static void window_cheats_money_mouseup(rct_window *w, int widgetIndex); static void window_cheats_money_mouseup(rct_window *w, int widgetIndex);
static void window_cheats_misc_mousedown(int widgetIndex, rct_window *w, rct_widget* widget);
static void window_cheats_misc_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_cheats_guests_mouseup(rct_window *w, int widgetIndex); static void window_cheats_guests_mouseup(rct_window *w, int widgetIndex);
static void window_cheats_misc_mouseup(rct_window *w, int widgetIndex); static void window_cheats_misc_mouseup(rct_window *w, int widgetIndex);
static void window_cheats_rides_mouseup(rct_window *w, int widgetIndex); static void window_cheats_rides_mouseup(rct_window *w, int widgetIndex);
@@ -350,8 +353,8 @@ static rct_window_event_list window_cheats_misc_events = {
NULL, NULL,
window_cheats_misc_mouseup, window_cheats_misc_mouseup,
NULL, NULL,
NULL, window_cheats_misc_mousedown,
NULL, window_cheats_misc_dropdown,
NULL, NULL,
window_cheats_update, window_cheats_update,
NULL, NULL,
@@ -419,7 +422,7 @@ static rct_window_event_list *window_cheats_page_events[] = {
static uint64 window_cheats_page_enabled_widgets[] = { static uint64 window_cheats_page_enabled_widgets[] = {
(1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_HIGH_MONEY) | (1ULL << WIDX_CLEAR_LOAN), (1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_HIGH_MONEY) | (1ULL << WIDX_CLEAR_LOAN),
(1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_GUEST_PARAMETERS_GROUP) | (1ULL << WIDX_GUEST_HAPPINESS_MAX) | (1ULL << WIDX_GUEST_HAPPINESS_MIN) | (1ULL << WIDX_GUEST_ENERGY_MAX) | (1ULL << WIDX_GUEST_ENERGY_MIN) | (1ULL << WIDX_GUEST_HUNGER_MAX) | (1ULL << WIDX_GUEST_HUNGER_MIN) | (1ULL << WIDX_GUEST_THIRST_MAX) | (1ULL << WIDX_GUEST_THIRST_MIN) | (1ULL << WIDX_GUEST_NAUSEA_MAX) | (1ULL << WIDX_GUEST_NAUSEA_MIN) | (1ULL << WIDX_GUEST_NAUSEA_TOLERANCE_MAX) | (1ULL << WIDX_GUEST_NAUSEA_TOLERANCE_MIN) | (1ULL << WIDX_GUEST_BATHROOM_MAX) | (1ULL << WIDX_GUEST_BATHROOM_MIN) | (1ULL << WIDX_GUEST_RIDE_INTENSITY_MORE_THAN_1) | (1ULL << WIDX_GUEST_RIDE_INTENSITY_LESS_THAN_15) | (1ULL << WIDX_GUEST_IGNORE_RIDE_INTENSITY) | (1ULL << WIDX_GIVE_ALL_GUESTS_GROUP) | (1ULL << WIDX_GIVE_GUESTS_MONEY) | (1ULL << WIDX_GIVE_GUESTS_PARK_MAPS) | (1ULL << WIDX_GIVE_GUESTS_BALLOONS) | (1ULL << WIDX_GIVE_GUESTS_UMBRELLAS) | (1ULL << WIDX_TRAM_GUESTS) | (1ULL << WIDX_REMOVE_ALL_GUESTS) | (1ULL << WIDX_EXPLODE_GUESTS) | (1ULL << WIDX_DISABLE_VANDALISM), (1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_GUEST_PARAMETERS_GROUP) | (1ULL << WIDX_GUEST_HAPPINESS_MAX) | (1ULL << WIDX_GUEST_HAPPINESS_MIN) | (1ULL << WIDX_GUEST_ENERGY_MAX) | (1ULL << WIDX_GUEST_ENERGY_MIN) | (1ULL << WIDX_GUEST_HUNGER_MAX) | (1ULL << WIDX_GUEST_HUNGER_MIN) | (1ULL << WIDX_GUEST_THIRST_MAX) | (1ULL << WIDX_GUEST_THIRST_MIN) | (1ULL << WIDX_GUEST_NAUSEA_MAX) | (1ULL << WIDX_GUEST_NAUSEA_MIN) | (1ULL << WIDX_GUEST_NAUSEA_TOLERANCE_MAX) | (1ULL << WIDX_GUEST_NAUSEA_TOLERANCE_MIN) | (1ULL << WIDX_GUEST_BATHROOM_MAX) | (1ULL << WIDX_GUEST_BATHROOM_MIN) | (1ULL << WIDX_GUEST_RIDE_INTENSITY_MORE_THAN_1) | (1ULL << WIDX_GUEST_RIDE_INTENSITY_LESS_THAN_15) | (1ULL << WIDX_GUEST_IGNORE_RIDE_INTENSITY) | (1ULL << WIDX_GIVE_ALL_GUESTS_GROUP) | (1ULL << WIDX_GIVE_GUESTS_MONEY) | (1ULL << WIDX_GIVE_GUESTS_PARK_MAPS) | (1ULL << WIDX_GIVE_GUESTS_BALLOONS) | (1ULL << WIDX_GIVE_GUESTS_UMBRELLAS) | (1ULL << WIDX_TRAM_GUESTS) | (1ULL << WIDX_REMOVE_ALL_GUESTS) | (1ULL << WIDX_EXPLODE_GUESTS) | (1ULL << WIDX_DISABLE_VANDALISM),
(1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_FREEZE_CLIMATE) | (1ULL << WIDX_OPEN_CLOSE_PARK) | (1ULL << WIDX_WEATHER_SUN) | (1ULL << WIDX_WEATHER_THUNDER) | (1ULL << WIDX_CLEAR_GRASS) | (1ULL << WIDX_MOWED_GRASS) | (1ULL << WIDX_WATER_PLANTS) | (1ULL << WIDX_FIX_VANDALISM) | (1ULL << WIDX_REMOVE_LITTER) | (1ULL << WIDX_WIN_SCENARIO) | (1ULL << WIDX_HAVE_FUN) | (1ULL << WIDX_UNLOCK_ALL_PRICES) | (1ULL << WIDX_SANDBOX_MODE) | (1ULL << WIDX_FAST_STAFF) | (1ULL << WIDX_NORMAL_STAFF) | (1ULL << WIDX_PARK_PARAMETERS) | (1ULL << WIDX_FORCE_PARK_RATING) | (1ULL << WIDX_INCREASE_PARK_RATING) | (1ULL << WIDX_DECREASE_PARK_RATING), (1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_FREEZE_CLIMATE) | (1ULL << WIDX_OPEN_CLOSE_PARK) | (1ULL << WIDX_WEATHER) | (1ULL << WIDX_WEATHER_DROPDOWN_BUTTON) | (1ULL << WIDX_CLEAR_GRASS) | (1ULL << WIDX_MOWED_GRASS) | (1ULL << WIDX_WATER_PLANTS) | (1ULL << WIDX_FIX_VANDALISM) | (1ULL << WIDX_REMOVE_LITTER) | (1ULL << WIDX_WIN_SCENARIO) | (1ULL << WIDX_HAVE_FUN) | (1ULL << WIDX_UNLOCK_ALL_PRICES) | (1ULL << WIDX_SANDBOX_MODE) | (1ULL << WIDX_FAST_STAFF) | (1ULL << WIDX_NORMAL_STAFF) | (1ULL << WIDX_PARK_PARAMETERS) | (1ULL << WIDX_FORCE_PARK_RATING) | (1ULL << WIDX_INCREASE_PARK_RATING) | (1ULL << WIDX_DECREASE_PARK_RATING),
(1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_RENEW_RIDES) | (1ULL << WIDX_MAKE_DESTRUCTIBLE) | (1ULL << WIDX_FIX_ALL) | (1ULL << WIDX_FAST_LIFT_HILL) | (1ULL << WIDX_DISABLE_BRAKES_FAILURE) | (1ULL << WIDX_DISABLE_ALL_BREAKDOWNS) | (1ULL << WIDX_BUILD_IN_PAUSE_MODE) | (1ULL << WIDX_RESET_CRASH_STATUS) | (1ULL << WIDX_10_MINUTE_INSPECTIONS) | (1ULL << WIDX_SHOW_ALL_OPERATING_MODES) | (1ULL << WIDX_SHOW_VEHICLES_FROM_OTHER_TRACK_TYPES) (1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_RENEW_RIDES) | (1ULL << WIDX_MAKE_DESTRUCTIBLE) | (1ULL << WIDX_FIX_ALL) | (1ULL << WIDX_FAST_LIFT_HILL) | (1ULL << WIDX_DISABLE_BRAKES_FAILURE) | (1ULL << WIDX_DISABLE_ALL_BREAKDOWNS) | (1ULL << WIDX_BUILD_IN_PAUSE_MODE) | (1ULL << WIDX_RESET_CRASH_STATUS) | (1ULL << WIDX_10_MINUTE_INSPECTIONS) | (1ULL << WIDX_SHOW_ALL_OPERATING_MODES) | (1ULL << WIDX_SHOW_VEHICLES_FROM_OTHER_TRACK_TYPES)
}; };
@@ -783,6 +786,42 @@ void window_cheats_open()
park_rating_spinner_value = get_forced_park_rating() >= 0 ? get_forced_park_rating() : 999; park_rating_spinner_value = get_forced_park_rating() >= 0 ? get_forced_park_rating() : 999;
} }
static void window_cheats_misc_mousedown(int widgetIndex, rct_window *w, rct_widget* widget)
{
rct_widget *dropdownWidget;
int i;
if (widgetIndex != WIDX_WEATHER_DROPDOWN_BUTTON)
return;
dropdownWidget = widget - 1;
for (i = 0; i < 6; i++) {
gDropdownItemsFormat[i] = 1142;
gDropdownItemsArgs[i] = STR_SUNNY + i;
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left,
w->y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1],
DROPDOWN_FLAG_STAY_OPEN,
6,
dropdownWidget->right - dropdownWidget->left - 3
);
int currentWeather = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_WEATHER, uint8);
dropdown_set_checked(currentWeather, true);
}
static void window_cheats_misc_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
if (widgetIndex != WIDX_WEATHER_DROPDOWN_BUTTON || dropdownIndex == -1)
return;
climate_force_weather(dropdownIndex);
}
static void window_cheats_money_mouseup(rct_window *w, int widgetIndex) static void window_cheats_money_mouseup(rct_window *w, int widgetIndex)
{ {
switch (widgetIndex) { switch (widgetIndex) {
@@ -917,12 +956,6 @@ static void window_cheats_misc_mouseup(rct_window *w, int widgetIndex)
case WIDX_OPEN_CLOSE_PARK: case WIDX_OPEN_CLOSE_PARK:
park_set_open(park_is_open() ? 0 : 1); park_set_open(park_is_open() ? 0 : 1);
break; break;
case WIDX_WEATHER_SUN:
climate_force_weather(WEATHER_SUNNY);
break;
case WIDX_WEATHER_THUNDER:
climate_force_weather(WEATHER_THUNDER);
break;
case WIDX_CLEAR_GRASS: case WIDX_CLEAR_GRASS:
cheat_set_grass_length(GRASS_LENGTH_CLEAR_0); cheat_set_grass_length(GRASS_LENGTH_CLEAR_0);
break; break;
@@ -1124,6 +1157,10 @@ static void window_cheats_invalidate(rct_window *w)
// Set title // Set title
w->widgets[WIDX_TITLE].image = window_cheats_page_titles[w->page]; w->widgets[WIDX_TITLE].image = window_cheats_page_titles[w->page];
// Current weather
int currentWeather = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_WEATHER, uint8);
window_cheats_misc_widgets[WIDX_WEATHER].image = STR_SUNNY + currentWeather;
} }
static void window_cheats_paint(rct_window *w, rct_drawpixelinfo *dpi) static void window_cheats_paint(rct_window *w, rct_drawpixelinfo *dpi)
@@ -1138,6 +1175,7 @@ static void window_cheats_paint(rct_window *w, rct_drawpixelinfo *dpi)
} }
else if(w->page == WINDOW_CHEATS_PAGE_MISC){ else if(w->page == WINDOW_CHEATS_PAGE_MISC){
gfx_draw_string_left(dpi, STR_CHEAT_STAFF_SPEED, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(15) + TXTO); gfx_draw_string_left(dpi, STR_CHEAT_STAFF_SPEED, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(15) + TXTO);
gfx_draw_string_left(dpi, STR_FORCE_WEATHER, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(9) + TXTO);
gfx_draw_string_right(dpi, 5182, &park_rating_spinner_value, w->colours[2], w->x + WPL(1) - 10 - TXTO, w->y + YPL(4) + TXTO); gfx_draw_string_right(dpi, 5182, &park_rating_spinner_value, w->colours[2], w->x + WPL(1) - 10 - TXTO, w->y + YPL(4) + TXTO);
} }
else if (w->page == WINDOW_CHEATS_PAGE_GUESTS){ else if (w->page == WINDOW_CHEATS_PAGE_GUESTS){