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

Merge pull request #5254 from wolfreak99/sync_scenario_options

Sync scenario options
This commit is contained in:
Michael Steenbeek
2017-04-11 14:40:41 +02:00
committed by GitHub
12 changed files with 523 additions and 78 deletions

View File

@@ -4348,6 +4348,7 @@ STR_6036 :{SMALLFONT}{BLACK}Clear
STR_6037 :Please select a valid RCT1 directory
STR_6038 :{SMALLFONT}{BLACK}If you have RCT1 installed, set this option to its directory to load scenarios, music, etc.
STR_6039 :{SMALLFONT}{BLACK}Quick demolish ride
STR_6040 :Edit Scenario Options
#############
# Scenarios #

View File

@@ -3,6 +3,7 @@
- Feature: [#1730] Keyboard shortcuts for track construction.
- Feature: [#5110] The tile inspector can now be used in multiplayer.
- Feature: [#5305] Add scenery eye dropper tool.
- Improved: [#5254] Scenario option changes are now synchronised over multiplayer.
- Improved: [#3288] Added server description and greeting textboxes to the start server menu.
- Improved: [#5137] Removing all guests no longer closes the rides and removes the vehicles.
- Improved: [#5163] Minor tile inspector improvements and fixes.

View File

@@ -42,6 +42,7 @@
#include "world/park.h"
#include "world/scenery.h"
#include "world/sprite.h"
#include "network/network.h"
uint8 _editorSelectedRides[128];
uint8 _editorSelectedSmallScenery[252];
@@ -534,3 +535,177 @@ bool editor_check_park()
return true;
}
void game_command_edit_scenario_options(sint32* eax, sint32* ebx, sint32* ecx, sint32* edx, sint32* esi, sint32* edi, sint32* ebp)
{
if (!(*ebx & GAME_COMMAND_FLAG_APPLY)) {
*ebx = 0;
return;
}
switch (*ecx) {
case EDIT_SCENARIOOPTIONS_SETNOMONEY:
if (gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR) {
if (*edx != 0) {
gParkFlags |= PARK_FLAGS_NO_MONEY_SCENARIO;
}
else {
gParkFlags &= PARK_FLAGS_NO_MONEY_SCENARIO;
}
}
else {
if (*edx != 0) {
gParkFlags |= PARK_FLAGS_NO_MONEY;
}
else {
gParkFlags &= ~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_by_class(WC_TOP_TOOLBAR);
}
break;
case EDIT_SCENARIOOPTIONS_SETINITIALCASH:
gInitialCash = clamp(MONEY(0, 00), *edx, MONEY(1000000, 00));
gCashEncrypted = ENCRYPT_MONEY(gInitialCash);
window_invalidate_by_class(WC_FINANCES);
window_invalidate_by_class(WC_BOTTOM_TOOLBAR);
break;
case EDIT_SCENARIOOPTIONS_SETINITIALLOAN:
gBankLoan = clamp(MONEY(0,00), *edx, MONEY(5000000,00));
gMaxBankLoan = max(gBankLoan, gMaxBankLoan);
window_invalidate_by_class(WC_FINANCES);
break;
case EDIT_SCENARIOOPTIONS_SETMAXIMUMLOANSIZE:
gMaxBankLoan = clamp(MONEY(0,00), *edx, MONEY(5000000,00));
gBankLoan = min(gBankLoan, gMaxBankLoan);
window_invalidate_by_class(WC_FINANCES);
break;
case EDIT_SCENARIOOPTIONS_SETANNUALINTERESTRATE:
gBankLoanInterestRate = clamp(0, *edx, 80);
window_invalidate_by_class(WC_FINANCES);
break;
case EDIT_SCENARIOOPTIONS_SETFORBIDMARKETINGCAMPAIGNS:
if (*edx != 0) {
gParkFlags |= PARK_FLAGS_FORBID_MARKETING_CAMPAIGN;
}
else {
gParkFlags &= ~PARK_FLAGS_FORBID_MARKETING_CAMPAIGN;
}
break;
case EDIT_SCENARIOOPTIONS_SETAVERAGECASHPERGUEST:
gGuestInitialCash = clamp(MONEY(0, 00), *edx, MONEY(1000, 00));
break;
case EDIT_SCENARIOOPTIONS_SETGUESTINITIALHAPPINESS:
gGuestInitialHappiness = clamp(40, *edx, 250);
break;
case EDIT_SCENARIOOPTIONS_SETGUESTINITIALHUNGER:
gGuestInitialHunger = clamp(40, *edx, 250);
break;
case EDIT_SCENARIOOPTIONS_SETGUESTINITIALTHIRST:
gGuestInitialThirst = clamp(40, *edx, 250);
break;
case EDIT_SCENARIOOPTIONS_SETGUESTSPREFERLESSINTENSERIDES:
if (*edx != 0) {
gParkFlags |= PARK_FLAGS_PREF_LESS_INTENSE_RIDES;
}
else {
gParkFlags &= ~PARK_FLAGS_PREF_LESS_INTENSE_RIDES;
}
break;
case EDIT_SCENARIOOPTIONS_SETGUESTSPREFERMOREINTENSERIDES:
if (*edx != 0) {
gParkFlags |= PARK_FLAGS_PREF_MORE_INTENSE_RIDES;
}
else {
gParkFlags &= ~PARK_FLAGS_PREF_MORE_INTENSE_RIDES;
}
break;
case EDIT_SCENARIOOPTIONS_SETCOSTTOBUYLAND:
gLandPrice = clamp(MONEY(5, 00), *edx, MONEY(200, 00));
break;
case EDIT_SCENARIOOPTIONS_SETCOSTTOBUYCONSTRUCTIONRIGHTS:
gLandRightsCost = clamp(MONEY(5,00), *edx, MONEY(200,00));
break;
case EDIT_SCENARIOOPTIONS_SETPARKCHARGEMETHOD:
if (gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR) {
if (*edx == 0) {
if (!(gParkFlags & PARK_FLAGS_PARK_FREE_ENTRY)) {
gParkFlags |= PARK_FLAGS_PARK_FREE_ENTRY;
gParkEntranceFee = MONEY(0, 00);
}
}
else {
if (gParkFlags & PARK_FLAGS_PARK_FREE_ENTRY) {
gParkFlags &= ~PARK_FLAGS_PARK_FREE_ENTRY;
gParkEntranceFee = MONEY(10, 00);
}
}
}
else {
if (*edx == 0) {
if (!(gParkFlags & PARK_FLAGS_PARK_FREE_ENTRY)) {
gParkFlags |= PARK_FLAGS_PARK_FREE_ENTRY;
}
}
else {
if (gParkFlags & PARK_FLAGS_PARK_FREE_ENTRY) {
gParkFlags &= ~PARK_FLAGS_PARK_FREE_ENTRY;
}
}
window_invalidate_by_class(WC_PARK_INFORMATION);
window_invalidate_by_class(WC_RIDE);
}
break;
case EDIT_SCENARIOOPTIONS_SETPARKCHARGEENTRYFEE:
gParkEntranceFee = clamp(MONEY(0, 00), *edx, MONEY(100, 00));
window_invalidate_by_class(WC_PARK_INFORMATION);
break;
case EDIT_SCENARIOOPTIONS_SETFORBIDTREEREMOVAL:
if (*edx != 0) {
gParkFlags |= PARK_FLAGS_FORBID_TREE_REMOVAL;
}
else {
gParkFlags &= ~PARK_FLAGS_FORBID_TREE_REMOVAL;
}
break;
case EDIT_SCENARIOOPTIONS_SETFORBIDLANDSCAPECHANGES:
if (*edx != 0) {
gParkFlags |= PARK_FLAGS_FORBID_LANDSCAPE_CHANGES;
}
else {
gParkFlags &= ~PARK_FLAGS_FORBID_LANDSCAPE_CHANGES;
}
break;
case EDIT_SCENARIOOPTIONS_SETFORBIDHIGHCONSTRUCTION:
if (*edx != 0) {
gParkFlags |= PARK_FLAGS_FORBID_HIGH_CONSTRUCTION;
}
else {
gParkFlags &= ~PARK_FLAGS_FORBID_HIGH_CONSTRUCTION;
}
break;
case EDIT_SCENARIOOPTIONS_SETPARKRATINGHIGHERDIFFICULTLEVEL:
if (*edx != 0) {
gParkFlags |= PARK_FLAGS_DIFFICULT_PARK_RATING;
}
else {
gParkFlags &= ~PARK_FLAGS_DIFFICULT_PARK_RATING;
}
break;
case EDIT_SCENARIOOPTIONS_SETGUESTGENERATIONHIGHERDIFFICULTLEVEL:
if (*edx != 0) {
gParkFlags |= PARK_FLAGS_DIFFICULT_GUEST_GENERATION;
}
else {
gParkFlags &= ~PARK_FLAGS_DIFFICULT_GUEST_GENERATION;
}
break;
}
window_invalidate_by_class(WC_EDITOR_SCENARIO_OPTIONS);
*ebx = 0;
}

View File

@@ -31,6 +31,31 @@ typedef enum {
EDITOR_STEP_TRACK_DESIGNS_MANAGER // 7
} RCT2_EDITOR_STEP;
enum
{
EDIT_SCENARIOOPTIONS_SETNOMONEY,
EDIT_SCENARIOOPTIONS_SETINITIALCASH,
EDIT_SCENARIOOPTIONS_SETINITIALLOAN,
EDIT_SCENARIOOPTIONS_SETMAXIMUMLOANSIZE,
EDIT_SCENARIOOPTIONS_SETANNUALINTERESTRATE,
EDIT_SCENARIOOPTIONS_SETFORBIDMARKETINGCAMPAIGNS,
EDIT_SCENARIOOPTIONS_SETAVERAGECASHPERGUEST,
EDIT_SCENARIOOPTIONS_SETGUESTINITIALHAPPINESS,
EDIT_SCENARIOOPTIONS_SETGUESTINITIALHUNGER,
EDIT_SCENARIOOPTIONS_SETGUESTINITIALTHIRST,
EDIT_SCENARIOOPTIONS_SETGUESTSPREFERLESSINTENSERIDES,
EDIT_SCENARIOOPTIONS_SETGUESTSPREFERMOREINTENSERIDES,
EDIT_SCENARIOOPTIONS_SETCOSTTOBUYLAND,
EDIT_SCENARIOOPTIONS_SETCOSTTOBUYCONSTRUCTIONRIGHTS,
EDIT_SCENARIOOPTIONS_SETPARKCHARGEMETHOD,
EDIT_SCENARIOOPTIONS_SETPARKCHARGEENTRYFEE,
EDIT_SCENARIOOPTIONS_SETFORBIDTREEREMOVAL,
EDIT_SCENARIOOPTIONS_SETFORBIDLANDSCAPECHANGES,
EDIT_SCENARIOOPTIONS_SETFORBIDHIGHCONSTRUCTION,
EDIT_SCENARIOOPTIONS_SETPARKRATINGHIGHERDIFFICULTLEVEL,
EDIT_SCENARIOOPTIONS_SETGUESTGENERATIONHIGHERDIFFICULTLEVEL,
};
extern uint8 * gEditorSelectedObjects[OBJECT_ENTRY_GROUP_COUNT];
void editor_load();
@@ -46,4 +71,6 @@ sint32 editor_check_object_selection();
bool editor_check_object_group_at_least_one_selected(sint32 objectType);
void game_command_edit_scenario_options(sint32* eax, sint32* ebx, sint32* ecx, sint32* edx, sint32* esi, sint32* edi, sint32* ebp);
#endif

View File

@@ -1247,4 +1247,5 @@ GAME_COMMAND_POINTER* new_game_command_table[GAME_COMMAND_COUNT] = {
game_command_pickup_staff,
game_command_balloon_press,
game_command_modify_tile,
game_command_edit_scenario_options,
};

View File

@@ -93,6 +93,7 @@ enum GAME_COMMAND {
GAME_COMMAND_PICKUP_STAFF,
GAME_COMMAND_BALLOON_PRESS,
GAME_COMMAND_MODIFY_TILE,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
GAME_COMMAND_COUNT
};

View File

@@ -3696,6 +3696,8 @@ enum {
STR_QUICK_DEMOLISH_RIDE = 6039,
STR_ACTION_EDIT_SCENARIO_OPTIONS = 6040,
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
STR_COUNT = 32768
};

View File

@@ -226,6 +226,11 @@ const std::vector<NetworkAction> NetworkActions::Actions =
{
GAME_COMMAND_MODIFY_TILE
}
}, {
STR_ACTION_EDIT_SCENARIO_OPTIONS, "PERMISSION_EDIT_SCENARIO_OPTIONS",
{
GAME_COMMAND_EDIT_SCENARIO_OPTIONS
}
}
};

View File

@@ -750,6 +750,7 @@ void Network::SetupDefaultGroups()
user->ToggleActionPermission(18); // Cheat
user->ToggleActionPermission(20); // Passwordless login
user->ToggleActionPermission(21); // Modify Tile
user->ToggleActionPermission(22); // Edit Scenario Options
user->Id = 2;
group_list.push_back(std::move(user));
SetDefaultGroup(1);

View File

@@ -56,7 +56,7 @@ extern "C" {
// This define specifies which version of network stream current build uses.
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
#define NETWORK_STREAM_VERSION "15"
#define NETWORK_STREAM_VERSION "16"
#define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION
#ifdef __cplusplus

View File

@@ -14,6 +14,8 @@
*****************************************************************************/
#pragma endregion
#include "../editor.h"
#include "../game.h"
#include "../interface/themes.h"
#include "../interface/widget.h"
#include "../interface/window.h"
@@ -498,22 +500,27 @@ static void window_editor_scenario_options_financial_mouseup(rct_window *w, sint
window_editor_scenario_options_set_page(w, widgetIndex - WIDX_TAB_1);
break;
case WIDX_NO_MONEY:
if (gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR) {
gParkFlags ^= PARK_FLAGS_NO_MONEY_SCENARIO;
} else {
gParkFlags ^= 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_by_class(WC_TOP_TOOLBAR);
}
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETNOMONEY,
gParkFlags & PARK_FLAGS_NO_MONEY ? 0 : 1,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
window_invalidate(w);
break;
case WIDX_FORBID_MARKETING:
gParkFlags ^= PARK_FLAGS_FORBID_MARKETING_CAMPAIGN;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETFORBIDMARKETINGCAMPAIGNS,
gParkFlags & PARK_FLAGS_FORBID_MARKETING_CAMPAIGN ? 0 : 1,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
window_invalidate(w);
break;
}
@@ -537,8 +544,15 @@ static void window_editor_scenario_options_financial_mousedown(sint32 widgetInde
switch (widgetIndex) {
case WIDX_INITIAL_CASH_INCREASE:
if (gInitialCash < MONEY(1000000,00)) {
gInitialCash += MONEY(500,00);
gCashEncrypted = ENCRYPT_MONEY(gInitialCash);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETINITIALCASH,
gInitialCash + MONEY(500,00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_INCREASE_CASH, STR_NONE);
}
@@ -546,8 +560,15 @@ static void window_editor_scenario_options_financial_mousedown(sint32 widgetInde
break;
case WIDX_INITIAL_CASH_DECREASE:
if (gInitialCash > MONEY(0,00)) {
gInitialCash -= MONEY(500,00);
gCashEncrypted = ENCRYPT_MONEY(gInitialCash);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETINITIALCASH,
gInitialCash - MONEY(500,00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_REDUCE_CASH, STR_NONE);
}
@@ -555,8 +576,15 @@ static void window_editor_scenario_options_financial_mousedown(sint32 widgetInde
break;
case WIDX_INITIAL_LOAN_INCREASE:
if (gBankLoan < MONEY(5000000,00)) {
gBankLoan += MONEY(1000,00);
gMaxBankLoan = max(gBankLoan, gMaxBankLoan);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETINITIALLOAN,
gBankLoan + MONEY(1000,00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_INCREASE_INIT_LOAN, STR_NONE);
}
@@ -564,8 +592,15 @@ static void window_editor_scenario_options_financial_mousedown(sint32 widgetInde
break;
case WIDX_INITIAL_LOAN_DECREASE:
if (gBankLoan > MONEY(0,00)) {
gBankLoan -= MONEY(1000,00);
gMaxBankLoan = max(gBankLoan, gMaxBankLoan);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETINITIALLOAN,
gBankLoan - MONEY(1000,00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_REDUCE_INIT_LOAN, STR_NONE);
}
@@ -573,8 +608,15 @@ static void window_editor_scenario_options_financial_mousedown(sint32 widgetInde
break;
case WIDX_MAXIMUM_LOAN_INCREASE:
if (gMaxBankLoan < MONEY(5000000,00)) {
gMaxBankLoan += MONEY(1000,00);
gBankLoan = min(gBankLoan, gMaxBankLoan);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETMAXIMUMLOANSIZE,
gMaxBankLoan + MONEY(1000,00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_INCREASE_MAX_LOAN, STR_NONE);
}
@@ -582,8 +624,15 @@ static void window_editor_scenario_options_financial_mousedown(sint32 widgetInde
break;
case WIDX_MAXIMUM_LOAN_DECREASE:
if (gMaxBankLoan > MONEY(0,00)) {
gMaxBankLoan -= MONEY(1000,00);
gBankLoan = min(gBankLoan, gMaxBankLoan);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETMAXIMUMLOANSIZE,
gMaxBankLoan - MONEY(1000,00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_REDUCE_MAX_LOAN, STR_NONE);
}
@@ -592,9 +641,25 @@ static void window_editor_scenario_options_financial_mousedown(sint32 widgetInde
case WIDX_INTEREST_RATE_INCREASE:
if (gBankLoanInterestRate < 80) {
if (gBankLoanInterestRate < 0) {
gBankLoanInterestRate = 0;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETANNUALINTERESTRATE,
0,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
gBankLoanInterestRate++;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETANNUALINTERESTRATE,
gBankLoanInterestRate + 1,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
}
} else {
window_error_open(STR_CANT_INCREASE_INTEREST_RATE, STR_NONE);
@@ -604,9 +669,25 @@ static void window_editor_scenario_options_financial_mousedown(sint32 widgetInde
case WIDX_INTEREST_RATE_DECREASE:
if (gBankLoanInterestRate > 0) {
if (gBankLoanInterestRate > 80) {
gBankLoanInterestRate = 80;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETANNUALINTERESTRATE,
80,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
gBankLoanInterestRate--;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETANNUALINTERESTRATE,
gBankLoanInterestRate - 1,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
}
} else {
window_error_open(STR_CANT_REDUCE_INTEREST_RATE, STR_NONE);
@@ -754,11 +835,27 @@ static void window_editor_scenario_options_guests_mouseup(rct_window *w, sint32
window_editor_scenario_options_set_page(w, widgetIndex - WIDX_TAB_1);
break;
case WIDX_GUEST_PREFER_LESS_INTENSE_RIDES:
gParkFlags ^= PARK_FLAGS_PREF_LESS_INTENSE_RIDES;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETGUESTSPREFERLESSINTENSERIDES,
gParkFlags & PARK_FLAGS_PREF_LESS_INTENSE_RIDES ? 0 : 1,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
window_invalidate(w);
break;
case WIDX_GUEST_PREFER_MORE_INTENSE_RIDES:
gParkFlags ^= PARK_FLAGS_PREF_MORE_INTENSE_RIDES;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETGUESTSPREFERMOREINTENSERIDES,
gParkFlags & PARK_FLAGS_PREF_MORE_INTENSE_RIDES ? 0 : 1,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
window_invalidate(w);
break;
}
@@ -782,7 +879,15 @@ static void window_editor_scenario_options_guests_mousedown(sint32 widgetIndex,
switch (widgetIndex) {
case WIDX_CASH_PER_GUEST_INCREASE:
if (gGuestInitialCash < MONEY(1000, 00)) {
gGuestInitialCash += MONEY(1, 00);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETAVERAGECASHPERGUEST,
gGuestInitialCash + MONEY(1, 00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_INCREASE_FURTHER, STR_NONE);
}
@@ -790,7 +895,15 @@ static void window_editor_scenario_options_guests_mousedown(sint32 widgetIndex,
break;
case WIDX_CASH_PER_GUEST_DECREASE:
if (gGuestInitialCash > MONEY(0, 00)) {
gGuestInitialCash -= MONEY(1, 00);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETAVERAGECASHPERGUEST,
gGuestInitialCash - MONEY(1, 00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_REDUCE_FURTHER, STR_NONE);
}
@@ -798,7 +911,15 @@ static void window_editor_scenario_options_guests_mousedown(sint32 widgetIndex,
break;
case WIDX_GUEST_INITIAL_HAPPINESS_INCREASE:
if (gGuestInitialHappiness < 250) {
gGuestInitialHappiness += 4;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETGUESTINITIALHAPPINESS,
gGuestInitialHappiness + 4,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_INCREASE_FURTHER, STR_NONE);
}
@@ -806,7 +927,15 @@ static void window_editor_scenario_options_guests_mousedown(sint32 widgetIndex,
break;
case WIDX_GUEST_INITIAL_HAPPINESS_DECREASE:
if (gGuestInitialHappiness > 40) {
gGuestInitialHappiness -= 4;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETGUESTINITIALHAPPINESS,
gGuestInitialHappiness - 4,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_REDUCE_FURTHER, STR_NONE);
}
@@ -814,7 +943,15 @@ static void window_editor_scenario_options_guests_mousedown(sint32 widgetIndex,
break;
case WIDX_GUEST_INITIAL_HUNGER_INCREASE:
if (gGuestInitialHunger > 40) {
gGuestInitialHunger -= 4;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETGUESTINITIALHUNGER,
gGuestInitialHunger - 4,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_INCREASE_FURTHER, STR_NONE);
}
@@ -822,7 +959,15 @@ static void window_editor_scenario_options_guests_mousedown(sint32 widgetIndex,
break;
case WIDX_GUEST_INITIAL_HUNGER_DECREASE:
if (gGuestInitialHunger < 250) {
gGuestInitialHunger += 4;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETGUESTINITIALHUNGER,
gGuestInitialHunger + 4,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_REDUCE_FURTHER, STR_NONE);
}
@@ -830,7 +975,15 @@ static void window_editor_scenario_options_guests_mousedown(sint32 widgetIndex,
break;
case WIDX_GUEST_INITIAL_THIRST_INCREASE:
if (gGuestInitialThirst > 40) {
gGuestInitialThirst -= 4;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETGUESTINITIALTHIRST,
gGuestInitialThirst - 4,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_INCREASE_FURTHER, STR_NONE);
}
@@ -838,7 +991,15 @@ static void window_editor_scenario_options_guests_mousedown(sint32 widgetIndex,
break;
case WIDX_GUEST_INITIAL_THIRST_DECREASE:
if (gGuestInitialThirst < 250) {
gGuestInitialThirst += 4;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETGUESTINITIALTHIRST,
gGuestInitialThirst + 4,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_REDUCE_FURTHER, STR_NONE);
}
@@ -982,23 +1143,63 @@ static void window_editor_scenario_options_park_mouseup(rct_window *w, sint32 wi
window_editor_scenario_options_set_page(w, widgetIndex - WIDX_TAB_1);
break;
case WIDX_FORBID_TREE_REMOVAL:
gParkFlags ^= PARK_FLAGS_FORBID_TREE_REMOVAL;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETFORBIDTREEREMOVAL,
gParkFlags & PARK_FLAGS_FORBID_TREE_REMOVAL ? 0 : 1,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
window_invalidate(w);
break;
case WIDX_FORBID_LANDSCAPE_CHANGES:
gParkFlags ^= PARK_FLAGS_FORBID_LANDSCAPE_CHANGES;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETFORBIDLANDSCAPECHANGES,
gParkFlags & PARK_FLAGS_FORBID_LANDSCAPE_CHANGES ? 0 : 1,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
window_invalidate(w);
break;
case WIDX_FORBID_HIGH_CONSTRUCTION:
gParkFlags ^= PARK_FLAGS_FORBID_HIGH_CONSTRUCTION;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETFORBIDHIGHCONSTRUCTION,
gParkFlags & PARK_FLAGS_FORBID_HIGH_CONSTRUCTION ? 0 : 1,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
window_invalidate(w);
break;
case WIDX_HARD_PARK_RATING:
gParkFlags ^= PARK_FLAGS_DIFFICULT_PARK_RATING;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETPARKRATINGHIGHERDIFFICULTLEVEL,
gParkFlags & PARK_FLAGS_DIFFICULT_PARK_RATING ? 0 : 1,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
window_invalidate(w);
break;
case WIDX_HARD_GUEST_GENERATION:
gParkFlags ^= PARK_FLAGS_DIFFICULT_GUEST_GENERATION;
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETGUESTGENERATIONHIGHERDIFFICULTLEVEL,
gParkFlags & PARK_FLAGS_DIFFICULT_GUEST_GENERATION ? 0 : 1,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
window_invalidate(w);
break;
}
@@ -1024,7 +1225,15 @@ static void window_editor_scenario_options_park_mousedown(sint32 widgetIndex, rc
switch (widgetIndex) {
case WIDX_LAND_COST_INCREASE:
if (gLandPrice < MONEY(200,00)) {
gLandPrice += MONEY(1,00);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETCOSTTOBUYLAND,
gLandPrice + MONEY(1,00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_INCREASE_FURTHER, STR_NONE);
}
@@ -1032,7 +1241,15 @@ static void window_editor_scenario_options_park_mousedown(sint32 widgetIndex, rc
break;
case WIDX_LAND_COST_DECREASE:
if (gLandPrice > MONEY(5,00)) {
gLandPrice -= MONEY(1,00);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETCOSTTOBUYLAND,
gLandPrice - MONEY(1, 00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_REDUCE_FURTHER, STR_NONE);
}
@@ -1040,7 +1257,15 @@ static void window_editor_scenario_options_park_mousedown(sint32 widgetIndex, rc
break;
case WIDX_CONSTRUCTION_RIGHTS_COST_INCREASE:
if (gConstructionRightsPrice < MONEY(200,00)) {
gConstructionRightsPrice += MONEY(1,00);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETCOSTTOBUYCONSTRUCTIONRIGHTS,
gConstructionRightsPrice + MONEY(1,00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_INCREASE_FURTHER, STR_NONE);
}
@@ -1048,7 +1273,15 @@ static void window_editor_scenario_options_park_mousedown(sint32 widgetIndex, rc
break;
case WIDX_CONSTRUCTION_RIGHTS_COST_DECREASE:
if (gConstructionRightsPrice > MONEY(5,00)) {
gConstructionRightsPrice -= MONEY(1,00);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETCOSTTOBUYCONSTRUCTIONRIGHTS,
gConstructionRightsPrice - MONEY(1,00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_REDUCE_FURTHER, STR_NONE);
}
@@ -1056,7 +1289,15 @@ static void window_editor_scenario_options_park_mousedown(sint32 widgetIndex, rc
break;
case WIDX_ENTRY_PRICE_INCREASE:
if (gParkEntranceFee < MONEY(100,00)) {
gParkEntranceFee += MONEY(1,00);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETPARKCHARGEENTRYFEE,
gParkEntranceFee + MONEY(1,00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_INCREASE_FURTHER, STR_NONE);
}
@@ -1064,7 +1305,15 @@ static void window_editor_scenario_options_park_mousedown(sint32 widgetIndex, rc
break;
case WIDX_ENTRY_PRICE_DECREASE:
if (gParkEntranceFee > MONEY(0,00)) {
gParkEntranceFee -= MONEY(1,00);
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETPARKCHARGEENTRYFEE,
gParkEntranceFee - MONEY(1,00),
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
} else {
window_error_open(STR_CANT_REDUCE_FURTHER, STR_NONE);
}
@@ -1101,32 +1350,15 @@ static void window_editor_scenario_options_park_mousedown(sint32 widgetIndex, rc
static void window_editor_scenario_options_park_dropdown(rct_window *w, sint32 widgetIndex, sint32 dropdownIndex)
{
if (widgetIndex == WIDX_PAY_FOR_PARK_OR_RIDES_DROPDOWN && dropdownIndex != -1) {
if(gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR) {
if (dropdownIndex == 0) {
if (!(gParkFlags & PARK_FLAGS_PARK_FREE_ENTRY)) {
gParkFlags |= PARK_FLAGS_PARK_FREE_ENTRY;
gParkEntranceFee = MONEY(0, 00);
}
} else {
if (gParkFlags & PARK_FLAGS_PARK_FREE_ENTRY) {
gParkFlags &= ~PARK_FLAGS_PARK_FREE_ENTRY;
gParkEntranceFee = MONEY(10, 00);
}
}
}
else {
if (dropdownIndex == 0) {
if (!(gParkFlags & PARK_FLAGS_PARK_FREE_ENTRY)) {
gParkFlags |= PARK_FLAGS_PARK_FREE_ENTRY;
}
} else {
if (gParkFlags & PARK_FLAGS_PARK_FREE_ENTRY) {
gParkFlags &= ~PARK_FLAGS_PARK_FREE_ENTRY;
}
}
window_invalidate_by_class(WC_PARK_INFORMATION);
window_invalidate_by_class(WC_RIDE);
}
game_do_command(
0,
GAME_COMMAND_FLAG_APPLY,
EDIT_SCENARIOOPTIONS_SETPARKCHARGEMETHOD,
dropdownIndex,
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
0,
0
);
window_invalidate(w);
}
}

View File

@@ -3065,7 +3065,6 @@ void top_toolbar_init_debug_menu(rct_window* w, rct_widget* widget)
if (network_get_mode() != NETWORK_MODE_NONE) {
dropdown_set_disabled(DDIDX_OBJECT_SELECTION, true);
dropdown_set_disabled(DDIDX_INVENTIONS_LIST, true);
dropdown_set_disabled(DDIDX_SCENARIO_OPTIONS, true);
}
dropdown_set_checked(DDIDX_DEBUG_PAINT, window_find_by_class(WC_DEBUG_PAINT) != NULL);