/** * * rct2: 0x0069DEFB */ void finance_init() { for (short i = 0; i < 56; i++) { RCT2_ADDRESS(RCT2_ADDRESS_EXPENDITURE_TABLE, money32)[i] = 0; } RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_EXPENDITURE, uint32) = 0; RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_PROFIT, money32) = 0; RCT2_GLOBAL(0x01358334, money32) = 0; RCT2_GLOBAL(0x01358338, uint16) = 0; RCT2_GLOBAL(0x013573DC, money32) = MONEY(10000,00); // Cheat detection RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, sint32) = ENCRYPT_MONEY(MONEY(10000,00)); RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = MONEY(10000,00); RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = MONEY(20000,00); RCT2_GLOBAL(0x013587D0, uint32) = 0; RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, uint8) = 10; RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_PARK_VALUE, money32) = 0; RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_COMPANY_VALUE, money32) = 0; RCT2_GLOBAL(RCT2_ADDRESS_COMPLETED_COMPANY_VALUE, money32) = MONEY32_UNDEFINED; RCT2_GLOBAL(RCT2_ADDRESS_TOTAL_ADMISSIONS, uint32) = 0; RCT2_GLOBAL(RCT2_ADDRESS_INCOME_FROM_ADMISSIONS, uint32) = 0; RCT2_GLOBAL(0x013587D8, uint16) = 0x3F; sub_69E869(); }
/** * * rct2: 0x00671060 */ static void window_editor_scenario_options_park_dropdown(rct_window *w, int widgetIndex, int dropdownIndex) { if (widgetIndex == WIDX_PAY_FOR_PARK_OR_RIDES_DROPDOWN && dropdownIndex != -1) { if(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) { if (dropdownIndex == 0) { if (!(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_FREE_ENTRY)) { RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) |= PARK_FLAGS_PARK_FREE_ENTRY; RCT2_GLOBAL(RCT2_ADDRESS_PARK_ENTRANCE_FEE, money16) = MONEY(0, 00); } } else { if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_FREE_ENTRY) { RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) &= ~PARK_FLAGS_PARK_FREE_ENTRY; RCT2_GLOBAL(RCT2_ADDRESS_PARK_ENTRANCE_FEE, money16) = MONEY(10, 00); } } } else { if (dropdownIndex == 0) { if (!(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_FREE_ENTRY)) { RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) |= PARK_FLAGS_PARK_FREE_ENTRY; } } else { if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_FREE_ENTRY) { 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); } window_invalidate(w); } }
/** * * rct2: 0x00667132 */ void park_init() { int i; RCT2_GLOBAL(0x013CA740, uint8) = 0; RCT2_GLOBAL(0x013573D4, uint16) = 777; RCT2_GLOBAL(RCT2_ADDRESS_HANDYMAN_COLOUR, uint8) = 28; RCT2_GLOBAL(RCT2_ADDRESS_MECHANIC_COLOUR, uint8) = 28; RCT2_GLOBAL(RCT2_ADDRESS_SECURITY_COLOUR, uint8) = 28; RCT2_GLOBAL(RCT2_ADDRESS_GUESTS_IN_PARK, uint16) = 0; RCT2_GLOBAL(0x01357BC8, uint16) = 0; RCT2_GLOBAL(RCT2_ADDRESS_GUESTS_HEADING_FOR_PARK, uint16) = 0; RCT2_GLOBAL(0x013573FE, uint16) = 0; RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_PARK_RATING, uint16) = 0; _guestGenerationProbability = 0; RCT2_GLOBAL(RCT2_TOTAL_RIDE_VALUE, uint16) = 0; RCT2_GLOBAL(RCT2_ADDRESS_LAST_RESEARCHED_ITEM_SUBJECT, sint32) = -1; for (i = 0; i < 20; i++) RCT2_ADDRESS(0x01358102, uint8)[i] = 0; research_reset_items(); finance_init(); for (i = 0; i < 2; i++) RCT2_ADDRESS(0x01357404, uint32)[i] = 0; for (i = 0; i < 56; i++) RCT2_ADDRESS(0x01357BD0, sint32)[i] = -1; RCT2_GLOBAL(RCT2_ADDRESS_PARK_ENTRANCE_FEE, money16) = MONEY(10, 00); RCT2_GLOBAL(RCT2_ADDRESS_PEEP_SPAWNS, sint16) = -1; RCT2_GLOBAL(0x013573F8, sint16) = -1; RCT2_GLOBAL(RCT2_ADDRESS_ACTIVE_RESEARCH_TYPES, uint16) = 127; RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_RESEARCH_LEVEL, uint8) = 2; RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_CASH, uint16) = MONEY(50,00); // Cash per guest (average) RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HAPPINESS, uint8) = calculate_guest_initial_happiness(50); // 50% RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HUNGER, uint8) = 200; RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_THIRST, uint8) = 200; RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_TYPE, uint8) = 1; RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_YEAR, uint8) = 4; RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_NUM_GUESTS, uint16) = 1000; RCT2_GLOBAL(RCT2_ADDRESS_LAND_COST, uint16) = MONEY(90, 00); RCT2_GLOBAL(RCT2_ADDRESS_CONSTRUCTION_RIGHTS_COST, uint16) = MONEY(40,00); RCT2_GLOBAL(0x01358774, uint16) = 0; RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) = PARK_FLAGS_NO_MONEY | PARK_FLAGS_SHOW_REAL_GUEST_NAMES; park_reset_history(); finance_reset_history(); award_reset(); rct_s6_info *info = (rct_s6_info*)0x0141F570; info->name[0] = '\0'; format_string(info->details, STR_NO_DETAILS_YET, NULL); }
*****************************************************************************/ #include "../addresses.h" #include "../config.h" #include "../game.h" #include "../interface/window.h" #include "../localisation/localisation.h" #include "../management/finance.h" #include "../ride/ride.h" #include "../ride/ride_data.h" #include "../cheats.h" #include "marketing.h" #include "news_item.h" const money16 AdvertisingCampaignPricePerWeek[] = { MONEY(50,00), // PARK_ENTRY_FREE MONEY(50,00), // RIDE_FREE MONEY(50,00), // PARK_ENTRY_HALF_PRICE MONEY(50,00), // FOOD_OR_DRINK_FREE MONEY(350,00), // PARK MONEY(200,00) // RIDE }; static const int AdvertisingCampaignGuestGenerationProbabilities[] = { 400, 300, 200, 200, 250, 200 }; uint8 *gMarketingCampaignDaysLeft = RCT2_ADDRESS(0x01358102, uint8); uint8 *gMarketingCampaignRideIndex = RCT2_ADDRESS(0x01358116, uint8); int marketing_get_campaign_guest_generation_probability(int campaign) { int probability = AdvertisingCampaignGuestGenerationProbabilities[campaign];
/** * * rct2: 0x00667132 */ void park_init() { sint32 i; gUnk13CA740 = 0; gParkName = STR_UNNAMED_PARK; gStaffHandymanColour = COLOUR_BRIGHT_RED; gStaffMechanicColour = COLOUR_LIGHT_BLUE; gStaffSecurityColour = COLOUR_YELLOW; gNumGuestsInPark = 0; gNumGuestsInParkLastWeek = 0; gNumGuestsHeadingForPark = 0; gGuestChangeModifier = 0; gParkRating = 0; _guestGenerationProbability = 0; gTotalRideValueForMoney = 0; gResearchLastItem.rawValue = RESEARCHED_ITEMS_SEPARATOR; for (i = 0; i < 20; i++) gMarketingCampaignDaysLeft[i] = 0; research_reset_items(); finance_init(); set_every_ride_type_not_invented(); set_all_scenery_items_invented(); gParkEntranceFee = MONEY(10, 00); for (auto &peepSpawn : gPeepSpawns) { peepSpawn.x = PEEP_SPAWN_UNDEFINED; } gResearchPriorities = (1 << RESEARCH_CATEGORY_TRANSPORT) | (1 << RESEARCH_CATEGORY_GENTLE) | (1 << RESEARCH_CATEGORY_ROLLERCOASTER) | (1 << RESEARCH_CATEGORY_THRILL) | (1 << RESEARCH_CATEGORY_WATER) | (1 << RESEARCH_CATEGORY_SHOP) | (1 << RESEARCH_CATEGORY_SCENERY_GROUP); gResearchFundingLevel = RESEARCH_FUNDING_NORMAL; gGuestInitialCash = MONEY(50,00); // Cash per guest (average) gGuestInitialHappiness = calculate_guest_initial_happiness(50); // 50% gGuestInitialHunger = 200; gGuestInitialThirst = 200; gScenarioObjectiveType = OBJECTIVE_GUESTS_BY; gScenarioObjectiveYear = 4; gScenarioObjectiveNumGuests = 1000; gLandPrice = MONEY(90, 00); gConstructionRightsPrice = MONEY(40,00); gParkFlags = PARK_FLAGS_NO_MONEY | PARK_FLAGS_SHOW_REAL_GUEST_NAMES; park_reset_history(); finance_reset_history(); award_reset(); gS6Info.name[0] = '\0'; format_string(gS6Info.details, 256, STR_NO_DETAILS_YET, nullptr); }
* You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. *****************************************************************************/ #include "addresses.h" #include "finance.h" #include "sprite.h" #include "park.h" #include "peep.h" #include "ride.h" #include "window.h" // Monthly staff wages const money32 wage_table[4] = { MONEY(50,00), // Handyman MONEY(80,00), // Mechanic MONEY(60,00), // Security guard MONEY(55,00) // Entertainer }; // Monthly research funding costs const money32 research_cost_table[4] = { MONEY( 0,00), // No funding MONEY(100,00), // Minimum funding MONEY(200,00), // Normal funding MONEY(400,00) // Maximum funding }; /** * Pay an amount of money.
static int cc_set(const char **argv, int argc) { if (argc > 1) { bool int_valid = true, double_valid = true; int int_val = console_parse_int(argv[1], &int_valid); double double_val = console_parse_double(argv[1], &double_valid); if (strcmp(argv[0], "money") == 0 && double_valid) { RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, money32) = ENCRYPT_MONEY(MONEY((int)double_val, ((int)(double_val * 100)) % 100)); console_execute_silent("get money"); } else if (strcmp(argv[0], "current_loan") == 0 && int_valid) { RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = clamp(MONEY(int_val - (int_val % 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 && int_valid) { RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = clamp(MONEY(int_val - (int_val % 1000), 0), MONEY(0, 0), MONEY(5000000, 0)); console_execute_silent("get max_loan"); } else if (strcmp(argv[0], "guest_initial_cash") == 0 && double_valid) { RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_CASH, money16) = clamp(MONEY((int)double_val, ((int)(double_val * 100)) % 100), MONEY(0, 0), MONEY(15000, 0)); console_execute_silent("get guest_initial_cash"); } else if (strcmp(argv[0], "guest_initial_happiness") == 0 && int_valid) { RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HAPPINESS, uint8) = calculate_guest_initial_happiness((uint8)int_val); console_execute_silent("get guest_initial_happiness"); } else if (strcmp(argv[0], "guest_initial_hunger") == 0 && int_valid) { RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HUNGER, uint8) = (clamp(int_val, 1, 84) * 255 / 100 - 255) * -1; console_execute_silent("get guest_initial_hunger"); } else if (strcmp(argv[0], "guest_initial_thirst") == 0 && int_valid) { RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_THIRST, uint8) = (clamp(int_val, 1, 84) * 255 / 100 - 255) * -1; console_execute_silent("get guest_initial_thirst"); } else if (strcmp(argv[0], "guest_prefer_less_intense_rides") == 0 && int_valid) { SET_FLAG(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32), PARK_FLAGS_PREF_LESS_INTENSE_RIDES, int_val); console_execute_silent("get guest_prefer_less_intense_rides"); } else if (strcmp(argv[0], "guest_prefer_more_intense_rides") == 0 && int_valid) { SET_FLAG(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32), PARK_FLAGS_PREF_MORE_INTENSE_RIDES, int_val); console_execute_silent("get guest_prefer_more_intense_rides"); } else if (strcmp(argv[0], "forbid_marketing_campagns") == 0 && int_valid) { SET_FLAG(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32), PARK_FLAGS_FORBID_MARKETING_CAMPAIGN, int_val); console_execute_silent("get forbid_marketing_campagns"); } else if (strcmp(argv[0], "forbid_landscape_changes") == 0 && int_valid) { SET_FLAG(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32), PARK_FLAGS_FORBID_LANDSCAPE_CHANGES, int_val); console_execute_silent("get forbid_landscape_changes"); } else if (strcmp(argv[0], "forbid_tree_removal") == 0 && int_valid) { SET_FLAG(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32), PARK_FLAGS_FORBID_TREE_REMOVAL, int_val); console_execute_silent("get forbid_tree_removal"); } else if (strcmp(argv[0], "forbid_high_construction") == 0 && int_valid) { SET_FLAG(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32), PARK_FLAGS_FORBID_HIGH_CONSTRUCTION, int_val); console_execute_silent("get forbid_high_construction"); } else if (strcmp(argv[0], "pay_for_rides") == 0 && int_valid) { SET_FLAG(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32), PARK_FLAGS_PARK_FREE_ENTRY, int_val); console_execute_silent("get pay_for_rides"); } else if (strcmp(argv[0], "no_money") == 0 && int_valid) { SET_FLAG(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32), PARK_FLAGS_NO_MONEY, int_val); console_execute_silent("get no_money"); } else if (strcmp(argv[0], "difficult_park_rating") == 0 && int_valid) { SET_FLAG(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32), PARK_FLAGS_DIFFICULT_PARK_RATING, int_val); console_execute_silent("get difficult_park_rating"); } else if (strcmp(argv[0], "difficult_guest_generation") == 0 && int_valid) { SET_FLAG(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32), PARK_FLAGS_DIFFICULT_GUEST_GENERATION, int_val); console_execute_silent("get difficult_guest_generation"); } else if (strcmp(argv[0], "park_open") == 0 && int_valid) { SET_FLAG(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32), PARK_FLAGS_PARK_OPEN, int_val); console_execute_silent("get park_open"); } else if (strcmp(argv[0], "land_rights_cost") == 0 && double_valid) { RCT2_GLOBAL(RCT2_ADDRESS_LAND_COST, money16) = clamp(MONEY((int)double_val, ((int)(double_val * 100)) % 100), MONEY(0, 0), MONEY(15000, 0)); console_execute_silent("get land_rights_cost"); } else if (strcmp(argv[0], "construction_rights_cost") == 0 && double_valid) { RCT2_GLOBAL(RCT2_ADDRESS_CONSTRUCTION_RIGHTS_COST, money16) = clamp(MONEY((int)double_val, ((int)(double_val * 100)) % 100), MONEY(0, 0), MONEY(15000, 0)); console_execute_silent("get construction_rights_cost"); } else if (strcmp(argv[0], "climate") == 0) { if (int_valid) { RCT2_GLOBAL(RCT2_ADDRESS_CLIMATE, sint8) = clamp(int_val, 0, 3); } else { char* climate_names[] = { "cool_and_wet", "warm", "hot_and_dry", "cold" }; for (int i = 0; i < 4; i++) { if (strcmp(argv[1], climate_names[i]) == 0) { RCT2_GLOBAL(RCT2_ADDRESS_CLIMATE, sint8) = i; break; } } } console_execute_silent("get climate"); } else if (strcmp(argv[0], "game_speed") == 0 && int_valid) { gGameSpeed = clamp(int_val, 1, 8); console_execute_silent("get game_speed"); } else if (strcmp(argv[0], "console_small_font") == 0 && int_valid) { gConfigInterface.console_small_font = (int_val != 0); config_save_default(); console_execute_silent("get console_small_font"); } else if (strcmp(argv[0], "test_unfinished_tracks") == 0 && int_valid) { gConfigGeneral.test_unfinished_tracks = (int_val != 0); config_save_default(); console_execute_silent("get test_unfinished_tracks"); } else if (strcmp(argv[0], "no_test_crashes") == 0 && int_valid) { gConfigGeneral.no_test_crashes = (int_val != 0); config_save_default(); console_execute_silent("get no_test_crashes"); } else { console_writeline_error("Invalid variable or value."); } gfx_invalidate_screen(); } return 0; }
/** * * rct2: 0x00671019 */ static void window_editor_scenario_options_park_mousedown(int widgetIndex, rct_window *w, rct_widget *widget) { rct_widget *dropdownWidget; switch (widgetIndex) { case WIDX_LAND_COST_INCREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_LAND_COST, money16) < MONEY(200,00)) { RCT2_GLOBAL(RCT2_ADDRESS_LAND_COST, money16) += MONEY(1,00); } else { window_error_open(3264, STR_NONE); } window_invalidate(w); break; case WIDX_LAND_COST_DECREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_LAND_COST, money16) > MONEY(5,00)) { RCT2_GLOBAL(RCT2_ADDRESS_LAND_COST, money16) -= MONEY(1,00); } else { window_error_open(3265, STR_NONE); } window_invalidate(w); break; case WIDX_CONSTRUCTION_RIGHTS_COST_INCREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_CONSTRUCTION_RIGHTS_COST, money16) < MONEY(200,00)) { RCT2_GLOBAL(RCT2_ADDRESS_CONSTRUCTION_RIGHTS_COST, money16) += MONEY(1,00); } else { window_error_open(3264, STR_NONE); } window_invalidate(w); break; case WIDX_CONSTRUCTION_RIGHTS_COST_DECREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_CONSTRUCTION_RIGHTS_COST, money16) > MONEY(5,00)) { RCT2_GLOBAL(RCT2_ADDRESS_CONSTRUCTION_RIGHTS_COST, money16) -= MONEY(1,00); } else { window_error_open(3265, STR_NONE); } window_invalidate(w); break; case WIDX_ENTRY_PRICE_INCREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_ENTRANCE_FEE, money16) < MONEY(100,00)) { RCT2_GLOBAL(RCT2_ADDRESS_PARK_ENTRANCE_FEE, money16) += MONEY(1,00); } else { window_error_open(3264, STR_NONE); } window_invalidate(w); break; case WIDX_ENTRY_PRICE_DECREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_ENTRANCE_FEE, money16) > MONEY(0,00)) { RCT2_GLOBAL(RCT2_ADDRESS_PARK_ENTRANCE_FEE, money16) -= MONEY(1,00); } else { window_error_open(3265, STR_NONE); } window_invalidate(w); break; case WIDX_PAY_FOR_PARK_OR_RIDES_DROPDOWN: dropdownWidget = widget - 1; gDropdownItemsFormat[0] = 1142; gDropdownItemsArgs[0] = 3279; gDropdownItemsFormat[1] = 1142; gDropdownItemsArgs[1] = 3280; window_dropdown_show_text_custom_width( w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top - 1, w->colours[1], DROPDOWN_FLAG_STAY_OPEN, 2, dropdownWidget->right - dropdownWidget->left - 3 ); dropdown_set_checked((RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_FREE_ENTRY ? 0 : 1), true); break; } }
/** * * rct2: 0x00670A89 */ static void window_editor_scenario_options_guests_mousedown(int widgetIndex, rct_window *w, rct_widget *widget) { switch (widgetIndex) { case WIDX_CASH_PER_GUEST_INCREASE: 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); } window_invalidate(w); break; case WIDX_CASH_PER_GUEST_DECREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_CASH, money16) > MONEY(0, 00)) { RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_CASH, money16) -= MONEY(1, 00); } else { window_error_open(3265, STR_NONE); } window_invalidate(w); break; case WIDX_GUEST_INITIAL_HAPPINESS_INCREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HAPPINESS, uint8) < 250) { RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HAPPINESS, uint8) += 4; } else { window_error_open(3264, STR_NONE); } window_invalidate(w); break; case WIDX_GUEST_INITIAL_HAPPINESS_DECREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HAPPINESS, uint8) > 40) { RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HAPPINESS, uint8) -= 4; } else { window_error_open(3265, STR_NONE); } window_invalidate(w); break; case WIDX_GUEST_INITIAL_HUNGER_INCREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HUNGER, uint8) > 40) { RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HUNGER, uint8) -= 4; } else { window_error_open(3264, STR_NONE); } window_invalidate(w); break; case WIDX_GUEST_INITIAL_HUNGER_DECREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HUNGER, uint8) < 250) { RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HUNGER, uint8) += 4; } else { window_error_open(3265, STR_NONE); } window_invalidate(w); break; case WIDX_GUEST_INITIAL_THIRST_INCREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_THIRST, uint8) > 40) { RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_THIRST, uint8) -= 4; } else { window_error_open(3264, STR_NONE); } window_invalidate(w); break; case WIDX_GUEST_INITIAL_THIRST_DECREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_THIRST, uint8) < 250) { RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_THIRST, uint8) += 4; } else { window_error_open(3265, STR_NONE); } window_invalidate(w); break; } }
/** * * rct2: 0x006704C8 */ static void window_editor_scenario_options_financial_mousedown(int widgetIndex, rct_window *w, rct_widget *widget) { switch (widgetIndex) { case WIDX_INITIAL_CASH_INCREASE: 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)); finance_update_loan_hash(); } else { window_error_open(3248, STR_NONE); } window_invalidate(w); break; case WIDX_INITIAL_CASH_DECREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) > MONEY(0,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)); finance_update_loan_hash(); } else { window_error_open(3249, STR_NONE); } 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)); finance_update_loan_hash(); } else { window_error_open(3250, STR_NONE); } 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)); finance_update_loan_hash(); } else { window_error_open(3251, STR_NONE); } window_invalidate(w); break; 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)); finance_update_loan_hash(); } else { window_error_open(3252, STR_NONE); } window_invalidate(w); break; 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)); finance_update_loan_hash(); } else { window_error_open(3253, STR_NONE); } window_invalidate(w); break; case WIDX_INTEREST_RATE_INCREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, money32) < 80) { if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, money32) < 0) { RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, money32) = 0; } else { RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, money32)++; } } else { window_error_open(3254, STR_NONE); } window_invalidate(w); break; case WIDX_INTEREST_RATE_DECREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, money32) > 0) { if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, money32) > 80) { RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, money32) = 80; } else { RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, money32)--; } } else { window_error_open(3255, STR_NONE); } 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); } }