mirror of https://github.com/OpenRCT2/OpenRCT2.git
Option for early scenario completion (#7187)
This commit is contained in:
parent
9c568105f2
commit
ccb1b330a5
|
@ -4476,7 +4476,7 @@ STR_6166 :{SMALLFONT}{BLACK}Synchronises each frame displayed to the monitor'
|
|||
STR_6167 :{SMALLFONT}{BLACK}Advanced
|
||||
STR_6168 :Title Sequence
|
||||
STR_6169 :Scenario selection
|
||||
STR_6170 :Tweaks
|
||||
STR_6170 :Interface Tweaks
|
||||
STR_6171 :Search
|
||||
STR_6172 :{SMALLFONT}{BLACK}Search
|
||||
STR_6173 :Please provide the name to search:
|
||||
|
@ -4532,6 +4532,9 @@ STR_6222 :Can't place guest entry point here...
|
|||
STR_6223 :Must be outside park boundaries!
|
||||
STR_6224 :{STRING} placed a guest entry point.
|
||||
STR_6225 :Not supported with OpenGL renderer
|
||||
STR_6226 :Enable early scenario completion
|
||||
STR_6227 :{SMALLFONT}{BLACK}Triggers scenario completion when all scenario goals are met before the target date.
|
||||
STR_6228 :Scenario Options
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
0.1.3 (in development)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [#7187] Option for early scenario completion.
|
||||
- Feature: [#7267] Leverage more historical data in Finances window.
|
||||
- Improved: Raising land near the map edge makes the affected area smaller instead of showing an 'off edge map' error.
|
||||
|
||||
|
|
|
@ -162,6 +162,8 @@ enum WINDOW_OPTIONS_WIDGET_IDX {
|
|||
WIDX_SCENARIO_GROUPING,
|
||||
WIDX_SCENARIO_GROUPING_DROPDOWN,
|
||||
WIDX_SCENARIO_UNLOCKING,
|
||||
WIDX_SCENARIO_OPTIONS_GROUP,
|
||||
WIDX_ALLOW_EARLY_COMPLETION,
|
||||
WIDX_TWEAKS_GROUP,
|
||||
WIDX_REAL_NAME_CHECKBOX,
|
||||
WIDX_AUTO_STAFF_PLACEMENT,
|
||||
|
@ -255,8 +257,8 @@ static rct_widget window_options_rendering_widgets[] = {
|
|||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 45, FRAME_RENDERING_START + 56, STR_ENABLE_VIRTUAL_FLOOR, STR_ENABLE_VIRTUAL_FLOOR_TIP }, // Virtual floor
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 60, FRAME_RENDERING_START + 71, STR_CYCLE_DAY_NIGHT, STR_CYCLE_DAY_NIGHT_TIP }, // Cycle day-night
|
||||
{ WWT_CHECKBOX, 1, 25, 290, FRAME_RENDERING_START + 75, FRAME_RENDERING_START + 86, STR_ENABLE_LIGHTING_EFFECTS, STR_ENABLE_LIGHTING_EFFECTS_TIP }, // Enable light fx
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 90, FRAME_RENDERING_START + 101, STR_UPPERCASE_BANNERS, STR_UPPERCASE_BANNERS_TIP }, // Uppercase banners
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 105, FRAME_RENDERING_START + 116, STR_RENDER_WEATHER_EFFECTS, STR_RENDER_WEATHER_EFFECTS_TIP }, // Render weather effects
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 90, FRAME_RENDERING_START + 101, STR_UPPERCASE_BANNERS, STR_UPPERCASE_BANNERS_TIP }, // Uppercase banners
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 105, FRAME_RENDERING_START + 116, STR_RENDER_WEATHER_EFFECTS, STR_RENDER_WEATHER_EFFECTS_TIP }, // Render weather effects
|
||||
{ WWT_CHECKBOX, 1, 25, 290, FRAME_RENDERING_START + 120, FRAME_RENDERING_START + 131, STR_DISABLE_LIGHTNING_EFFECT, STR_DISABLE_LIGHTNING_EFFECT_TIP }, // Disable lightning effect
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 135, FRAME_RENDERING_START + 146, STR_SHOW_GUEST_PURCHASES, STR_SHOW_GUEST_PURCHASES_TIP },
|
||||
#undef FRAME_RENDERING_START
|
||||
|
@ -324,24 +326,28 @@ static rct_widget window_options_controls_and_interface_widgets[] = {
|
|||
static rct_widget window_options_misc_widgets[] = {
|
||||
MAIN_OPTIONS_WIDGETS,
|
||||
#define TITLE_SEQUENCE_START 53
|
||||
{ WWT_GROUPBOX, 1, 5, 304, TITLE_SEQUENCE_START + 0, TITLE_SEQUENCE_START + 49, STR_OPTIONS_TITLE_SEQUENCE, STR_NONE },
|
||||
{ WWT_DROPDOWN, 1, 135, 299, TITLE_SEQUENCE_START + 15, TITLE_SEQUENCE_START + 26, STR_NONE, STR_NONE }, // Title sequence dropdown
|
||||
{ WWT_BUTTON, 1, 288, 298, TITLE_SEQUENCE_START + 16, TITLE_SEQUENCE_START + 25, STR_DROPDOWN_GLYPH, STR_TITLE_SEQUENCE_TIP }, // Title sequence dropdown button
|
||||
{ WWT_BUTTON, 1, 135, 299, TITLE_SEQUENCE_START + 30, TITLE_SEQUENCE_START + 42, STR_EDIT_TITLE_SEQUENCES_BUTTON, STR_EDIT_TITLE_SEQUENCES_BUTTON_TIP }, // Edit title sequences button
|
||||
{ WWT_GROUPBOX, 1, 5, 304, TITLE_SEQUENCE_START + 0, TITLE_SEQUENCE_START + 49, STR_OPTIONS_TITLE_SEQUENCE, STR_NONE },
|
||||
{ WWT_DROPDOWN, 1, 135, 299, TITLE_SEQUENCE_START + 15, TITLE_SEQUENCE_START + 26, STR_NONE, STR_NONE }, // Title sequence dropdown
|
||||
{ WWT_BUTTON, 1, 288, 298, TITLE_SEQUENCE_START + 16, TITLE_SEQUENCE_START + 25, STR_DROPDOWN_GLYPH, STR_TITLE_SEQUENCE_TIP }, // Title sequence dropdown button
|
||||
{ WWT_BUTTON, 1, 135, 299, TITLE_SEQUENCE_START + 30, TITLE_SEQUENCE_START + 42, STR_EDIT_TITLE_SEQUENCES_BUTTON, STR_EDIT_TITLE_SEQUENCES_BUTTON_TIP }, // Edit title sequences button
|
||||
#undef TITLE_SEQUENCE_START
|
||||
#define SCENARIO_START 107
|
||||
{ WWT_GROUPBOX, 1, 5, 304, SCENARIO_START + 0, SCENARIO_START + 50, STR_OPTIONS_SCENARIO_SELECTION, STR_NONE },
|
||||
{ WWT_DROPDOWN, 1, 175, 299, SCENARIO_START + 15, SCENARIO_START + 26, STR_NONE, STR_NONE }, // Scenario select mode
|
||||
{ WWT_BUTTON, 1, 288, 298, SCENARIO_START + 16, SCENARIO_START + 25, STR_DROPDOWN_GLYPH, STR_SCENARIO_GROUPING_TIP },
|
||||
{ WWT_CHECKBOX, 2, 25, 299, SCENARIO_START + 30, SCENARIO_START + 45, STR_OPTIONS_SCENARIO_UNLOCKING, STR_SCENARIO_UNLOCKING_TIP }, // Unlocking of scenarios
|
||||
{ WWT_GROUPBOX, 1, 5, 304, SCENARIO_START + 0, SCENARIO_START + 50, STR_OPTIONS_SCENARIO_SELECTION, STR_NONE },
|
||||
{ WWT_DROPDOWN, 1, 175, 299, SCENARIO_START + 15, SCENARIO_START + 26, STR_NONE, STR_NONE }, // Scenario select mode
|
||||
{ WWT_BUTTON, 1, 288, 298, SCENARIO_START + 16, SCENARIO_START + 25, STR_DROPDOWN_GLYPH, STR_SCENARIO_GROUPING_TIP },
|
||||
{ WWT_CHECKBOX, 2, 25, 299, SCENARIO_START + 30, SCENARIO_START + 45, STR_OPTIONS_SCENARIO_UNLOCKING, STR_SCENARIO_UNLOCKING_TIP }, // Unlocking of scenarios
|
||||
#undef SCENARIO_START
|
||||
#define TWEAKS_START 162
|
||||
{ WWT_GROUPBOX, 1, 5, 304, TWEAKS_START + 0, TWEAKS_START + 80, STR_OPTIONS_TWEAKS, STR_NONE },
|
||||
{ WWT_CHECKBOX, 2, 10, 299, TWEAKS_START + 15, TWEAKS_START + 29, STR_REAL_NAME, STR_REAL_NAME_TIP }, // Show 'real' names of guests
|
||||
{ WWT_CHECKBOX, 2, 10, 299, TWEAKS_START + 30, TWEAKS_START + 44, STR_AUTO_STAFF_PLACEMENT, STR_AUTO_STAFF_PLACEMENT_TIP }, // Auto staff placement
|
||||
{ WWT_CHECKBOX, 2, 10, 299, TWEAKS_START + 45, TWEAKS_START + 59, STR_AUTO_OPEN_SHOPS, STR_AUTO_OPEN_SHOPS_TIP }, // Automatically open shops & stalls
|
||||
{ WWT_DROPDOWN, 1, 175, 299, TWEAKS_START + 61, TWEAKS_START + 72, STR_NONE, STR_NONE }, // Default inspection time dropdown
|
||||
{ WWT_BUTTON, 1, 288, 298, TWEAKS_START + 62, TWEAKS_START + 71, STR_DROPDOWN_GLYPH, STR_DEFAULT_INSPECTION_INTERVAL_TIP }, // Default inspection time dropdown button
|
||||
#define SCENARIO_OPTIONS_START 162
|
||||
{ WWT_GROUPBOX, 1, 5, 304, SCENARIO_OPTIONS_START + 0, SCENARIO_OPTIONS_START + 34, STR_SCENARIO_OPTIONS, STR_NONE },
|
||||
{ WWT_CHECKBOX, 2, 10, 299, SCENARIO_OPTIONS_START + 15, SCENARIO_OPTIONS_START + 29, STR_ALLOW_EARLY_COMPLETION, STR_EARLY_COMPLETION_TIP }, // Allow early scenario completion
|
||||
#undef SCENARIO_OPTIONS_START
|
||||
#define TWEAKS_START 201
|
||||
{ WWT_GROUPBOX, 1, 5, 304, TWEAKS_START + 0, TWEAKS_START + 80, STR_OPTIONS_TWEAKS, STR_NONE },
|
||||
{ WWT_CHECKBOX, 2, 10, 299, TWEAKS_START + 15, TWEAKS_START + 29, STR_REAL_NAME, STR_REAL_NAME_TIP }, // Show 'real' names of guests
|
||||
{ WWT_CHECKBOX, 2, 10, 299, TWEAKS_START + 30, TWEAKS_START + 44, STR_AUTO_STAFF_PLACEMENT, STR_AUTO_STAFF_PLACEMENT_TIP }, // Auto staff placement
|
||||
{ WWT_CHECKBOX, 2, 10, 299, TWEAKS_START + 45, TWEAKS_START + 59, STR_AUTO_OPEN_SHOPS, STR_AUTO_OPEN_SHOPS_TIP }, // Automatically open shops & stalls
|
||||
{ WWT_DROPDOWN, 1, 175, 299, TWEAKS_START + 61, TWEAKS_START + 72, STR_NONE, STR_NONE }, // Default inspection time dropdown
|
||||
{ WWT_BUTTON, 1, 288, 298, TWEAKS_START + 62, TWEAKS_START + 71, STR_DROPDOWN_GLYPH, STR_DEFAULT_INSPECTION_INTERVAL_TIP }, // Default inspection time dropdown button
|
||||
#undef TWEAKS_START
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
@ -355,7 +361,7 @@ static rct_widget window_options_advanced_widgets[] = {
|
|||
{ WWT_CHECKBOX, 2, 10, 299, 114, 125, STR_STAY_CONNECTED_AFTER_DESYNC, STR_STAY_CONNECTED_AFTER_DESYNC_TIP }, // Do not disconnect after the client desynchronises with the server
|
||||
{ WWT_DROPDOWN, 1, 165, 299, 130, 141, STR_NONE, STR_NONE }, // Autosave dropdown
|
||||
{ WWT_BUTTON, 1, 288, 298, 131, 140, STR_DROPDOWN_GLYPH, STR_AUTOSAVE_FREQUENCY_TIP }, // Autosave dropdown button
|
||||
{ WWT_LABEL, 1, 23, 298, 148, 159, STR_PATH_TO_RCT1, STR_PATH_TO_RCT1_TIP }, // RCT 1 path text
|
||||
{ WWT_LABEL, 1, 23, 298, 148, 159, STR_PATH_TO_RCT1, STR_PATH_TO_RCT1_TIP }, // RCT 1 path text
|
||||
{ WWT_BUTTON, 1, 24, 289, 163, 176, STR_NONE, STR_STRING_TOOLTIP }, // RCT 1 path button
|
||||
{ WWT_BUTTON, 1, 289, 299, 163, 176, STR_CLOSE_X, STR_PATH_TO_RCT1_CLEAR_TIP }, // RCT 1 path clear button
|
||||
{ WIDGETS_END },
|
||||
|
@ -578,6 +584,7 @@ static uint64 window_options_page_enabled_widgets[] = {
|
|||
(1 << WIDX_SCENARIO_GROUPING) |
|
||||
(1 << WIDX_SCENARIO_GROUPING_DROPDOWN) |
|
||||
(1 << WIDX_SCENARIO_UNLOCKING) |
|
||||
(1 << WIDX_ALLOW_EARLY_COMPLETION) |
|
||||
(1 << WIDX_AUTO_OPEN_SHOPS) |
|
||||
(1 << WIDX_DEFAULT_INSPECTION_INTERVAL) |
|
||||
(1 << WIDX_DEFAULT_INSPECTION_INTERVAL_DROPDOWN),
|
||||
|
@ -867,6 +874,11 @@ static void window_options_mouseup(rct_window *w, rct_widgetindex widgetIndex)
|
|||
config_save_default();
|
||||
window_invalidate(w);
|
||||
break;
|
||||
case WIDX_ALLOW_EARLY_COMPLETION:
|
||||
gConfigGeneral.allow_early_completion ^= 1;
|
||||
config_save_default();
|
||||
window_invalidate(w);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1736,10 +1748,12 @@ static void window_options_invalidate(rct_window *w)
|
|||
widget_set_checkbox_value(w, WIDX_REAL_NAME_CHECKBOX, gConfigGeneral.show_real_names_of_guests);
|
||||
widget_set_checkbox_value(w, WIDX_AUTO_STAFF_PLACEMENT, gConfigGeneral.auto_staff_placement);
|
||||
widget_set_checkbox_value(w, WIDX_AUTO_OPEN_SHOPS, gConfigGeneral.auto_open_shops);
|
||||
widget_set_checkbox_value(w, WIDX_ALLOW_EARLY_COMPLETION, gConfigGeneral.allow_early_completion);
|
||||
|
||||
window_options_misc_widgets[WIDX_REAL_NAME_CHECKBOX].type = WWT_CHECKBOX;
|
||||
window_options_misc_widgets[WIDX_AUTO_STAFF_PLACEMENT].type = WWT_CHECKBOX;
|
||||
window_options_misc_widgets[WIDX_AUTO_OPEN_SHOPS].type = WWT_CHECKBOX;
|
||||
window_options_misc_widgets[WIDX_ALLOW_EARLY_COMPLETION].type = WWT_CHECKBOX;
|
||||
|
||||
window_options_misc_widgets[WIDX_TITLE_SEQUENCE].type = WWT_DROPDOWN;
|
||||
window_options_misc_widgets[WIDX_TITLE_SEQUENCE_DROPDOWN].type = WWT_BUTTON;
|
||||
|
|
|
@ -210,6 +210,7 @@ namespace Config
|
|||
model->render_weather_gloom = reader->GetBoolean("render_weather_gloom", true);
|
||||
model->show_guest_purchases = reader->GetBoolean("show_guest_purchases", false);
|
||||
model->show_real_names_of_guests = reader->GetBoolean("show_real_names_of_guests", true);
|
||||
model->allow_early_completion = reader->GetBoolean("allow_early_completion", false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -281,6 +282,7 @@ namespace Config
|
|||
writer->WriteBoolean("show_guest_purchases", model->show_guest_purchases);
|
||||
writer->WriteBoolean("show_real_names_of_guests", model->show_real_names_of_guests);
|
||||
writer->WriteBoolean("use_virtual_floor", model->use_virtual_floor);
|
||||
writer->WriteBoolean("allow_early_completion", model->allow_early_completion);
|
||||
}
|
||||
|
||||
static void ReadInterface(IIniReader * reader)
|
||||
|
|
|
@ -88,6 +88,7 @@ struct GeneralConfiguration
|
|||
bool scenario_hide_mega_park;
|
||||
bool steam_overlay_pause;
|
||||
bool show_real_names_of_guests;
|
||||
bool allow_early_completion;
|
||||
|
||||
bool confirmation_prompt;
|
||||
sint32 load_save_sort;
|
||||
|
|
|
@ -3887,6 +3887,10 @@ enum {
|
|||
|
||||
STR_NOT_SUPPPORTED_IN_OPENGL = 6225,
|
||||
|
||||
STR_ALLOW_EARLY_COMPLETION = 6226,
|
||||
STR_EARLY_COMPLETION_TIP = 6227,
|
||||
STR_SCENARIO_OPTIONS = 6228,
|
||||
|
||||
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
|
||||
STR_COUNT = 32768
|
||||
};
|
||||
|
|
|
@ -310,6 +310,10 @@ static void scenario_day_update()
|
|||
case OBJECTIVE_REPLAY_LOAN_AND_PARK_VALUE:
|
||||
scenario_objective_check();
|
||||
break;
|
||||
default:
|
||||
if (gConfigGeneral.allow_early_completion)
|
||||
scenario_objective_check();
|
||||
break;
|
||||
}
|
||||
|
||||
// Lower the casualty penalty
|
||||
|
@ -736,11 +740,13 @@ static void scenario_objective_check_guests_by()
|
|||
sint16 objectiveGuests = gScenarioObjectiveNumGuests;
|
||||
sint16 currentMonthYear = gDateMonthsElapsed;
|
||||
|
||||
if (currentMonthYear == 8 * objectiveYear){
|
||||
if (parkRating >= 600 && guestsInPark >= objectiveGuests)
|
||||
if (currentMonthYear == 8 * objectiveYear || gConfigGeneral.allow_early_completion) {
|
||||
if (parkRating >= 600 && guestsInPark >= objectiveGuests) {
|
||||
scenario_success();
|
||||
else
|
||||
}
|
||||
else if (currentMonthYear == 8 * objectiveYear) {
|
||||
scenario_failure();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -751,11 +757,13 @@ static void scenario_objective_check_park_value_by()
|
|||
money32 objectiveParkValue = gScenarioObjectiveCurrency;
|
||||
money32 parkValue = gParkValue;
|
||||
|
||||
if (currentMonthYear == 8 * objectiveYear) {
|
||||
if (parkValue >= objectiveParkValue)
|
||||
if (currentMonthYear == 8 * objectiveYear || gConfigGeneral.allow_early_completion) {
|
||||
if (parkValue >= objectiveParkValue) {
|
||||
scenario_success();
|
||||
else
|
||||
}
|
||||
else if (currentMonthYear == 8 * objectiveYear) {
|
||||
scenario_failure();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue