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:
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
);
|
||||
|
||||
|
||||
@@ -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])) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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];
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user