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

Add cheat to edit park parameters/scenario options in-game

This commit is contained in:
Gymnasiast
2015-06-19 14:59:48 +02:00
parent ef3d7c2080
commit 0491d971f3
5 changed files with 41 additions and 33 deletions

View File

@@ -2684,8 +2684,8 @@ STR_2678 :???
STR_2679 :???
STR_2680 :All research complete
STR_2681 :{MEDIUMFONT}{BLACK}Increases your money by 5,000
STR_2682 :{MEDIUMFONT}{BLACK}Toggle between Free and Paid Entry
STR_2683 :{MEDIUMFONT}{BLACK}Increases every peeps happiness to max
STR_2682 :<not used anymore>
STR_2683 :<not used anymore>
STR_2684 :{SMALLFONT}{BLACK}Large group of peeps arrive
STR_2685 :Simplex Noise Parameters
STR_2686 :{WINDOW_COLOUR_2}Low:
@@ -2764,10 +2764,10 @@ STR_2757 :Force Sun
STR_2758 :Force Thunder
STR_2759 :Zero Clearance
STR_2760 :+5K Money
STR_2761 :Pay For Entrance
STR_2762 :Pay For Rides
STR_2761 :<not used anymore>
STR_2762 :<not used anymore>
STR_2763 :???
STR_2764 :Happy Guests
STR_2764 :<not used anymore>
STR_2765 :Large Tram
STR_2766 :Win scenario
STR_2767 :Freeze Climate
@@ -3587,8 +3587,8 @@ STR_5250 :Title Exit Button
STR_5251 :Title Options Button
STR_5252 :Title Scenario Selection
STR_5253 :Park Information
STR_5254 :Add nausea
STR_5255 :{MEDIUMFONT}{BLACK}All peeps become nauseous
STR_5254 :<not used anymore>
STR_5255 :<not used anymore>
STR_5256 :Create a new theme to make changes to
STR_5257 :{SMALLFONT}{BLACK}Create a new theme based on the current one
STR_5258 :{SMALLFONT}{BLACK}Delete the current theme
@@ -3702,3 +3702,5 @@ STR_5365 :{BLACK}Staff speed:
STR_5366 :Normal
STR_5367 :Fast
STR_5368 :Reset crash status
STR_5369 :Park parameters...
STR_5370 :{SMALLFONT}{BLACK}Click this button to modify park{NEWLINE}parameters like restrictions,{NEWLINE}guest generation and money.

View File

@@ -817,6 +817,8 @@ static int cc_open(const char **argv, int argc) {
window_editor_object_selection_open();
} else if (strcmp(argv[0], "inventions_list") == 0) {
window_editor_inventions_list_open();
} else if (strcmp(argv[0], "scenario_options") == 0) {
window_editor_scenario_options_open();
} else if (strcmp(argv[0], "options") == 0) {
window_options_open();
} else if (strcmp(argv[0], "themes") == 0) {
@@ -999,4 +1001,4 @@ void console_execute_silent(const char *src)
char output[] = { FORMAT_RED, "Unknown command. Type help to list available commands." };
console_writeline(output);
}
}
}

View File

@@ -999,14 +999,10 @@ enum {
// Money
STR_CHEAT_5K_MONEY = 2760,
STR_CHEAT_PAY_ENTRANCE = 2761,
STR_CHEAT_CLEAR_LOAN = 5302,
STR_CHEAT_PAY_RIDES = 2762,
// Guests
//STR_CHEAT_HAPPY_GUESTS = 2764,
STR_CHEAT_LARGE_TRAM_GUESTS = 2765,
//STR_CHEAT_NAUSEA = 5254,
STR_CHEAT_EXPLODE = 5285,
STR_CHEAT_REMOVE_ALL_GUESTS = 5359,
STR_CHEAT_GUEST_HAPPINESS = 5352,
@@ -1037,6 +1033,7 @@ enum {
STR_CHEAT_WIN_SCENARIO = 2766,
STR_CHEAT_UNLOCK_PRICES = 5157,
STR_CHEAT_BUILD_IN_PAUSE_MODE = 5303,
STR_CHEAT_PARK_PARAMETERS = 5369,
// Rides
STR_CHEAT_RENEW_RIDES = 5123,
@@ -1049,13 +1046,11 @@ enum {
// Cheat tips
STR_CHEAT_TIP_5K_MONEY = 2681,
STR_CHEAT_TIP_PAY_ENTRY = 2682,
STR_CHEAT_TIP_CLEAR_LOAN = 5301,
//STR_CHEAT_TIP_HAPPY_GUESTS = 2683,
STR_CHEAT_TIP_LARGE_TRAM_GUESTS = 2684,
//STR_CHEAT_TIP_NAUSEA = 5255,
STR_CHEAT_TIP_EXPLODE = 5286,
STR_CHEAT_TIP_REMOVE_ALL_GUESTS = 5360,
STR_CHEAT_TIP_PARK_PARAMETERS = 5370,
// Cheat tab tips
STR_FINANCIAL_CHEATS_TIP = 5178,

View File

@@ -57,7 +57,6 @@ enum WINDOW_CHEATS_WIDGET_IDX {
WIDX_TAB_3,
WIDX_TAB_4,
WIDX_HIGH_MONEY,
WIDX_PARK_ENTRANCE_FEE,
WIDX_CLEAR_LOAN,
WIDX_GUEST_HAPPINESS_MAX = 8, //Same as HIGH_MONEY as it is also the 8th widget but on a different page
WIDX_GUEST_HAPPINESS_MIN,
@@ -96,6 +95,7 @@ enum WINDOW_CHEATS_WIDGET_IDX {
WIDX_SANDBOX_MODE,
WIDX_FAST_STAFF,
WIDX_NORMAL_STAFF,
WIDX_PARK_PARAMETERS,
WIDX_RENEW_RIDES = 8,
WIDX_REMOVE_SIX_FLAGS,
WIDX_MAKE_DESTRUCTIBLE,
@@ -164,7 +164,6 @@ enum {
static rct_widget window_cheats_money_widgets[] = {
MAIN_CHEATS_WIDGETS,
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(1), HPL(1), STR_CHEAT_5K_MONEY, STR_NONE}, // high money
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(3), HPL(3), STR_CHEAT_PAY_ENTRANCE, STR_NONE}, // Park Entrance Fee Toggle
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(5), HPL(5), STR_CHEAT_CLEAR_LOAN, STR_NONE }, // Clear loan
{ WIDGETS_END },
};
@@ -214,6 +213,7 @@ static rct_widget window_cheats_misc_widgets[] = {
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(5), HPL(5), STR_CHEAT_SANDBOX_MODE, STR_CHEAT_SANDBOX_MODE_TIP}, // Sandbox mode (edit land ownership in-game)
{ WWT_CLOSEBOX, 1, MAX_BTN_LEFT, MAX_BTN_RIGHT, YPL(6), HPL(6), STR_FAST, STR_NONE }, // fast staff
{ WWT_CLOSEBOX, 1, MIN_BTN_LEFT, MIN_BTN_RIGHT, YPL(6), HPL(6), STR_NORMAL, STR_NONE }, // normal staff
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(7), HPL(7), STR_CHEAT_PARK_PARAMETERS, STR_CHEAT_TIP_PARK_PARAMETERS}, // Park parameters
{ WIDGETS_END },
};
static rct_widget window_cheats_rides_widgets[] = {
@@ -382,9 +382,9 @@ static void* window_cheats_page_events[] = {
};
static uint32 window_cheats_page_enabled_widgets[] = {
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_HIGH_MONEY) | (1 << WIDX_PARK_ENTRANCE_FEE) | (1 << WIDX_CLEAR_LOAN),
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_HIGH_MONEY) | (1 << WIDX_CLEAR_LOAN),
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_GUEST_HAPPINESS_MAX) | (1 << WIDX_GUEST_HAPPINESS_MIN) | (1 << WIDX_GUEST_ENERGY_MAX) | (1 << WIDX_GUEST_ENERGY_MIN) | (1 << WIDX_GUEST_HUNGER_MAX) | (1 << WIDX_GUEST_HUNGER_MIN) | (1 << WIDX_GUEST_THIRST_MAX) | (1 << WIDX_GUEST_THIRST_MIN) | (1 << WIDX_GUEST_NAUSEA_MAX) | (1 << WIDX_GUEST_NAUSEA_MIN) | (1 << WIDX_GUEST_NAUSEA_TOLERANCE_MAX) | (1 << WIDX_GUEST_NAUSEA_TOLERANCE_MIN) | (1 << WIDX_GUEST_BATHROOM_MAX) | (1 << WIDX_GUEST_BATHROOM_MIN) | (1 << WIDX_GUEST_RIDE_INTENSITY_MORE_THAN_1) | (1 << WIDX_GUEST_RIDE_INTENSITY_LESS_THAN_15) | (1 << WIDX_TRAM_GUESTS) | (1 << WIDX_REMOVE_ALL_GUESTS) | (1 << WIDX_EXPLODE_GUESTS) | (1 << WIDX_GIVE_GUESTS_PARK_MAPS) | (1 << WIDX_GIVE_GUESTS_BALLOONS) | (1 << WIDX_GIVE_GUESTS_UMBRELLAS),
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_FREEZE_CLIMATE) | (1 << WIDX_OPEN_CLOSE_PARK) | (1 << WIDX_ZERO_CLEARANCE) | (1 << WIDX_WEATHER_SUN) | (1 << WIDX_WEATHER_THUNDER) | (1 << WIDX_CLEAR_GRASS) | (1 << WIDX_MOWED_GRASS) | (1 << WIDX_WATER_PLANTS) | (1 << WIDX_FIX_VANDALISM) | (1 << WIDX_REMOVE_LITTER) | (1 << WIDX_WIN_SCENARIO) | (1 << WIDX_UNLOCK_ALL_PRICES) | (1 << WIDX_SANDBOX_MODE) | (1 << WIDX_FAST_STAFF) | (1 << WIDX_NORMAL_STAFF),
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_FREEZE_CLIMATE) | (1 << WIDX_OPEN_CLOSE_PARK) | (1 << WIDX_ZERO_CLEARANCE) | (1 << WIDX_WEATHER_SUN) | (1 << WIDX_WEATHER_THUNDER) | (1 << WIDX_CLEAR_GRASS) | (1 << WIDX_MOWED_GRASS) | (1 << WIDX_WATER_PLANTS) | (1 << WIDX_FIX_VANDALISM) | (1 << WIDX_REMOVE_LITTER) | (1 << WIDX_WIN_SCENARIO) | (1 << WIDX_UNLOCK_ALL_PRICES) | (1 << WIDX_SANDBOX_MODE) | (1 << WIDX_FAST_STAFF) | (1 << WIDX_NORMAL_STAFF) | (1 << WIDX_PARK_PARAMETERS),
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_RENEW_RIDES) | (1 << WIDX_REMOVE_SIX_FLAGS) | (1 << WIDX_MAKE_DESTRUCTIBLE) | (1 << WIDX_FIX_ALL) | (1 << WIDX_FAST_LIFT_HILL) | (1 << WIDX_DISABLE_BRAKES_FAILURE) | (1 << WIDX_DISABLE_ALL_BREAKDOWNS) | (1 << WIDX_BUILD_IN_PAUSE_MODE) | (1 << WIDX_RESET_CRASH_STATUS)
};
@@ -752,11 +752,6 @@ static void window_cheats_money_mouseup()
case WIDX_CLEAR_LOAN:
cheat_clear_loan();
break;
case WIDX_PARK_ENTRANCE_FEE:
RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) ^= PARK_FLAGS_PARK_FREE_ENTRY;
window_invalidate_by_class(WC_PARK_INFORMATION);
window_invalidate_by_class(WC_RIDE);
break;
}
}
@@ -920,6 +915,9 @@ static void window_cheats_misc_mouseup()
case WIDX_NORMAL_STAFF:
cheat_set_staff_speed(0x60);
break;
case WIDX_PARK_PARAMETERS:
window_editor_scenario_options_open();
break;
}
}
@@ -1001,10 +999,6 @@ static void window_cheats_invalidate()
w->pressed_widgets = 0;
switch (w->page) {
case WINDOW_CHEATS_PAGE_MONEY:
w->widgets[WIDX_PARK_ENTRANCE_FEE].image = RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_FREE_ENTRY ?
STR_CHEAT_PAY_ENTRANCE : STR_CHEAT_PAY_RIDES;
break;
case WINDOW_CHEATS_PAGE_MISC:
w->widgets[WIDX_OPEN_CLOSE_PARK].image = RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_OPEN ?
STR_CHEAT_CLOSE_PARK : STR_CHEAT_OPEN_PARK;
@@ -1040,7 +1034,6 @@ static void window_cheats_paint()
if (w->page == WINDOW_CHEATS_PAGE_MONEY){
gfx_draw_string_left(dpi, STR_CHEAT_TIP_5K_MONEY, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(0) + TXTO);
gfx_draw_string_left(dpi, STR_CHEAT_TIP_PAY_ENTRY, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(2) + TXTO);
gfx_draw_string_left(dpi, STR_CHEAT_TIP_CLEAR_LOAN, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(4) + TXTO);
}
else if(w->page == WINDOW_CHEATS_PAGE_MISC){

View File

@@ -451,7 +451,18 @@ static void window_editor_scenario_options_financial_mouseup()
window_editor_scenario_options_set_page(w, widgetIndex - WIDX_TAB_1);
break;
case WIDX_NO_MONEY:
RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) ^= PARK_FLAGS_NO_MONEY_SCENARIO;
if(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) {
RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) ^= PARK_FLAGS_NO_MONEY_SCENARIO;
}
else {
RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) ^= PARK_FLAGS_NO_MONEY;
// Invalidate all windows that have anything to do with finance
window_invalidate_by_class(WC_RIDE);
window_invalidate_by_class(WC_PEEP);
window_invalidate_by_class(WC_PARK_INFORMATION);
window_invalidate_by_class(WC_FINANCES);
window_invalidate_by_class(WC_BOTTOM_TOOLBAR);
}
window_invalidate(w);
break;
case WIDX_FORBID_MARKETING:
@@ -482,7 +493,7 @@ static void window_editor_scenario_options_financial_mousedown(int widgetIndex,
{
switch (widgetIndex) {
case WIDX_INITIAL_CASH_INCREASE:
if (RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) < MONEY(10000,00)) {
if (RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) < MONEY(1000000,00)) {
RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) += MONEY(500,00);
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, money32) = ENCRYPT_MONEY(RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32));
sub_69E869();
@@ -546,7 +557,7 @@ static void window_editor_scenario_options_financial_mousedown(int widgetIndex,
window_invalidate(w);
break;
case WIDX_INTEREST_RATE_DECREASE:
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, money32) > 5) {
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, money32) >= 0) {
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, money32)--;
} else {
window_error_open(3255, STR_NONE);
@@ -554,6 +565,11 @@ static void window_editor_scenario_options_financial_mousedown(int widgetIndex,
window_invalidate(w);
break;
}
if(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_PLAYING) {
window_invalidate_by_class(WC_FINANCES);
window_invalidate_by_class(WC_BOTTOM_TOOLBAR);
}
}
/**
@@ -732,7 +748,7 @@ static void window_editor_scenario_options_guests_mousedown(int widgetIndex, rct
{
switch (widgetIndex) {
case WIDX_CASH_PER_GUEST_INCREASE:
if (RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_CASH, money16) < MONEY(100, 00)) {
if (RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_CASH, money16) < MONEY(1000, 00)) {
RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_CASH, money16) += MONEY(1, 00);
} else {
window_error_open(3264, STR_NONE);