mirror of https://github.com/OpenRCT2/OpenRCT2.git
Introduce cheat option to show vehicles from other track types
This commit is contained in:
parent
1629c75fb3
commit
105280a082
|
@ -3893,6 +3893,7 @@ STR_5551 :Year/Day/Month
|
|||
STR_5552 :{POP16}{POP16}Year {COMMA16}, {PUSH16}{PUSH16}{PUSH16}{STRINGID} {MONTH}
|
||||
STR_5553 :Pause game when Steam overlay is open
|
||||
STR_5554 :{SMALLFONT}{BLACK}Enable mountain tool
|
||||
STR_5555 :Show vehicles from other track types
|
||||
|
||||
#####################
|
||||
# Rides/attractions #
|
||||
|
|
|
@ -4,6 +4,7 @@ bool gCheatsSandboxMode = false;
|
|||
bool gCheatsDisableClearanceChecks = false;
|
||||
bool gCheatsDisableSupportLimits = false;
|
||||
bool gCheatsShowAllOperatingModes = false;
|
||||
bool gCheatsShowVehiclesFromOtherTrackTypes = false;
|
||||
|
||||
void cheats_reset()
|
||||
{
|
||||
|
@ -11,4 +12,5 @@ void cheats_reset()
|
|||
gCheatsDisableClearanceChecks = false;
|
||||
gCheatsDisableSupportLimits = false;
|
||||
gCheatsShowAllOperatingModes = false;
|
||||
gCheatsShowVehiclesFromOtherTrackTypes = false;
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ extern bool gCheatsSandboxMode;
|
|||
extern bool gCheatsDisableClearanceChecks;
|
||||
extern bool gCheatsDisableSupportLimits;
|
||||
extern bool gCheatsShowAllOperatingModes;
|
||||
extern bool gCheatsShowVehiclesFromOtherTrackTypes;
|
||||
|
||||
void cheats_reset();
|
||||
|
||||
|
|
|
@ -1947,6 +1947,9 @@ enum {
|
|||
STR_CHEAT_EXPLODE = 5285,
|
||||
STR_CHEAT_TIP_EXPLODE = 5286,
|
||||
|
||||
STR_DEBUG_NO_BREAKDOWNS_AVAILABLE = 5289,
|
||||
STR_DEBUG_FIX_RIDE = 5290,
|
||||
|
||||
STR_CHEAT_TIP_CLEAR_LOAN = 5301,
|
||||
STR_CHEAT_CLEAR_LOAN = 5302,
|
||||
STR_CHEAT_BUILD_IN_PAUSE_MODE = 5303,
|
||||
|
@ -2130,6 +2133,8 @@ enum {
|
|||
|
||||
STR_ENABLE_MOUNTAIN_TOOL_TIP = 5554,
|
||||
|
||||
STR_CHEAT_SHOW_VEHICLES_FROM_OTHER_TRACK_TYPES = 5555,
|
||||
|
||||
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
|
||||
STR_COUNT = 32768
|
||||
};
|
||||
|
|
|
@ -118,7 +118,8 @@ enum WINDOW_CHEATS_WIDGET_IDX {
|
|||
WIDX_DISABLE_ALL_BREAKDOWNS,
|
||||
WIDX_BUILD_IN_PAUSE_MODE,
|
||||
WIDX_RESET_CRASH_STATUS,
|
||||
WIDX_SHOW_ALL_OPERATING_MODES
|
||||
WIDX_SHOW_ALL_OPERATING_MODES,
|
||||
WIDX_SHOW_VEHICLES_FROM_OTHER_TRACK_TYPES
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -259,6 +260,7 @@ static rct_widget window_cheats_rides_widgets[] = {
|
|||
{ WWT_CHECKBOX, 2, XPL(0), OWPL, YPL(8), OHPL(8), STR_CHEAT_BUILD_IN_PAUSE_MODE, STR_NONE }, // Build in pause mode
|
||||
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(2), HPL(2), STR_CHEAT_RESET_CRASH_STATUS, STR_NONE }, // Reset crash status
|
||||
{ WWT_CHECKBOX, 2, XPL(0), OWPL, YPL(7), OHPL(7), STR_CHEAT_SHOW_ALL_OPERATING_MODES, STR_NONE }, // Show all operating modes
|
||||
{ WWT_CHECKBOX, 2, XPL(0), OWPL, YPL(6), OHPL(6), STR_CHEAT_SHOW_VEHICLES_FROM_OTHER_TRACK_TYPES, STR_NONE }, // Show vehicles from other track types
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
|
@ -414,7 +416,7 @@ 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_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_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_SHOW_ALL_OPERATING_MODES)
|
||||
(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_SHOW_ALL_OPERATING_MODES) | (1ULL << WIDX_SHOW_VEHICLES_FROM_OTHER_TRACK_TYPES)
|
||||
};
|
||||
|
||||
static rct_string_id window_cheats_page_titles[] = {
|
||||
|
@ -1011,6 +1013,9 @@ static void window_cheats_rides_mouseup(rct_window *w, int widgetIndex)
|
|||
case WIDX_SHOW_ALL_OPERATING_MODES:
|
||||
gCheatsShowAllOperatingModes = !gCheatsShowAllOperatingModes;
|
||||
break;
|
||||
case WIDX_SHOW_VEHICLES_FROM_OTHER_TRACK_TYPES:
|
||||
gCheatsShowVehiclesFromOtherTrackTypes = !gCheatsShowVehiclesFromOtherTrackTypes;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1075,6 +1080,7 @@ static void window_cheats_invalidate(rct_window *w)
|
|||
widget_set_checkbox_value(w, WIDX_DISABLE_ALL_BREAKDOWNS, gConfigCheat.disable_all_breakdowns);
|
||||
widget_set_checkbox_value(w, WIDX_BUILD_IN_PAUSE_MODE, gConfigCheat.build_in_pause_mode);
|
||||
widget_set_checkbox_value(w, WIDX_SHOW_ALL_OPERATING_MODES, gCheatsShowAllOperatingModes);
|
||||
widget_set_checkbox_value(w, WIDX_SHOW_VEHICLES_FROM_OTHER_TRACK_TYPES, gCheatsShowVehiclesFromOtherTrackTypes);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -48,4 +48,4 @@ int dropdown_index_from_point(int x, int y, rct_window* w);
|
|||
void window_dropdown_show_colour(rct_window *w, rct_widget *widget, uint8 dropdownColour, uint8 selectedColour);
|
||||
void window_dropdown_show_colour_available(rct_window *w, rct_widget *widget, uint8 dropdownColour, uint8 selectedColour, uint32 availableColours);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
#include "../addresses.h"
|
||||
#include "../audio/audio.h"
|
||||
#include "../cheats.h"
|
||||
#include "../config.h"
|
||||
#include "../game.h"
|
||||
#include "../input.h"
|
||||
|
@ -2312,39 +2313,60 @@ static void window_ride_vehicle_mousedown(int widgetIndex, rct_window *w, rct_wi
|
|||
rct_ride *ride;
|
||||
rct_ride_type *rideEntry, *currentRideEntry;
|
||||
rct_string_id stringId;
|
||||
int i, minCars, maxCars, cars, numItems, quadIndex, bitIndex, rideEntryIndex, selectedIndex;
|
||||
int i, minCars, maxCars, cars, numItems, quadIndex, bitIndex, rideEntryIndex, selectedIndex, rideTypeIterator, rideTypeIteratorMax;
|
||||
uint8 *rideEntryIndexPtr, *currentRideEntryIndex;
|
||||
bool selectionShouldBeExpanded;
|
||||
|
||||
ride = GET_RIDE(w->number);
|
||||
rideEntry = ride_get_entry(ride);
|
||||
|
||||
if(gCheatsShowVehiclesFromOtherTrackTypes && !(ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_FLAT_RIDE) || ride->type==RIDE_TYPE_MAZE || ride->type==RIDE_TYPE_MINI_GOLF)) {
|
||||
selectionShouldBeExpanded=true;
|
||||
rideTypeIterator=0;
|
||||
rideTypeIteratorMax=90;
|
||||
}
|
||||
else {
|
||||
selectionShouldBeExpanded=false;
|
||||
rideTypeIterator=ride->type;
|
||||
rideTypeIteratorMax=ride->type;
|
||||
}
|
||||
|
||||
switch (widgetIndex) {
|
||||
case WIDX_VEHICLE_TYPE_DROPDOWN:
|
||||
rideEntryIndexPtr = get_ride_entry_indices_for_ride_type(ride->type);
|
||||
currentRideEntryIndex;
|
||||
|
||||
selectedIndex = -1;
|
||||
numItems = 0;
|
||||
for (currentRideEntryIndex = rideEntryIndexPtr; *currentRideEntryIndex != 0xFF; currentRideEntryIndex++) {
|
||||
rideEntryIndex = *currentRideEntryIndex;
|
||||
currentRideEntry = GET_RIDE_ENTRY(rideEntryIndex);
|
||||
// Skip if vehicle has the same track type, but not same subtype, unless subtype switching is enabled
|
||||
if ((currentRideEntry->flags & (RIDE_ENTRY_FLAG_SEPARATE_RIDE | RIDE_ENTRY_FLAG_SEPARATE_RIDE_NAME)) && !gConfigInterface.select_by_track_type)
|
||||
|
||||
for (; rideTypeIterator<=rideTypeIteratorMax; rideTypeIterator++) {
|
||||
|
||||
if(selectionShouldBeExpanded && ride_type_has_flag(rideTypeIterator, RIDE_TYPE_FLAG_FLAT_RIDE))
|
||||
continue;
|
||||
if(selectionShouldBeExpanded && (rideTypeIterator==RIDE_TYPE_MAZE || rideTypeIterator==RIDE_TYPE_MINI_GOLF))
|
||||
continue;
|
||||
|
||||
quadIndex = rideEntryIndex >> 5;
|
||||
bitIndex = rideEntryIndex & 0x1F;
|
||||
// Skip if vehicle type is not invented yet
|
||||
if (!(RCT2_ADDRESS(0x01357424, uint32)[quadIndex] & (1 << bitIndex)))
|
||||
continue;
|
||||
rideEntryIndexPtr = get_ride_entry_indices_for_ride_type(rideTypeIterator);
|
||||
currentRideEntryIndex;
|
||||
|
||||
if (ride->subtype == rideEntryIndex)
|
||||
selectedIndex = numItems;
|
||||
for (currentRideEntryIndex = rideEntryIndexPtr; *currentRideEntryIndex != 0xFF; currentRideEntryIndex++) {
|
||||
rideEntryIndex = *currentRideEntryIndex;
|
||||
currentRideEntry = GET_RIDE_ENTRY(rideEntryIndex);
|
||||
// Skip if vehicle has the same track type, but not same subtype, unless subtype switching is enabled
|
||||
if ((currentRideEntry->flags & (RIDE_ENTRY_FLAG_SEPARATE_RIDE | RIDE_ENTRY_FLAG_SEPARATE_RIDE_NAME)) && !(gConfigInterface.select_by_track_type || selectionShouldBeExpanded))
|
||||
continue;
|
||||
|
||||
gDropdownItemsFormat[numItems] = 1142;
|
||||
gDropdownItemsArgs[numItems] = (rideEntryIndex << 16) | currentRideEntry->name;
|
||||
quadIndex = rideEntryIndex >> 5;
|
||||
bitIndex = rideEntryIndex & 0x1F;
|
||||
// Skip if vehicle type is not invented yet
|
||||
if (!(RCT2_ADDRESS(0x01357424, uint32)[quadIndex] & (1 << bitIndex)))
|
||||
continue;
|
||||
|
||||
numItems++;
|
||||
if (ride->subtype == rideEntryIndex)
|
||||
selectedIndex = numItems;
|
||||
|
||||
gDropdownItemsFormat[numItems] = 1142;
|
||||
gDropdownItemsArgs[numItems] = (rideEntryIndex << 16) | currentRideEntry->name;
|
||||
|
||||
numItems++;
|
||||
}
|
||||
}
|
||||
|
||||
window_dropdown_show_text_custom_width(
|
||||
|
@ -3353,7 +3375,7 @@ static void window_ride_maintenance_mousedown(int widgetIndex, rct_window *w, rc
|
|||
break;
|
||||
}
|
||||
gDropdownItemsFormat[0] = 1142;
|
||||
gDropdownItemsArgs[0] = 5290;
|
||||
gDropdownItemsArgs[0] = STR_DEBUG_FIX_RIDE;
|
||||
for (i = 0; i < 8; i++) {
|
||||
if (RideAvailableBreakdowns[ride_type->ride_type[j]] & (uint8)(1 << i)) {
|
||||
if (i == BREAKDOWN_BRAKES_FAILURE && (ride->mode == RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED || ride->mode == RIDE_MODE_POWERED_LAUNCH_BLOCK_SECTIONED)) {
|
||||
|
@ -3366,7 +3388,7 @@ static void window_ride_maintenance_mousedown(int widgetIndex, rct_window *w, rc
|
|||
}
|
||||
}
|
||||
if (num_items == 1) {
|
||||
window_error_open(5289, STR_NONE);
|
||||
window_error_open(STR_DEBUG_NO_BREAKDOWNS_AVAILABLE, STR_NONE);
|
||||
}
|
||||
else {
|
||||
window_dropdown_show_text(
|
||||
|
|
Loading…
Reference in New Issue