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:
committed by
Michael Steenbeek
parent
998a05d217
commit
fb62ed8ae2
@@ -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 #
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user