mirror of https://github.com/OpenRCT2/OpenRCT2.git
Add cheat option to show all operating modes; cleanup
This commit is contained in:
parent
338855ba50
commit
4909272a44
|
@ -3886,6 +3886,7 @@ STR_5544 :{SMALLFONT}{BLACK}Bright red
|
|||
STR_5545 :{SMALLFONT}{BLACK}Dark pink
|
||||
STR_5546 :{SMALLFONT}{BLACK}Bright pink
|
||||
STR_5547 :{SMALLFONT}{BLACK}Light pink
|
||||
STR_5548 :Show all operating modes
|
||||
|
||||
#####################
|
||||
# Rides/attractions #
|
||||
|
|
|
@ -3,10 +3,12 @@
|
|||
bool gCheatsSandboxMode = false;
|
||||
bool gCheatsDisableClearanceChecks = false;
|
||||
bool gCheatsDisableSupportLimits = false;
|
||||
bool gCheatsShowAllOperatingModes = false;
|
||||
|
||||
void cheats_reset()
|
||||
{
|
||||
gCheatsSandboxMode = false;
|
||||
gCheatsDisableClearanceChecks = false;
|
||||
gCheatsDisableSupportLimits = false;
|
||||
gCheatsShowAllOperatingModes = false;
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
extern bool gCheatsSandboxMode;
|
||||
extern bool gCheatsDisableClearanceChecks;
|
||||
extern bool gCheatsDisableSupportLimits;
|
||||
extern bool gCheatsShowAllOperatingModes;
|
||||
|
||||
void cheats_reset();
|
||||
|
||||
|
|
|
@ -2104,6 +2104,7 @@ enum {
|
|||
STR_CHEAT_DISABLE_VANDALISM_TIP = 5515,
|
||||
|
||||
STR_COLOUR_NAMES_START = 5516,
|
||||
STR_SHOW_ALL_OPERATING_MODES = 5548,
|
||||
|
||||
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
|
||||
STR_COUNT = 32768
|
||||
|
|
|
@ -3681,11 +3681,8 @@ void game_command_set_ride_setting(int *eax, int *ebx, int *ecx, int *edx, int *
|
|||
ride_remove_peeps(ride_id);
|
||||
|
||||
rct_ride_type* ride_entry = GET_RIDE_ENTRY(ride->subtype);
|
||||
const uint8* available_modes = RideAvailableModes;
|
||||
const uint8* available_modes = ride_seek_available_modes(ride);
|
||||
|
||||
for (int i = 0; i < ride->type; i++) {
|
||||
while (*(available_modes++) != 255) {}
|
||||
}
|
||||
if (ride_entry->flags & RIDE_ENTRY_FLAG_17){
|
||||
available_modes += 2;
|
||||
}
|
||||
|
@ -7043,3 +7040,22 @@ void ride_reset_all_names()
|
|||
ride->name_arguments_number = name_args.number;
|
||||
}
|
||||
}
|
||||
|
||||
const uint8* ride_seek_available_modes(rct_ride *ride)
|
||||
{
|
||||
const uint8* availableModes;
|
||||
|
||||
if(!gCheatsShowAllOperatingModes) {
|
||||
availableModes = RideAvailableModes;
|
||||
|
||||
for (int i = 0; i < ride->type; i++) {
|
||||
while (*(availableModes++) != 255) { }
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
availableModes = AllRideModesAvailable;
|
||||
}
|
||||
|
||||
return availableModes;
|
||||
}
|
||||
|
|
|
@ -1042,5 +1042,6 @@ void sub_6C94D8();
|
|||
|
||||
bool shop_item_is_food_or_drink(int shopItem);
|
||||
void ride_reset_all_names();
|
||||
const uint8* ride_seek_available_modes(rct_ride *ride);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -774,6 +774,10 @@ const uint8 RideAvailableModes[] = {
|
|||
RIDE_MODE_POWERED_LAUNCH_PASSTROUGH, RIDE_MODE_POWERED_LAUNCH, RIDE_MODE_POWERED_LAUNCH_BLOCK_SECTIONED, 0xFF // 60 LIM Launched Roller Coaster
|
||||
};
|
||||
|
||||
const uint8 AllRideModesAvailable[] = {
|
||||
RIDE_MODE_NORMAL, RIDE_MODE_CONTINUOUS_CIRCUIT, RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE, RIDE_MODE_POWERED_LAUNCH_PASSTROUGH, RIDE_MODE_SHUTTLE, RIDE_MODE_BOAT_HIRE, RIDE_MODE_UPWARD_LAUNCH, RIDE_MODE_ROTATING_LIFT, RIDE_MODE_STATION_TO_STATION, RIDE_MODE_SINGLE_RIDE_PER_ADMISSION, RIDE_MODE_UNLIMITED_RIDES_PER_ADMISSION, RIDE_MODE_MAZE, RIDE_MODE_RACE, RIDE_MODE_BUMPERCAR, RIDE_MODE_SWING, RIDE_MODE_SHOP_STALL, RIDE_MODE_ROTATION, RIDE_MODE_FORWARD_ROTATION, RIDE_MODE_BACKWARD_ROTATION, RIDE_MODE_FILM_AVENGING_AVIATORS, RIDE_MODE_3D_FILM_MOUSE_TAILS, RIDE_MODE_SPACE_RINGS, RIDE_MODE_BEGINNERS, RIDE_MODE_LIM_POWERED_LAUNCH, RIDE_MODE_FILM_THRILL_RIDERS, RIDE_MODE_3D_FILM_STORM_CHASERS, RIDE_MODE_3D_FILM_SPACE_RAIDERS, RIDE_MODE_INTENSE, RIDE_MODE_BERSERK, RIDE_MODE_HAUNTED_HOUSE, RIDE_MODE_CIRCUS_SHOW, RIDE_MODE_DOWNWARD_LAUNCH, RIDE_MODE_CROOKED_HOUSE, RIDE_MODE_FREEFALL_DROP, RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED, RIDE_MODE_POWERED_LAUNCH, RIDE_MODE_POWERED_LAUNCH_BLOCK_SECTIONED, 0xFF
|
||||
};
|
||||
|
||||
const uint8 RideAvailableBreakdowns[] = {
|
||||
(1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE), // 00 Spiral Roller coaster
|
||||
(1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE), // 01 Stand Up Coaster
|
||||
|
|
|
@ -83,6 +83,7 @@ extern const uint8 rideUnknownData3[0x60];
|
|||
|
||||
extern const rct_ride_name_convention RideNameConvention[96];
|
||||
extern const uint8 RideAvailableModes[];
|
||||
extern const uint8 AllRideModesAvailable[];
|
||||
extern const uint8 RideAvailableBreakdowns[];
|
||||
|
||||
extern const rct_ride_entrance_definition RideEntranceDefinitions[RIDE_ENTRANCE_STYLE_COUNT];
|
||||
|
|
|
@ -2762,10 +2762,7 @@ static void window_ride_mode_dropdown(rct_window *w, rct_widget *widget)
|
|||
rideEntry = ride_get_entry(ride);
|
||||
|
||||
// Seek to available modes for this ride
|
||||
availableModes = RideAvailableModes;
|
||||
for (i = 0; i < ride->type; i++) {
|
||||
while (*(availableModes++) != 255) { }
|
||||
}
|
||||
availableModes = ride_seek_available_modes(ride);
|
||||
|
||||
// Count number of available modes
|
||||
mode = availableModes;
|
||||
|
@ -2950,7 +2947,6 @@ static void window_ride_operating_dropdown(rct_window *w, int widgetIndex, int d
|
|||
{
|
||||
rct_ride *ride;
|
||||
const uint8 *availableModes;
|
||||
int i;
|
||||
|
||||
if (dropdownIndex == -1)
|
||||
return;
|
||||
|
@ -2960,10 +2956,8 @@ static void window_ride_operating_dropdown(rct_window *w, int widgetIndex, int d
|
|||
switch (widgetIndex) {
|
||||
case WIDX_MODE_DROPDOWN:
|
||||
// Seek to available modes for this ride
|
||||
availableModes = RideAvailableModes;
|
||||
for (i = 0; i < ride->type; i++) {
|
||||
while (*(availableModes++) != 255) { }
|
||||
}
|
||||
availableModes = ride_seek_available_modes(ride);
|
||||
|
||||
set_operating_setting(w->number, 0, availableModes[dropdownIndex]);
|
||||
break;
|
||||
case WIDX_LOAD_DROPDOWN:
|
||||
|
|
|
@ -116,7 +116,8 @@ enum {
|
|||
DDIDX_CHEATS,
|
||||
DDIDX_ENABLE_SANDBOX_MODE = 2,
|
||||
DDIDX_DISABLE_CLEARANCE_CHECKS,
|
||||
DDIDX_DISABLE_SUPPORT_LIMITS
|
||||
DDIDX_DISABLE_SUPPORT_LIMITS,
|
||||
DDIDX_SHOW_ALL_OPERATING_MODES
|
||||
};
|
||||
|
||||
#pragma region Toolbar_widget_ordering
|
||||
|
@ -421,17 +422,19 @@ static void window_top_toolbar_mousedown(int widgetIndex, rct_window*w, rct_widg
|
|||
gDropdownItemsFormat[2] = 1156;
|
||||
gDropdownItemsFormat[3] = 1156;
|
||||
gDropdownItemsFormat[4] = 1156;
|
||||
gDropdownItemsFormat[5] = 1156;
|
||||
gDropdownItemsArgs[0] = 5217;
|
||||
gDropdownItemsArgs[2] = STR_ENABLE_SANDBOX_MODE;
|
||||
gDropdownItemsArgs[3] = STR_DISABLE_CLEARANCE_CHECKS;
|
||||
gDropdownItemsArgs[4] = STR_DISABLE_SUPPORT_LIMITS;
|
||||
gDropdownItemsArgs[5] = STR_SHOW_ALL_OPERATING_MODES;
|
||||
window_dropdown_show_text(
|
||||
w->x + widget->left,
|
||||
w->y + widget->top,
|
||||
widget->bottom - widget->top + 1,
|
||||
w->colours[0] | 0x80,
|
||||
0,
|
||||
5
|
||||
6
|
||||
);
|
||||
if (gCheatsSandboxMode)
|
||||
gDropdownItemsChecked |= (1 << DDIDX_ENABLE_SANDBOX_MODE);
|
||||
|
@ -439,6 +442,8 @@ static void window_top_toolbar_mousedown(int widgetIndex, rct_window*w, rct_widg
|
|||
gDropdownItemsChecked |= (1 << DDIDX_DISABLE_CLEARANCE_CHECKS);
|
||||
if (gCheatsDisableSupportLimits)
|
||||
gDropdownItemsChecked |= (1 << DDIDX_DISABLE_SUPPORT_LIMITS);
|
||||
if (gCheatsShowAllOperatingModes)
|
||||
gDropdownItemsChecked |= (1 << DDIDX_SHOW_ALL_OPERATING_MODES);
|
||||
RCT2_GLOBAL(0x009DEBA2, uint16) = 0;
|
||||
break;
|
||||
case WIDX_VIEW_MENU:
|
||||
|
@ -556,6 +561,8 @@ static void window_top_toolbar_dropdown(rct_window *w, int widgetIndex, int drop
|
|||
case DDIDX_DISABLE_SUPPORT_LIMITS:
|
||||
gCheatsDisableSupportLimits = !gCheatsDisableSupportLimits;
|
||||
break;
|
||||
case DDIDX_SHOW_ALL_OPERATING_MODES:
|
||||
gCheatsShowAllOperatingModes = !gCheatsShowAllOperatingModes;
|
||||
}
|
||||
break;
|
||||
case WIDX_VIEW_MENU:
|
||||
|
@ -739,12 +746,6 @@ static void window_top_toolbar_invalidate(rct_window *w)
|
|||
else
|
||||
w->pressed_widgets |= (1 << WIDX_PATH);
|
||||
|
||||
// Fast forward button pressed down
|
||||
// if (0)
|
||||
// w->pressed_widgets |= (1 << WIDX_FASTFORWARD);
|
||||
// else
|
||||
// w->pressed_widgets &= ~(1 << WIDX_FASTFORWARD);
|
||||
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint32) & 1))
|
||||
w->pressed_widgets &= ~(1 << WIDX_PAUSE);
|
||||
else
|
||||
|
@ -797,9 +798,6 @@ static void window_top_toolbar_paint(rct_window *w, rct_drawpixelinfo *dpi)
|
|||
for (int i = 0; i < 3 && i < gGameSpeed - 4 && gGameSpeed >= 5; i++) {
|
||||
gfx_draw_sprite(dpi, SPR_G2_HYPER_ARROW, x + 5 + i * 6, y + 15, 0);
|
||||
}
|
||||
/*if (gGameSpeed >= 8) {
|
||||
gfx_draw_sprite(dpi, SPR_G2_HYPER_ARROWS, x + 5, y + 15, 0);
|
||||
}*/
|
||||
}
|
||||
|
||||
// Draw cheats button
|
||||
|
|
Loading…
Reference in New Issue