From 829e0712e44696abff26ce39124e032bde423060 Mon Sep 17 00:00:00 2001 From: Runelaenen Date: Wed, 10 Jun 2015 19:23:10 +0200 Subject: [PATCH] Fixed Clear Loan cheat The function already existed in the codebase. I've fixed it and added a button. --- data/language/english_uk.txt | 4 +++- src/localisation/string_ids.h | 2 ++ src/windows/cheats.c | 26 ++++++++++++++++++-------- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index 7f1a378747..e82082bf8c 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -3633,4 +3633,6 @@ STR_5296 :{SMALLFONT}{BLACK}Close park STR_5297 :{SMALLFONT}{BLACK}Open park STR_5298 :{RED}{STRINGID} STR_5299 :{LIGHTPINK}{STRINGID} -STR_5300 :{SMALLFONT}{BLACK}Quick fire staff \ No newline at end of file +STR_5300 :{SMALLFONT}{BLACK}Quick fire staff +STR_5301 :{MEDIUMFONT}{BLACK}Clear your loan +STR_5302 :Clear loan \ No newline at end of file diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index a0b460984b..7ff6d556e2 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -994,6 +994,7 @@ enum { // Money STR_CHEAT_5K_MONEY = 2760, STR_CHEAT_PAY_ENTRANCE = 2761, + STR_CHEAT_CLEAR_LOAN = 5302, STR_CHEAT_PAY_RIDES = 2762, // Guests @@ -1030,6 +1031,7 @@ 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, diff --git a/src/windows/cheats.c b/src/windows/cheats.c index 6254912de5..9e22b4c0e4 100644 --- a/src/windows/cheats.c +++ b/src/windows/cheats.c @@ -58,6 +58,7 @@ enum WINDOW_CHEATS_WIDGET_IDX { WIDX_TAB_4, WIDX_HIGH_MONEY, WIDX_PARK_ENTRANCE_FEE, + WIDX_CLEAR_LOAN, WIDX_HAPPY_GUESTS = 8, //Same as HIGH_MONEY as it is also the 8th widget but on a different page WIDX_TRAM_GUESTS, WIDX_NAUSEA_GUESTS, @@ -117,6 +118,7 @@ static rct_widget window_cheats_money_widgets[] = { { WWT_TAB, 1, 96, 126, 17, 43, 0x2000144E, STR_RIDE_CHEATS_TIP }, // tab 4 { 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 }, }; @@ -332,7 +334,7 @@ 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_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_HAPPY_GUESTS) | (1 << WIDX_TRAM_GUESTS) | (1 << WIDX_NAUSEA_GUESTS) | (1 << WIDX_EXPLODE_GUESTS), (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_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) @@ -473,13 +475,6 @@ static void cheat_make_destructible() window_invalidate_by_class(WC_RIDE); } -static void cheat_clear_loan() -{ - // TODO, this sets the loan but stops loan borrowing from working, possible due to cheat detection stuff - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = MONEY(0,00); - window_invalidate_by_class(WC_FINANCES); -} - static void cheat_increase_money(money32 amount) { money32 currentMoney; @@ -495,6 +490,17 @@ static void cheat_increase_money(money32 amount) window_invalidate_by_class(WC_BOTTOM_TOOLBAR); } +static void cheat_clear_loan() +{ + // First give money + cheat_increase_money(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32)); + + // Then pay the loan + money32 newLoan; + newLoan = MONEY(0, 00); + game_do_command(0, GAME_COMMAND_FLAG_APPLY, 0, newLoan, GAME_COMMAND_SET_CURRENT_LOAN, 0, 0); +} + static void cheat_generate_guests(int count) { int i; @@ -576,6 +582,9 @@ static void window_cheats_money_mouseup() case WIDX_HIGH_MONEY: cheat_increase_money(CHEATS_MONEY_INCREMENT); break; + 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); @@ -795,6 +804,7 @@ 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_GUESTS){ gfx_draw_string_left(dpi, STR_CHEAT_TIP_HAPPY_GUESTS, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(0) + TXTO);