1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-27 16:54:52 +01:00

Add "Quick demolish mode" to the Rides List

Taken from the "Quick fire mode" on the Staff List
This commit is contained in:
wolfreak99
2017-04-11 04:16:44 -04:00
committed by Michael Steenbeek
parent 998a05d217
commit fb62ed8ae2
3 changed files with 44 additions and 5 deletions

View File

@@ -4347,6 +4347,7 @@ STR_6035 :Please select your RCT1 directory
STR_6036 :{SMALLFONT}{BLACK}Clear
STR_6037 :Please select a valid RCT1 directory
STR_6038 :{SMALLFONT}{BLACK}If you have RCT1 installed, set this option to its directory to load scenarios, music, etc.
STR_6039 :{SMALLFONT}{BLACK}Quick demolish ride
#############
# Scenarios #

View File

@@ -3694,6 +3694,8 @@ enum {
STR_PATH_TO_RCT1_WRONG_ERROR = 6037,
STR_PATH_TO_RCT1_TIP = 6038,
STR_QUICK_DEMOLISH_RIDE = 6039,
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
STR_COUNT = 32768
};

View File

@@ -26,6 +26,7 @@
#include "../interface/themes.h"
#include "../interface/themes.h"
#include "../localisation/date.h"
#include "../network/network.h"
enum {
PAGE_RIDES,
@@ -48,7 +49,8 @@ enum WINDOW_RIDE_LIST_WIDGET_IDX {
WIDX_TAB_3,
WIDX_LIST,
WIDX_CLOSE_LIGHT,
WIDX_OPEN_LIGHT
WIDX_OPEN_LIGHT,
WIDX_QUICK_DEMOLISH,
};
static rct_widget window_ride_list_widgets[] = {
@@ -66,9 +68,12 @@ static rct_widget window_ride_list_widgets[] = {
{ WWT_SCROLL, 1, 3, 336, 60, 236, SCROLL_VERTICAL, STR_NONE }, // list
{ WWT_IMGBTN, 1, 320, 333, 62, 75, SPR_G2_RCT1_CLOSE_BUTTON_0, STR_NONE },
{ WWT_IMGBTN, 1, 320, 333, 76, 89, SPR_G2_RCT1_OPEN_BUTTON_0, STR_NONE },
{ WWT_FLATBTN, 1, 315, 338, 90, 113, SPR_DEMOLISH, STR_QUICK_DEMOLISH_RIDE },
{ WIDGETS_END },
};
static bool _quickDemolishMode = false;
static void window_ride_list_mouseup(rct_window *w, sint32 widgetIndex);
static void window_ride_list_resize(rct_window *w);
static void window_ride_list_mousedown(sint32 widgetIndex, rct_window*w, rct_widget* widget);
@@ -211,6 +216,9 @@ void window_ride_list_open()
(1 << WIDX_TAB_3) |
(1 << WIDX_CLOSE_LIGHT) |
(1 << WIDX_OPEN_LIGHT);
if (network_get_mode() != NETWORK_MODE_CLIENT) {
window->enabled_widgets |= (1 << WIDX_QUICK_DEMOLISH);
}
window_init_scroll_widgets(window);
window->page = PAGE_RIDES;
window->no_list_items = 0;
@@ -223,6 +231,7 @@ void window_ride_list_open()
}
_window_ride_list_information_type = INFORMATION_TYPE_STATUS;
window->list_information_type = 0;
_quickDemolishMode = false;
}
/**
@@ -260,6 +269,15 @@ static void window_ride_list_mouseup(rct_window *w, sint32 widgetIndex)
case WIDX_OPEN_LIGHT:
window_ride_list_open_all(w);
break;
case WIDX_QUICK_DEMOLISH:
if (network_get_mode() != NETWORK_MODE_CLIENT) {
_quickDemolishMode = !_quickDemolishMode;
}
else {
_quickDemolishMode = false;
}
window_invalidate(w);
break;
}
}
@@ -412,7 +430,14 @@ static void window_ride_list_scrollmousedown(rct_window *w, sint32 scrollIndex,
return;
// Open ride window
window_ride_main_open(w->list_item_positions[index]);
uint8 rideIndex = w->list_item_positions[index];
if (_quickDemolishMode && network_get_mode() != NETWORK_MODE_CLIENT) {
gGameCommandErrorTitle = STR_CANT_DEMOLISH_RIDE;
game_do_command(0, GAME_COMMAND_FLAG_APPLY, 0, rideIndex, GAME_COMMAND_DEMOLISH_RIDE, 0, 0);
}
else {
window_ride_main_open(rideIndex);
}
}
/**
@@ -458,6 +483,11 @@ static void window_ride_list_invalidate(rct_window *w)
window_ride_list_widgets[WIDX_TITLE].text = page_names[w->page];
if (_quickDemolishMode)
w->pressed_widgets |= (1ULL << WIDX_QUICK_DEMOLISH);
else
w->pressed_widgets &= ~(1ULL << WIDX_QUICK_DEMOLISH);
w->widgets[WIDX_BACKGROUND].right = w->width - 1;
w->widgets[WIDX_BACKGROUND].bottom = w->height - 1;
w->widgets[WIDX_PAGE_BACKGROUND].right = w->width - 1;
@@ -473,7 +503,9 @@ static void window_ride_list_invalidate(rct_window *w)
w->widgets[WIDX_CLOSE_LIGHT].left = w->width - 20;
w->widgets[WIDX_OPEN_LIGHT].right = w->width - 7;
w->widgets[WIDX_OPEN_LIGHT].left = w->width - 20;
w->widgets[WIDX_QUICK_DEMOLISH].right = w->width - 2;
w->widgets[WIDX_QUICK_DEMOLISH].left = w->width - 25;
if (theme_get_flags() & UITHEME_FLAG_USE_LIGHTS_RIDE) {
w->widgets[WIDX_OPEN_CLOSE_ALL].type = WWT_EMPTY;
w->widgets[WIDX_CLOSE_LIGHT].type = WWT_IMGBTN;
@@ -497,12 +529,16 @@ static void window_ride_list_invalidate(rct_window *w)
}
w->widgets[WIDX_CLOSE_LIGHT].image = SPR_G2_RCT1_CLOSE_BUTTON_0 + (allClosed == 1) * 2 + widget_is_pressed(w, WIDX_CLOSE_LIGHT);
w->widgets[WIDX_OPEN_LIGHT].image = SPR_G2_RCT1_OPEN_BUTTON_0 + (allOpen == 1) * 2 + widget_is_pressed(w, WIDX_OPEN_LIGHT);
w->widgets[WIDX_QUICK_DEMOLISH].top = w->widgets[WIDX_OPEN_LIGHT].bottom + 3;
}
else {
w->widgets[WIDX_OPEN_CLOSE_ALL].type = WWT_FLATBTN;
w->widgets[WIDX_CLOSE_LIGHT].type = WWT_EMPTY;
w->widgets[WIDX_OPEN_LIGHT].type = WWT_EMPTY;
w->widgets[WIDX_QUICK_DEMOLISH].top = w->widgets[WIDX_OPEN_CLOSE_ALL].bottom + 3;
}
w->widgets[WIDX_QUICK_DEMOLISH].bottom = w->widgets[WIDX_QUICK_DEMOLISH].top + 23;
w->widgets[WIDX_QUICK_DEMOLISH].type = network_get_mode() != NETWORK_MODE_CLIENT ? WWT_FLATBTN : WWT_EMPTY;
}
/**
@@ -532,12 +568,12 @@ static void window_ride_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi,
y = 0;
for (i = 0; i < w->no_list_items; i++) {
format = STR_BLACK_STRING;
format = (_quickDemolishMode ? STR_RED_STRINGID : STR_BLACK_STRING);
// Background highlight
if (i == w->selected_list_item) {
gfx_filter_rect(dpi, 0, y, 800, y + 9, PALETTE_DARKEN_1);
format = STR_WINDOW_COLOUR_2_STRINGID;
format = (_quickDemolishMode ? STR_LIGHTPINK_STRINGID : STR_WINDOW_COLOUR_2_STRINGID);
}
// Get ride