1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 11:03:00 +01:00

add global macro: gBankLoan

This commit is contained in:
Ted John
2016-04-23 02:00:44 +01:00
parent 11a2ba0133
commit 3c52983178
10 changed files with 32 additions and 31 deletions

View File

@@ -211,7 +211,7 @@ static void cheat_increase_money(money32 amount)
static void cheat_clear_loan()
{
// First give money
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_INCREASEMONEY, RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), GAME_COMMAND_CHEAT, 0, 0);
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_INCREASEMONEY, gBankLoan, GAME_COMMAND_CHEAT, 0, 0);
// Then pay the loan
money32 newLoan;

View File

@@ -460,9 +460,9 @@ static void editor_clear_map_for_editing()
finance_reset_cash_to_initial();
finance_update_loan_hash();
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = clamp(
gBankLoan = clamp(
MONEY(0,00),
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32),
gBankLoan,
MONEY(5000000,00)
);

View File

@@ -474,7 +474,7 @@ static int cc_get(const utf8 **argv, int argc)
console_printf("money %d.%d0", DECRYPT_MONEY(gCashEncrypted) / 10, DECRYPT_MONEY(gCashEncrypted) % 10);
}
else if (strcmp(argv[0], "current_loan") == 0) {
console_printf("current_loan %d", RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) / 10);
console_printf("current_loan %d", gBankLoan / 10);
}
else if (strcmp(argv[0], "max_loan") == 0) {
console_printf("max_loan %d", RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) / 10);
@@ -606,7 +606,7 @@ static int cc_set(const utf8 **argv, int argc)
console_execute_silent("get money");
}
else if (strcmp(argv[0], "current_loan") == 0 && invalidArguments(&invalidArgs, int_valid[0])) {
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = clamp(MONEY(int_val[0] - (int_val[0] % 1000), 0), MONEY(0, 0), RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32));
gBankLoan = clamp(MONEY(int_val[0] - (int_val[0] % 1000), 0), MONEY(0, 0), RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32));
console_execute_silent("get current_loan");
}
else if (strcmp(argv[0], "max_loan") == 0 && invalidArguments(&invalidArgs, int_valid[0])) {

View File

@@ -109,7 +109,7 @@ void finance_pay_research()
*/
void finance_pay_interest()
{
money32 current_loan = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, sint32);
money32 current_loan = gBankLoan;
sint16 current_interest = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, sint16);
money32 tempcost = (current_loan * 5 * current_interest) >> 14; // (5 * interest) / 2^14 is pretty close to
@@ -178,7 +178,7 @@ void finance_init() {
RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) = MONEY(10000,00); // Cheat detection
gCashEncrypted = ENCRYPT_MONEY(MONEY(10000,00));
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = MONEY(10000,00);
gBankLoan = MONEY(10000,00);
RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = MONEY(20000,00);
RCT2_GLOBAL(0x013587D0, uint32) = 0;
@@ -222,7 +222,7 @@ void finance_update_daily_profit()
current_profit -= research_cost_table[level];
// Loan costs
money32 current_loan = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32);
money32 current_loan = gBankLoan;
current_profit -= current_loan / 600;
// Ride costs
@@ -253,7 +253,7 @@ void finance_update_loan_hash()
sint32 value = 0x70093A;
value -= RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32);
value = ror32(value, 5);
value -= RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32);
value -= gBankLoan;
value = ror32(value, 7);
value += RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32);
value = ror32(value, 3);
@@ -272,7 +272,7 @@ money32 finance_get_initial_cash()
money32 finance_get_current_loan()
{
return RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32);
return gBankLoan;
}
money32 finance_get_maximum_loan()
@@ -294,7 +294,7 @@ void game_command_set_current_loan(int* eax, int* ebx, int* ecx, int* edx, int*
money32 money, loanDifference, currentLoan;
money32 newLoan = *edx;
currentLoan = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32);
currentLoan = gBankLoan;
money = DECRYPT_MONEY(gCashEncrypted);
loanDifference = currentLoan - newLoan;
@@ -315,7 +315,7 @@ void game_command_set_current_loan(int* eax, int* ebx, int* ecx, int* edx, int*
if (*ebx & GAME_COMMAND_FLAG_APPLY) {
money -= loanDifference;
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = newLoan;
gBankLoan = newLoan;
RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) = money;
gCashEncrypted = ENCRYPT_MONEY(money);
finance_update_loan_hash();

View File

@@ -47,6 +47,7 @@ enum {
#define EXPENDITURE_TABLE_TOTAL_COUNT (EXPENDITURE_TABLE_MONTH_COUNT * RCT_EXPENDITURE_TYPE_COUNT)
#define gCashEncrypted RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, money32)
#define gBankLoan RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32)
extern const money32 research_cost_table[4];

View File

@@ -657,7 +657,7 @@ void S4Importer::ImportFinance()
gConstructionRightsPrice = _s4.construction_rights_price;
gCashEncrypted = ENCRYPT_MONEY(_s4.cash);
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = _s4.loan;
gBankLoan = _s4.loan;
RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = _s4.max_loan;
RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) = _s4.cash;

View File

@@ -280,7 +280,7 @@ void scenario_begin()
gParkRating = calculate_park_rating();
gParkValue = calculate_park_value();
gCompanyValue = calculate_company_value();
RCT2_GLOBAL(0x013587D0, money32) = RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32);
RCT2_GLOBAL(0x013587D0, money32) = RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) - gBankLoan;
gCashEncrypted = ENCRYPT_MONEY(RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, sint32));
finance_update_loan_hash();
@@ -1420,7 +1420,7 @@ static void scenario_objective_check_replay_loan_and_park_value()
{
money32 objectiveParkValue = RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_CURRENCY, money32);
money32 parkValue = gParkValue;
money32 currentLoan = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32);
money32 currentLoan = gBankLoan;
if (currentLoan <= 0 && parkValue >= objectiveParkValue)
scenario_success();

View File

@@ -502,9 +502,9 @@ static void window_editor_scenario_options_financial_mousedown(int widgetIndex,
window_invalidate(w);
break;
case WIDX_INITIAL_LOAN_INCREASE:
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) < MONEY(5000000,00)) {
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) += MONEY(1000,00);
RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = max(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32));
if (gBankLoan < MONEY(5000000,00)) {
gBankLoan += MONEY(1000,00);
RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = max(gBankLoan, RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32));
finance_update_loan_hash();
} else {
window_error_open(3250, STR_NONE);
@@ -512,9 +512,9 @@ static void window_editor_scenario_options_financial_mousedown(int widgetIndex,
window_invalidate(w);
break;
case WIDX_INITIAL_LOAN_DECREASE:
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) > MONEY(0,00)) {
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) -= MONEY(1000,00);
RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = max(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32));
if (gBankLoan > MONEY(0,00)) {
gBankLoan -= MONEY(1000,00);
RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = max(gBankLoan, RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32));
finance_update_loan_hash();
} else {
window_error_open(3251, STR_NONE);
@@ -524,7 +524,7 @@ static void window_editor_scenario_options_financial_mousedown(int widgetIndex,
case WIDX_MAXIMUM_LOAN_INCREASE:
if (RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) < MONEY(5000000,00)) {
RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) += MONEY(1000,00);
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = min(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32));
gBankLoan = min(gBankLoan, RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32));
finance_update_loan_hash();
} else {
window_error_open(3252, STR_NONE);
@@ -534,7 +534,7 @@ static void window_editor_scenario_options_financial_mousedown(int widgetIndex,
case WIDX_MAXIMUM_LOAN_DECREASE:
if (RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) > MONEY(0,00)) {
RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) -= MONEY(1000,00);
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = min(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32));
gBankLoan = min(gBankLoan, RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32));
finance_update_loan_hash();
} else {
window_error_open(3253, STR_NONE);
@@ -664,7 +664,7 @@ static void window_editor_scenario_options_financial_paint(rct_window *w, rct_dr
x = w->x + w->widgets[WIDX_INITIAL_LOAN].left + 1;
y = w->y + w->widgets[WIDX_INITIAL_LOAN].top;
gfx_draw_string_left(dpi, 3246, &RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), 0, x, y);
gfx_draw_string_left(dpi, 3246, &gBankLoan, 0, x, y);
}
if (w->widgets[WIDX_MAXIMUM_LOAN].type != WWT_EMPTY) {

View File

@@ -600,13 +600,13 @@ static void window_finances_summary_mousedown(int widgetIndex, rct_window*w, rct
switch (widgetIndex) {
case WIDX_LOAN_INCREASE:
newLoan = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) + MONEY(1000, 00);
newLoan = gBankLoan + MONEY(1000, 00);
gGameCommandErrorTitle = STR_CANT_BORROW_ANY_MORE_MONEY;
finance_set_loan(newLoan);
break;
case WIDX_LOAN_DECREASE:
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) > 0) {
newLoan = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) - MONEY(1000, 00);
if (gBankLoan > 0) {
newLoan = gBankLoan - MONEY(1000, 00);
gGameCommandErrorTitle = STR_CANT_PAY_BACK_LOAN;
finance_set_loan(newLoan);
}
@@ -640,7 +640,7 @@ static void window_finances_summary_invalidate(rct_window *w)
}
window_finances_set_pressed_tab(w);
RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 6, money32) = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32);
RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 6, money32) = gBankLoan;
}
/**
@@ -825,7 +825,7 @@ static void window_finances_financial_graph_paint(rct_window *w, rct_drawpixelin
// Cash (less loan)
money32 cashLessLoan =
DECRYPT_MONEY(gCashEncrypted) -
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32);
gBankLoan;
gfx_draw_string_left(
dpi,

View File

@@ -329,7 +329,7 @@ money32 calculate_company_value()
return
DECRYPT_MONEY(gCashEncrypted) +
gParkValue -
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32);
gBankLoan;
}
/**
@@ -612,7 +612,7 @@ void park_update_histories()
// Update current cash history
for (int i = 127; i > 0; i--)
gCashHistory[i] = gCashHistory[i - 1];
gCashHistory[0] = DECRYPT_MONEY(gCashEncrypted) - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32);
gCashHistory[0] = DECRYPT_MONEY(gCashEncrypted) - gBankLoan;
window_invalidate_by_class(WC_FINANCES);
// Update weekly profit history