mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #8235 from Broxzier/ui/climate
Move climate setting from objective to scenario settings window
This commit is contained in:
commit
18f1fab2cc
|
@ -3729,6 +3729,7 @@ STR_6265 :{SMALLFONT}{BLACK}When enabled, your operating system's file browse
|
|||
STR_6266 :Open custom content folder
|
||||
STR_6267 :Open tile inspector
|
||||
STR_6268 :Advance to next tick
|
||||
STR_6269 :Invalid climate ID
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
- Feature: [#8099] Add Powered Launch mode to Inverted RC (for RCT1 parity).
|
||||
- Feature: [#8190] Allow building footpaths on 'corner down' terrain.
|
||||
- Feature: [#8191] Allow building on-ride photos and water S-bends on the Water Coaster.
|
||||
- Change: [#8222] The climate setting has been moved from objective options to scenario options.
|
||||
- Fix: [#6191] OpenRCT2 fails to run when the path has an emoji in it.
|
||||
- Fix: [#7473] Disabling sound effects also disables "Disable audio on focus loss".
|
||||
- Fix: [#7828] Copied entrances and exits stay when demolishing ride.
|
||||
|
|
|
@ -7,20 +7,26 @@
|
|||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#include <openrct2-ui/interface/Dropdown.h>
|
||||
#include <openrct2-ui/interface/Widget.h>
|
||||
#include <openrct2-ui/windows/Window.h>
|
||||
#include "../interface/Dropdown.h"
|
||||
#include "../interface/Widget.h"
|
||||
#include "../interface/Window.h"
|
||||
#include "Window.h"
|
||||
|
||||
#include <openrct2/Context.h>
|
||||
#include <openrct2/Game.h>
|
||||
#include <openrct2/OpenRCT2.h>
|
||||
#include <openrct2/actions/ParkSetNameAction.hpp>
|
||||
#include <openrct2/core/Util.hpp>
|
||||
#include <openrct2/drawing/Drawing.h>
|
||||
#include <openrct2/drawing/Font.h>
|
||||
#include <openrct2/interface/Colour.h>
|
||||
#include <openrct2/localisation/Date.h>
|
||||
#include <openrct2/localisation/Language.h>
|
||||
#include <openrct2/localisation/Localisation.h>
|
||||
#include <openrct2/localisation/StringIds.h>
|
||||
#include <openrct2/ride/Ride.h>
|
||||
#include <openrct2/scenario/Scenario.h>
|
||||
#include <openrct2/sprites.h>
|
||||
#include <openrct2/util/Util.h>
|
||||
#include <openrct2/world/Climate.h>
|
||||
#include <openrct2/world/Park.h>
|
||||
|
||||
#pragma region Widgets
|
||||
|
@ -32,13 +38,6 @@ enum {
|
|||
WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_COUNT
|
||||
};
|
||||
|
||||
static constexpr const rct_string_id ClimateNames[] = {
|
||||
STR_CLIMATE_COOL_AND_WET,
|
||||
STR_CLIMATE_WARM,
|
||||
STR_CLIMATE_HOT_AND_DRY,
|
||||
STR_CLIMATE_COLD,
|
||||
};
|
||||
|
||||
static constexpr const rct_string_id ObjectiveDropdownOptionNames[] = {
|
||||
STR_OBJECTIVE_DROPDOWN_NONE,
|
||||
STR_OBJECTIVE_DROPDOWN_NUMBER_OF_GUESTS_AT_A_GIVEN_DATE,
|
||||
|
@ -70,8 +69,6 @@ enum {
|
|||
WIDX_OBJECTIVE_ARG_2,
|
||||
WIDX_OBJECTIVE_ARG_2_INCREASE,
|
||||
WIDX_OBJECTIVE_ARG_2_DECREASE,
|
||||
WIDX_CLIMATE,
|
||||
WIDX_CLIMATE_DROPDOWN,
|
||||
WIDX_PARK_NAME,
|
||||
WIDX_SCENARIO_NAME,
|
||||
WIDX_CATEGORY,
|
||||
|
@ -86,8 +83,8 @@ enum {
|
|||
{ WWT_CAPTION, 0, 1, 448, 1, 14, STR_OBJECTIVE_SELECTION, STR_WINDOW_TITLE_TIP }, \
|
||||
{ WWT_CLOSEBOX, 0, 437, 447, 2, 13, STR_CLOSE_X, STR_CLOSE_WINDOW_TIP }, \
|
||||
{ WWT_RESIZE, 1, 0, 279, 43, 148, STR_NONE, STR_NONE }, \
|
||||
{ WWT_TAB, 1, 3, 33, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SELECT_OBJECTIVE_AND_PARK_NAME_TIP }, \
|
||||
{ WWT_TAB, 1, 34, 64, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SELECT_RIDES_TO_BE_PRESERVED_TIP }
|
||||
{ WWT_TAB, 1, 3, 33, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SELECT_OBJECTIVE_AND_PARK_NAME_TIP }, \
|
||||
{ WWT_TAB, 1, 34, 64, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SELECT_RIDES_TO_BE_PRESERVED_TIP }
|
||||
|
||||
static rct_widget window_editor_objective_options_main_widgets[] = {
|
||||
MAIN_OBJECTIVE_OPTIONS_WIDGETS,
|
||||
|
@ -95,19 +92,17 @@ static rct_widget window_editor_objective_options_main_widgets[] = {
|
|||
{ WWT_BUTTON, 1, 430, 440, 49, 58, STR_DROPDOWN_GLYPH, STR_SELECT_OBJECTIVE_FOR_THIS_SCENARIO_TIP },
|
||||
SPINNER_WIDGETS (1, 158, 277, 65, 76, STR_NONE, STR_NONE), // NB: 3 widgets
|
||||
SPINNER_WIDGETS (1, 158, 277, 82, 93, STR_NONE, STR_NONE), // NB: 3 widgets
|
||||
{ WWT_DROPDOWN, 1, 98, 277, 99, 110, STR_NONE, STR_SELECT_CLIMATE_TIP },
|
||||
{ WWT_BUTTON, 1, 266, 276, 100, 109, STR_DROPDOWN_GLYPH, STR_SELECT_CLIMATE_TIP },
|
||||
{ WWT_BUTTON, 1, 370, 444, 116, 127, STR_CHANGE, STR_CHANGE_NAME_OF_PARK_TIP },
|
||||
{ WWT_BUTTON, 1, 370, 444, 133, 144, STR_CHANGE, STR_CHANGE_NAME_OF_SCENARIO_TIP },
|
||||
{ WWT_DROPDOWN, 1, 98, 277, 150, 161, STR_NONE, STR_SELECT_WHICH_GROUP_THIS_SCENARIO_APPEARS_IN },
|
||||
{ WWT_BUTTON, 1, 266, 276, 151, 160, STR_DROPDOWN_GLYPH, STR_SELECT_WHICH_GROUP_THIS_SCENARIO_APPEARS_IN },
|
||||
{ WWT_BUTTON, 1, 370, 444, 167, 178, STR_CHANGE, STR_CHANGE_DETAIL_NOTES_ABOUT_PARK_SCENARIO_TIP },
|
||||
{ WWT_BUTTON, 1, 370, 444, 99, 110, STR_CHANGE, STR_CHANGE_NAME_OF_PARK_TIP },
|
||||
{ WWT_BUTTON, 1, 370, 444, 116, 127, STR_CHANGE, STR_CHANGE_NAME_OF_SCENARIO_TIP },
|
||||
{ WWT_DROPDOWN, 1, 98, 277, 133, 144, STR_NONE, STR_SELECT_WHICH_GROUP_THIS_SCENARIO_APPEARS_IN },
|
||||
{ WWT_BUTTON, 1, 266, 276, 134, 143, STR_DROPDOWN_GLYPH, STR_SELECT_WHICH_GROUP_THIS_SCENARIO_APPEARS_IN },
|
||||
{ WWT_BUTTON, 1, 370, 444, 150, 161, STR_CHANGE, STR_CHANGE_DETAIL_NOTES_ABOUT_PARK_SCENARIO_TIP },
|
||||
{ WIDGETS_END }
|
||||
};
|
||||
|
||||
static rct_widget window_editor_objective_options_rides_widgets[] = {
|
||||
MAIN_OBJECTIVE_OPTIONS_WIDGETS,
|
||||
{ WWT_SCROLL, 1, 3, 376, 60, 220, SCROLL_VERTICAL, STR_NONE },
|
||||
{ WWT_SCROLL, 1, 3, 376, 60, 220, SCROLL_VERTICAL, STR_NONE },
|
||||
{ WIDGETS_END }
|
||||
};
|
||||
|
||||
|
@ -222,8 +217,6 @@ static uint64_t window_editor_objective_options_page_enabled_widgets[] = {
|
|||
(1 << WIDX_OBJECTIVE_ARG_1_DECREASE) |
|
||||
(1 << WIDX_OBJECTIVE_ARG_2_INCREASE) |
|
||||
(1 << WIDX_OBJECTIVE_ARG_2_DECREASE) |
|
||||
(1 << WIDX_CLIMATE) |
|
||||
(1 << WIDX_CLIMATE_DROPDOWN) |
|
||||
(1 << WIDX_PARK_NAME) |
|
||||
(1 << WIDX_SCENARIO_NAME) |
|
||||
(1 << WIDX_CATEGORY) |
|
||||
|
@ -501,24 +494,6 @@ static void window_editor_objective_options_show_objective_dropdown(rct_window*
|
|||
}
|
||||
}
|
||||
|
||||
static void window_editor_objective_options_show_climate_dropdown(rct_window* w)
|
||||
{
|
||||
int32_t i;
|
||||
rct_widget* dropdownWidget;
|
||||
|
||||
dropdownWidget = &w->widgets[WIDX_CLIMATE];
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
gDropdownItemsFormat[i] = STR_DROPDOWN_MENU_LABEL;
|
||||
gDropdownItemsArgs[i] = ClimateNames[i];
|
||||
}
|
||||
window_dropdown_show_text_custom_width(
|
||||
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
|
||||
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4, dropdownWidget->right - dropdownWidget->left - 3);
|
||||
dropdown_set_checked(gClimate, true);
|
||||
}
|
||||
|
||||
static void window_editor_objective_options_show_category_dropdown(rct_window* w)
|
||||
{
|
||||
int32_t i;
|
||||
|
@ -714,9 +689,6 @@ static void window_editor_objective_options_main_mousedown(rct_window* w, rct_wi
|
|||
case WIDX_OBJECTIVE_ARG_2_DECREASE:
|
||||
window_editor_objective_options_arg_2_decrease(w);
|
||||
break;
|
||||
case WIDX_CLIMATE_DROPDOWN:
|
||||
window_editor_objective_options_show_climate_dropdown(w);
|
||||
break;
|
||||
case WIDX_CATEGORY_DROPDOWN:
|
||||
window_editor_objective_options_show_category_dropdown(w);
|
||||
break;
|
||||
|
@ -742,13 +714,6 @@ static void window_editor_objective_options_main_dropdown(rct_window* w, rct_wid
|
|||
if (gScenarioObjectiveType != newObjectiveType)
|
||||
window_editor_objective_options_set_objective(w, newObjectiveType);
|
||||
break;
|
||||
case WIDX_CLIMATE_DROPDOWN:
|
||||
if (gClimate != (uint8_t)dropdownIndex)
|
||||
{
|
||||
gClimate = (uint8_t)dropdownIndex;
|
||||
window_invalidate(w);
|
||||
}
|
||||
break;
|
||||
case WIDX_CATEGORY_DROPDOWN:
|
||||
if (gS6Info.category != (uint8_t)dropdownIndex)
|
||||
{
|
||||
|
@ -777,14 +742,12 @@ static void window_editor_objective_options_main_update(rct_window* w)
|
|||
|
||||
// Reset objective if invalid
|
||||
if (((parkFlags & PARK_FLAGS_NO_MONEY_SCENARIO) &&
|
||||
|
||||
// The following objectives are the only valid objectives when there is no money
|
||||
objectiveType != OBJECTIVE_HAVE_FUN && objectiveType != OBJECTIVE_10_ROLLERCOASTERS
|
||||
&& objectiveType != OBJECTIVE_GUESTS_AND_RATING && objectiveType != OBJECTIVE_10_ROLLERCOASTERS_LENGTH
|
||||
&& objectiveType != OBJECTIVE_FINISH_5_ROLLERCOASTERS)
|
||||
|| (
|
||||
// The park must be free for the monthly ride income objective
|
||||
!(parkFlags & PARK_FLAGS_PARK_FREE_ENTRY) && objectiveType == OBJECTIVE_MONTHLY_RIDE_INCOME))
|
||||
// The park must be free for the monthly ride income objective
|
||||
|| (!(parkFlags & PARK_FLAGS_PARK_FREE_ENTRY) && objectiveType == OBJECTIVE_MONTHLY_RIDE_INCOME))
|
||||
{
|
||||
// Reset objective
|
||||
window_editor_objective_options_set_objective(w, OBJECTIVE_GUESTS_AND_RATING);
|
||||
|
@ -975,17 +938,6 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi
|
|||
gfx_draw_string_left(dpi, STR_WINDOW_OBJECTIVE_VALUE_DATE, &arg, COLOUR_BLACK, x, y);
|
||||
}
|
||||
|
||||
// Climate label
|
||||
x = w->x + 8;
|
||||
y = w->y + w->widgets[WIDX_CLIMATE].top;
|
||||
gfx_draw_string_left(dpi, STR_CLIMATE_LABEL, nullptr, COLOUR_BLACK, x, y);
|
||||
|
||||
// Climate value
|
||||
x = w->x + w->widgets[WIDX_CLIMATE].left + 1;
|
||||
y = w->y + w->widgets[WIDX_CLIMATE].top;
|
||||
stringId = ClimateNames[gClimate];
|
||||
gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, x, y);
|
||||
|
||||
// Park name
|
||||
x = w->x + 8;
|
||||
y = w->y + w->widgets[WIDX_PARK_NAME].top;
|
||||
|
|
|
@ -7,19 +7,24 @@
|
|||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "../interface/Dropdown.h"
|
||||
#include "../interface/Widget.h"
|
||||
#include "../interface/Window.h"
|
||||
#include "Window.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <openrct2-ui/interface/Dropdown.h>
|
||||
#include <openrct2-ui/interface/Widget.h>
|
||||
#include <openrct2-ui/windows/Window.h>
|
||||
#include <openrct2/Context.h>
|
||||
#include <openrct2/Editor.h>
|
||||
#include <openrct2/Game.h>
|
||||
#include <openrct2/OpenRCT2.h>
|
||||
#include <openrct2/actions/ClimateSetAction.hpp>
|
||||
#include <openrct2/drawing/Drawing.h>
|
||||
#include <openrct2/localisation/Localisation.h>
|
||||
#include <openrct2/interface/Colour.h>
|
||||
#include <openrct2/localisation/StringIds.h>
|
||||
#include <openrct2/management/Finance.h>
|
||||
#include <openrct2/peep/Peep.h>
|
||||
#include <openrct2/sprites.h>
|
||||
#include <openrct2/world/Climate.h>
|
||||
#include <openrct2/world/Park.h>
|
||||
|
||||
#pragma region Widgets
|
||||
|
@ -32,6 +37,13 @@ enum {
|
|||
WINDOW_EDITOR_SCENARIO_OPTIONS_PAGE_COUNT
|
||||
};
|
||||
|
||||
static constexpr const rct_string_id ClimateNames[] = {
|
||||
STR_CLIMATE_COOL_AND_WET,
|
||||
STR_CLIMATE_WARM,
|
||||
STR_CLIMATE_HOT_AND_DRY,
|
||||
STR_CLIMATE_COLD,
|
||||
};
|
||||
|
||||
enum {
|
||||
WIDX_BACKGROUND,
|
||||
WIDX_TITLE,
|
||||
|
@ -40,8 +52,10 @@ enum {
|
|||
WIDX_TAB_1,
|
||||
WIDX_TAB_2,
|
||||
WIDX_TAB_3,
|
||||
WIDX_PAGE_START,
|
||||
|
||||
WIDX_NO_MONEY = 7,
|
||||
// Financial tab
|
||||
WIDX_NO_MONEY = WIDX_PAGE_START,
|
||||
WIDX_INITIAL_CASH,
|
||||
WIDX_INITIAL_CASH_INCREASE,
|
||||
WIDX_INITIAL_CASH_DECREASE,
|
||||
|
@ -56,7 +70,8 @@ enum {
|
|||
WIDX_INTEREST_RATE_DECREASE,
|
||||
WIDX_FORBID_MARKETING,
|
||||
|
||||
WIDX_CASH_PER_GUEST = 7,
|
||||
// Guests tab
|
||||
WIDX_CASH_PER_GUEST = WIDX_PAGE_START,
|
||||
WIDX_CASH_PER_GUEST_INCREASE,
|
||||
WIDX_CASH_PER_GUEST_DECREASE,
|
||||
WIDX_GUEST_INITIAL_HAPPINESS,
|
||||
|
@ -71,7 +86,8 @@ enum {
|
|||
WIDX_GUEST_PREFER_LESS_INTENSE_RIDES,
|
||||
WIDX_GUEST_PREFER_MORE_INTENSE_RIDES,
|
||||
|
||||
WIDX_LAND_COST = 7,
|
||||
// Park tab
|
||||
WIDX_LAND_COST = WIDX_PAGE_START,
|
||||
WIDX_LAND_COST_INCREASE,
|
||||
WIDX_LAND_COST_DECREASE,
|
||||
WIDX_CONSTRUCTION_RIGHTS_COST,
|
||||
|
@ -82,6 +98,8 @@ enum {
|
|||
WIDX_ENTRY_PRICE,
|
||||
WIDX_ENTRY_PRICE_INCREASE,
|
||||
WIDX_ENTRY_PRICE_DECREASE,
|
||||
WIDX_CLIMATE,
|
||||
WIDX_CLIMATE_DROPDOWN,
|
||||
WIDX_FORBID_TREE_REMOVAL,
|
||||
WIDX_FORBID_LANDSCAPE_CHANGES,
|
||||
WIDX_FORBID_HIGH_CONSTRUCTION,
|
||||
|
@ -94,9 +112,9 @@ static rct_widget window_editor_scenario_options_financial_widgets[] = {
|
|||
{ WWT_CAPTION, 0, 1, 278, 1, 14, STR_SCENARIO_OPTIONS_FINANCIAL, STR_WINDOW_TITLE_TIP },
|
||||
{ WWT_CLOSEBOX, 0, 267, 277, 2, 13, STR_CLOSE_X, STR_CLOSE_WINDOW_TIP },
|
||||
{ WWT_RESIZE, 1, 0, 279, 43, 148, STR_NONE, STR_NONE },
|
||||
{ WWT_TAB, 1, 3, 33, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_FINANCIAL_TIP },
|
||||
{ WWT_TAB, 1, 34, 64, 17, 46, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_GUESTS_TIP },
|
||||
{ WWT_TAB, 1, 65, 95, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_PARK_TIP },
|
||||
{ WWT_TAB, 1, 3, 33, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_FINANCIAL_TIP },
|
||||
{ WWT_TAB, 1, 34, 64, 17, 46, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_GUESTS_TIP },
|
||||
{ WWT_TAB, 1, 65, 95, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_PARK_TIP },
|
||||
|
||||
{ WWT_CHECKBOX, 1, 8, 271, 48, 59, STR_MAKE_PARK_NO_MONEY, STR_MAKE_PARK_NO_MONEY_TIP },
|
||||
SPINNER_WIDGETS (1, 168, 267, 65, 76, STR_NONE, STR_NONE ), // NB: 3 widgets
|
||||
|
@ -112,9 +130,9 @@ static rct_widget window_editor_scenario_options_guests_widgets[] = {
|
|||
{ WWT_CAPTION, 0, 1, 278, 1, 14, STR_SCENARIO_OPTIONS_GUESTS, STR_WINDOW_TITLE_TIP },
|
||||
{ WWT_CLOSEBOX, 0, 267, 277, 2, 13, STR_CLOSE_X, STR_CLOSE_WINDOW_TIP },
|
||||
{ WWT_RESIZE, 1, 0, 279, 43, 148, STR_NONE, STR_NONE },
|
||||
{ WWT_TAB, 1, 3, 33, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_FINANCIAL_TIP },
|
||||
{ WWT_TAB, 1, 34, 64, 17, 46, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_GUESTS_TIP },
|
||||
{ WWT_TAB, 1, 65, 95, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_PARK_TIP },
|
||||
{ WWT_TAB, 1, 3, 33, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_FINANCIAL_TIP },
|
||||
{ WWT_TAB, 1, 34, 64, 17, 46, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_GUESTS_TIP },
|
||||
{ WWT_TAB, 1, 65, 95, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_PARK_TIP },
|
||||
|
||||
SPINNER_WIDGETS (1, 268, 337, 48, 59, STR_NONE, STR_NONE ), // NB: 3 widgets
|
||||
SPINNER_WIDGETS (1, 268, 337, 65, 76, STR_NONE, STR_NONE ), // NB: 3 widgets
|
||||
|
@ -130,20 +148,22 @@ static rct_widget window_editor_scenario_options_park_widgets[] = {
|
|||
{ WWT_CAPTION, 0, 1, 278, 1, 14, STR_SCENARIO_OPTIONS_PARK, STR_WINDOW_TITLE_TIP },
|
||||
{ WWT_CLOSEBOX, 0, 267, 277, 2, 13, STR_CLOSE_X, STR_CLOSE_WINDOW_TIP },
|
||||
{ WWT_RESIZE, 1, 0, 279, 43, 148, STR_NONE, STR_NONE },
|
||||
{ WWT_TAB, 1, 3, 33, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_FINANCIAL_TIP },
|
||||
{ WWT_TAB, 1, 34, 64, 17, 46, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_GUESTS_TIP },
|
||||
{ WWT_TAB, 1, 65, 95, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_PARK_TIP },
|
||||
{ WWT_TAB, 1, 3, 33, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_FINANCIAL_TIP },
|
||||
{ WWT_TAB, 1, 34, 64, 17, 46, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_GUESTS_TIP },
|
||||
{ WWT_TAB, 1, 65, 95, 17, 43, IMAGE_TYPE_REMAP | SPR_TAB, STR_SCENARIO_OPTIONS_PARK_TIP },
|
||||
|
||||
SPINNER_WIDGETS (1, 188, 257, 48, 59, STR_NONE, STR_NONE ), // NB: 3 widgets
|
||||
SPINNER_WIDGETS (1, 188, 257, 65, 76, STR_NONE, STR_NONE ), // NB: 3 widgets
|
||||
{ WWT_DROPDOWN, 1, 8, 217, 82, 93, STR_NONE, STR_PAY_FOR_PARK_PAY_FOR_RIDES_TIP },
|
||||
{ WWT_BUTTON, 1, 206, 216, 83, 92, STR_DROPDOWN_GLYPH, STR_PAY_FOR_PARK_PAY_FOR_RIDES_TIP },
|
||||
SPINNER_WIDGETS (1, 328, 397, 82, 93, STR_NONE, STR_NONE ), // NB: 3 widgets
|
||||
{ WWT_CHECKBOX, 1, 8, 391, 99, 110, STR_FORBID_TREE_REMOVAL, STR_FORBID_TREE_REMOVAL_TIP },
|
||||
{ WWT_CHECKBOX, 1, 8, 391, 116, 127, STR_FORBID_LANDSCAPE_CHANGES, STR_FORBID_LANDSCAPE_CHANGES_TIP },
|
||||
{ WWT_CHECKBOX, 1, 8, 391, 133, 144, STR_FORBID_HIGH_CONSTRUCTION, STR_FORBID_HIGH_CONSTRUCTION_TIP },
|
||||
{ WWT_CHECKBOX, 1, 8, 391, 150, 161, STR_HARD_PARK_RATING, STR_HARD_PARK_RATING_TIP },
|
||||
{ WWT_CHECKBOX, 1, 8, 391, 167, 178, STR_HARD_GUEST_GENERATION, STR_HARD_GUEST_GENERATION_TIP },
|
||||
SPINNER_WIDGETS (1, 328, 394, 82, 93, STR_NONE, STR_NONE ), // NB: 3 widgets
|
||||
{ WWT_DROPDOWN, 1, 188, 394, 99, 110, STR_NONE, STR_SELECT_CLIMATE_TIP },
|
||||
{ WWT_BUTTON, 1, 383, 393, 100, 109, STR_DROPDOWN_GLYPH, STR_SELECT_CLIMATE_TIP },
|
||||
{ WWT_CHECKBOX, 1, 8, 391, 116, 127, STR_FORBID_TREE_REMOVAL, STR_FORBID_TREE_REMOVAL_TIP },
|
||||
{ WWT_CHECKBOX, 1, 8, 391, 133, 144, STR_FORBID_LANDSCAPE_CHANGES, STR_FORBID_LANDSCAPE_CHANGES_TIP },
|
||||
{ WWT_CHECKBOX, 1, 8, 391, 150, 161, STR_FORBID_HIGH_CONSTRUCTION, STR_FORBID_HIGH_CONSTRUCTION_TIP },
|
||||
{ WWT_CHECKBOX, 1, 8, 391, 167, 178, STR_HARD_PARK_RATING, STR_HARD_PARK_RATING_TIP },
|
||||
{ WWT_CHECKBOX, 1, 8, 391, 184, 195, STR_HARD_GUEST_GENERATION, STR_HARD_GUEST_GENERATION_TIP },
|
||||
{ WIDGETS_END }
|
||||
};
|
||||
|
||||
|
@ -323,6 +343,8 @@ static uint64_t window_editor_scenario_options_page_enabled_widgets[] = {
|
|||
(1ULL << WIDX_PAY_FOR_PARK_OR_RIDES_DROPDOWN) |
|
||||
(1ULL << WIDX_ENTRY_PRICE_INCREASE) |
|
||||
(1ULL << WIDX_ENTRY_PRICE_DECREASE) |
|
||||
(1ULL << WIDX_CLIMATE) |
|
||||
(1ULL << WIDX_CLIMATE_DROPDOWN) |
|
||||
(1ULL << WIDX_FORBID_TREE_REMOVAL) |
|
||||
(1ULL << WIDX_FORBID_LANDSCAPE_CHANGES) |
|
||||
(1ULL << WIDX_FORBID_HIGH_CONSTRUCTION) |
|
||||
|
@ -510,6 +532,24 @@ static void window_editor_scenario_options_financial_resize(rct_window* w)
|
|||
window_set_resize(w, 280, 149, 280, 149);
|
||||
}
|
||||
|
||||
static void window_editor_scenario_options_show_climate_dropdown(rct_window* w)
|
||||
{
|
||||
int32_t i;
|
||||
rct_widget* dropdownWidget;
|
||||
|
||||
dropdownWidget = &w->widgets[WIDX_CLIMATE];
|
||||
|
||||
for (i = 0; i < CLIMATE_COUNT; i++)
|
||||
{
|
||||
gDropdownItemsFormat[i] = STR_DROPDOWN_MENU_LABEL;
|
||||
gDropdownItemsArgs[i] = ClimateNames[i];
|
||||
}
|
||||
window_dropdown_show_text_custom_width(
|
||||
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
|
||||
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, CLIMATE_COUNT, dropdownWidget->right - dropdownWidget->left - 3);
|
||||
dropdown_set_checked(gClimate, true);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006704C8
|
||||
|
@ -1095,7 +1135,7 @@ static void window_editor_scenario_options_park_mouseup(rct_window* w, rct_widge
|
|||
*/
|
||||
static void window_editor_scenario_options_park_resize(rct_window* w)
|
||||
{
|
||||
window_set_resize(w, 400, 183, 400, 183);
|
||||
window_set_resize(w, 400, 200, 400, 200);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1208,6 +1248,9 @@ static void window_editor_scenario_options_park_mousedown(rct_window* w, rct_wid
|
|||
dropdown_set_checked(1, true);
|
||||
|
||||
break;
|
||||
case WIDX_CLIMATE_DROPDOWN:
|
||||
window_editor_scenario_options_show_climate_dropdown(w);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1217,12 +1260,27 @@ static void window_editor_scenario_options_park_mousedown(rct_window* w, rct_wid
|
|||
*/
|
||||
static void window_editor_scenario_options_park_dropdown(rct_window* w, rct_widgetindex widgetIndex, int32_t dropdownIndex)
|
||||
{
|
||||
if (widgetIndex == WIDX_PAY_FOR_PARK_OR_RIDES_DROPDOWN && dropdownIndex != -1)
|
||||
if (dropdownIndex == -1)
|
||||
{
|
||||
game_do_command(
|
||||
0, GAME_COMMAND_FLAG_APPLY, EDIT_SCENARIOOPTIONS_SETPARKCHARGEMETHOD, dropdownIndex,
|
||||
GAME_COMMAND_EDIT_SCENARIO_OPTIONS, 0, 0);
|
||||
window_invalidate(w);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (widgetIndex)
|
||||
{
|
||||
case WIDX_PAY_FOR_PARK_OR_RIDES_DROPDOWN:
|
||||
game_do_command(
|
||||
0, GAME_COMMAND_FLAG_APPLY, EDIT_SCENARIOOPTIONS_SETPARKCHARGEMETHOD, dropdownIndex,
|
||||
GAME_COMMAND_EDIT_SCENARIO_OPTIONS, 0, 0);
|
||||
window_invalidate(w);
|
||||
break;
|
||||
|
||||
case WIDX_CLIMATE_DROPDOWN:
|
||||
if (gClimate != (uint8_t)dropdownIndex)
|
||||
{
|
||||
auto gameAction = ClimateSetAction(dropdownIndex);
|
||||
GameActions::Execute(&gameAction);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1382,6 +1440,17 @@ static void window_editor_scenario_options_park_paint(rct_window* w, rct_drawpix
|
|||
arg = gParkEntranceFee;
|
||||
gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y);
|
||||
}
|
||||
|
||||
// Climate label
|
||||
x = w->x + 8;
|
||||
y = w->y + w->widgets[WIDX_CLIMATE].top;
|
||||
gfx_draw_string_left(dpi, STR_CLIMATE_LABEL, nullptr, COLOUR_BLACK, x, y);
|
||||
|
||||
// Climate value
|
||||
x = w->x + w->widgets[WIDX_CLIMATE].left + 1;
|
||||
y = w->y + w->widgets[WIDX_CLIMATE].top;
|
||||
stringId = ClimateNames[gClimate];
|
||||
gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, x, y);
|
||||
}
|
||||
|
||||
#pragma endregion
|
||||
|
|
|
@ -89,7 +89,8 @@ enum GAME_COMMAND
|
|||
GAME_COMMAND_MODIFY_TILE,
|
||||
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
|
||||
GAME_COMMAND_PLACE_PEEP_SPAWN, // GA, TODO: refactor to separate array for just game actions
|
||||
GAME_COMMAND_COUNT
|
||||
GAME_COMMAND_SET_CLIMATE, // GA
|
||||
GAME_COMMAND_COUNT,
|
||||
};
|
||||
|
||||
enum : uint32_t
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2018 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
*
|
||||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../world/Climate.h"
|
||||
#include "GameAction.h"
|
||||
|
||||
struct ClimateSetAction : public GameActionBase<GAME_COMMAND_SET_CLIMATE, GameActionResult>
|
||||
{
|
||||
using climate_t = decltype(gClimate);
|
||||
|
||||
private:
|
||||
climate_t _climate;
|
||||
|
||||
public:
|
||||
ClimateSetAction() = default;
|
||||
ClimateSetAction(climate_t climate)
|
||||
: _climate(climate)
|
||||
{
|
||||
}
|
||||
|
||||
uint16_t GetActionFlags() const override
|
||||
{
|
||||
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
|
||||
}
|
||||
|
||||
void Serialise(DataSerialiser& stream) override
|
||||
{
|
||||
GameAction::Serialise(stream);
|
||||
|
||||
stream << _climate;
|
||||
}
|
||||
|
||||
GameActionResult::Ptr Query() const override
|
||||
{
|
||||
if (_climate >= CLIMATE_COUNT)
|
||||
{
|
||||
return std::make_unique<GameActionResult>(GA_ERROR::INVALID_PARAMETERS, STR_INVALID_CLIMATE_ID, STR_NONE);
|
||||
}
|
||||
|
||||
return std::make_unique<GameActionResult>();
|
||||
}
|
||||
|
||||
GameActionResult::Ptr Execute() const override
|
||||
{
|
||||
gClimate = _climate;
|
||||
|
||||
gfx_invalidate_screen();
|
||||
|
||||
return std::make_unique<GameActionResult>();
|
||||
}
|
||||
};
|
|
@ -8,6 +8,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#include "BannerSetNameAction.hpp"
|
||||
#include "ClimateSetAction.hpp"
|
||||
#include "FootpathRemoveAction.hpp"
|
||||
#include "GameAction.h"
|
||||
#include "GuestSetNameAction.hpp"
|
||||
|
@ -32,24 +33,25 @@ namespace GameActions
|
|||
{
|
||||
void Register()
|
||||
{
|
||||
Register<SetParkEntranceFeeAction>();
|
||||
Register<BannerSetNameAction>();
|
||||
Register<ClimateSetAction>();
|
||||
Register<FootpathRemoveAction>();
|
||||
Register<GuestSetNameAction>();
|
||||
Register<MazeSetTrackAction>();
|
||||
Register<ParkMarketingAction>();
|
||||
Register<ParkSetLoanAction>();
|
||||
Register<ParkSetNameAction>();
|
||||
Register<ParkSetResearchFundingAction>();
|
||||
Register<PlaceParkEntranceAction>();
|
||||
Register<PlacePeepSpawnAction>();
|
||||
Register<RideCreateAction>();
|
||||
Register<RideSetStatusAction>();
|
||||
Register<RideSetNameAction>();
|
||||
Register<RideDemolishAction>();
|
||||
Register<GuestSetNameAction>();
|
||||
Register<RideSetNameAction>();
|
||||
Register<RideSetStatusAction>();
|
||||
Register<SetParkEntranceFeeAction>();
|
||||
Register<SignSetNameAction>();
|
||||
Register<StaffSetColourAction>();
|
||||
Register<StaffSetNameAction>();
|
||||
Register<PlacePeepSpawnAction>();
|
||||
Register<MazeSetTrackAction>();
|
||||
Register<SignSetNameAction>();
|
||||
Register<ParkSetNameAction>();
|
||||
Register<BannerSetNameAction>();
|
||||
Register<WallRemoveAction>();
|
||||
Register<FootpathRemoveAction>();
|
||||
}
|
||||
} // namespace GameActions
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "../Game.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../Version.h"
|
||||
#include "../actions/ClimateSetAction.hpp"
|
||||
#include "../config/Config.h"
|
||||
#include "../core/Guard.hpp"
|
||||
#include "../core/String.hpp"
|
||||
|
@ -49,9 +50,15 @@
|
|||
|
||||
#ifndef NO_TTF
|
||||
# include "../drawing/TTF.h"
|
||||
|
||||
#endif
|
||||
|
||||
static constexpr const utf8* ClimateNames[] = {
|
||||
"cool_and_wet",
|
||||
"warm",
|
||||
"hot_and_dry",
|
||||
"cold",
|
||||
};
|
||||
|
||||
static void console_write_all_commands(InteractiveConsole& console);
|
||||
static int32_t console_parse_int(const utf8* src, bool* valid);
|
||||
static double console_parse_double(const utf8* src, bool* valid);
|
||||
|
@ -558,8 +565,7 @@ static int32_t cc_get(InteractiveConsole& console, const utf8** argv, int32_t ar
|
|||
}
|
||||
else if (strcmp(argv[0], "climate") == 0)
|
||||
{
|
||||
const utf8* climate_names[] = { "cool_and_wet", "warm", "hot_and_dry", "cold" };
|
||||
console.WriteFormatLine("climate %s (%d)", climate_names[gClimate], gClimate);
|
||||
console.WriteFormatLine("climate %s (%d)", ClimateNames[gClimate], gClimate);
|
||||
}
|
||||
else if (strcmp(argv[0], "game_speed") == 0)
|
||||
{
|
||||
|
@ -804,21 +810,30 @@ static int32_t cc_set(InteractiveConsole& console, const utf8** argv, int32_t ar
|
|||
{
|
||||
if (int_valid[0])
|
||||
{
|
||||
gClimate = std::clamp(int_val[0], 0, 3);
|
||||
const auto newClimate = int_val[0];
|
||||
if (newClimate < 0 || newClimate >= CLIMATE_COUNT)
|
||||
{
|
||||
console.WriteLine(language_get_string(STR_INVALID_CLIMATE_ID));
|
||||
}
|
||||
else
|
||||
{
|
||||
auto gameAction = ClimateSetAction(newClimate);
|
||||
GameActions::Execute(&gameAction);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
const utf8* climate_names[] = { "cool_and_wet", "warm", "hot_and_dry", "cold" };
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CLIMATE_COUNT; i++)
|
||||
{
|
||||
if (strcmp(argv[1], climate_names[i]) == 0)
|
||||
if (strcmp(argv[1], ClimateNames[i]) == 0)
|
||||
{
|
||||
gClimate = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (i == 4)
|
||||
|
||||
if (i == CLIMATE_COUNT)
|
||||
invalidArgs = true;
|
||||
else
|
||||
console.Execute("get climate");
|
||||
|
|
|
@ -3897,6 +3897,8 @@ enum
|
|||
|
||||
STR_ADVANCE_TO_NEXT_TICK = 6268,
|
||||
|
||||
STR_INVALID_CLIMATE_ID = 6269,
|
||||
|
||||
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
|
||||
STR_COUNT = 32768
|
||||
};
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
// This string 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 "8"
|
||||
#define NETWORK_STREAM_VERSION "9"
|
||||
#define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION
|
||||
|
||||
static rct_peep* _pickup_peep = nullptr;
|
||||
|
|
|
@ -47,47 +47,58 @@ int32_t NetworkActions::FindCommandByPermissionName(const std::string& permissio
|
|||
return -1;
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
const std::vector<NetworkAction> NetworkActions::Actions =
|
||||
{
|
||||
const std::vector<NetworkAction> NetworkActions::Actions = {
|
||||
{
|
||||
STR_ACTION_CHAT, "PERMISSION_CHAT",
|
||||
STR_ACTION_CHAT,
|
||||
"PERMISSION_CHAT",
|
||||
{
|
||||
MISC_COMMAND_CHAT
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_TERRAFORM, "PERMISSION_TERRAFORM",
|
||||
MISC_COMMAND_CHAT,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_TERRAFORM,
|
||||
"PERMISSION_TERRAFORM",
|
||||
{
|
||||
GAME_COMMAND_SET_LAND_HEIGHT,
|
||||
GAME_COMMAND_RAISE_LAND,
|
||||
GAME_COMMAND_LOWER_LAND,
|
||||
GAME_COMMAND_EDIT_LAND_SMOOTH,
|
||||
GAME_COMMAND_CHANGE_SURFACE_STYLE
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_SET_WATER_LEVEL, "PERMISSION_SET_WATER_LEVEL",
|
||||
GAME_COMMAND_CHANGE_SURFACE_STYLE,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_SET_WATER_LEVEL,
|
||||
"PERMISSION_SET_WATER_LEVEL",
|
||||
{
|
||||
GAME_COMMAND_SET_WATER_HEIGHT,
|
||||
GAME_COMMAND_RAISE_WATER,
|
||||
GAME_COMMAND_LOWER_WATER
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_TOGGLE_PAUSE, "PERMISSION_TOGGLE_PAUSE",
|
||||
GAME_COMMAND_LOWER_WATER,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_TOGGLE_PAUSE,
|
||||
"PERMISSION_TOGGLE_PAUSE",
|
||||
{
|
||||
GAME_COMMAND_TOGGLE_PAUSE
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_CREATE_RIDE, "PERMISSION_CREATE_RIDE",
|
||||
GAME_COMMAND_TOGGLE_PAUSE,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_CREATE_RIDE,
|
||||
"PERMISSION_CREATE_RIDE",
|
||||
{
|
||||
GAME_COMMAND_CREATE_RIDE
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_REMOVE_RIDE, "PERMISSION_REMOVE_RIDE",
|
||||
GAME_COMMAND_CREATE_RIDE,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_REMOVE_RIDE,
|
||||
"PERMISSION_REMOVE_RIDE",
|
||||
{
|
||||
GAME_COMMAND_DEMOLISH_RIDE
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_BUILD_RIDE, "PERMISSION_BUILD_RIDE",
|
||||
GAME_COMMAND_DEMOLISH_RIDE,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_BUILD_RIDE,
|
||||
"PERMISSION_BUILD_RIDE",
|
||||
{
|
||||
GAME_COMMAND_PLACE_TRACK,
|
||||
GAME_COMMAND_REMOVE_TRACK,
|
||||
|
@ -95,10 +106,12 @@ const std::vector<NetworkAction> NetworkActions::Actions =
|
|||
GAME_COMMAND_PLACE_TRACK_DESIGN,
|
||||
GAME_COMMAND_PLACE_MAZE_DESIGN,
|
||||
GAME_COMMAND_PLACE_RIDE_ENTRANCE_OR_EXIT,
|
||||
GAME_COMMAND_REMOVE_RIDE_ENTRANCE_OR_EXIT
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_RIDE_PROPERTIES, "PERMISSION_RIDE_PROPERTIES",
|
||||
GAME_COMMAND_REMOVE_RIDE_ENTRANCE_OR_EXIT,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_RIDE_PROPERTIES,
|
||||
"PERMISSION_RIDE_PROPERTIES",
|
||||
{
|
||||
GAME_COMMAND_SET_RIDE_NAME,
|
||||
GAME_COMMAND_SET_RIDE_APPEARANCE,
|
||||
|
@ -106,10 +119,12 @@ const std::vector<NetworkAction> NetworkActions::Actions =
|
|||
GAME_COMMAND_SET_RIDE_VEHICLES,
|
||||
GAME_COMMAND_SET_RIDE_SETTING,
|
||||
GAME_COMMAND_SET_RIDE_PRICE,
|
||||
GAME_COMMAND_SET_BRAKES_SPEED
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_SCENERY, "PERMISSION_SCENERY",
|
||||
GAME_COMMAND_SET_BRAKES_SPEED,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_SCENERY,
|
||||
"PERMISSION_SCENERY",
|
||||
{
|
||||
GAME_COMMAND_REMOVE_SCENERY,
|
||||
GAME_COMMAND_PLACE_SCENERY,
|
||||
|
@ -127,29 +142,37 @@ const std::vector<NetworkAction> NetworkActions::Actions =
|
|||
GAME_COMMAND_SET_BANNER_NAME,
|
||||
GAME_COMMAND_SET_SIGN_NAME,
|
||||
GAME_COMMAND_SET_BANNER_STYLE,
|
||||
GAME_COMMAND_SET_SIGN_STYLE
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_PATH, "PERMISSION_PATH",
|
||||
GAME_COMMAND_SET_SIGN_STYLE,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_PATH,
|
||||
"PERMISSION_PATH",
|
||||
{
|
||||
GAME_COMMAND_PLACE_PATH,
|
||||
GAME_COMMAND_PLACE_PATH_FROM_TRACK,
|
||||
GAME_COMMAND_REMOVE_PATH
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_CLEAR_LANDSCAPE, "PERMISSION_CLEAR_LANDSCAPE",
|
||||
GAME_COMMAND_REMOVE_PATH,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_CLEAR_LANDSCAPE,
|
||||
"PERMISSION_CLEAR_LANDSCAPE",
|
||||
{
|
||||
GAME_COMMAND_CLEAR_SCENERY
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_GUEST, "PERMISSION_GUEST",
|
||||
GAME_COMMAND_CLEAR_SCENERY,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_GUEST,
|
||||
"PERMISSION_GUEST",
|
||||
{
|
||||
GAME_COMMAND_SET_GUEST_NAME,
|
||||
GAME_COMMAND_PICKUP_GUEST,
|
||||
GAME_COMMAND_BALLOON_PRESS
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_STAFF, "PERMISSION_STAFF",
|
||||
GAME_COMMAND_BALLOON_PRESS,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_STAFF,
|
||||
"PERMISSION_STAFF",
|
||||
{
|
||||
GAME_COMMAND_HIRE_NEW_STAFF_MEMBER,
|
||||
GAME_COMMAND_SET_STAFF_PATROL,
|
||||
|
@ -157,10 +180,12 @@ const std::vector<NetworkAction> NetworkActions::Actions =
|
|||
GAME_COMMAND_SET_STAFF_ORDER,
|
||||
GAME_COMMAND_SET_STAFF_COLOUR,
|
||||
GAME_COMMAND_SET_STAFF_NAME,
|
||||
GAME_COMMAND_PICKUP_STAFF
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_PARK_PROPERTIES, "PERMISSION_PARK_PROPERTIES",
|
||||
GAME_COMMAND_PICKUP_STAFF,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_PARK_PROPERTIES,
|
||||
"PERMISSION_PARK_PROPERTIES",
|
||||
{
|
||||
GAME_COMMAND_SET_PARK_NAME,
|
||||
GAME_COMMAND_SET_PARK_OPEN,
|
||||
|
@ -170,56 +195,74 @@ const std::vector<NetworkAction> NetworkActions::Actions =
|
|||
GAME_COMMAND_PLACE_PARK_ENTRANCE,
|
||||
GAME_COMMAND_REMOVE_PARK_ENTRANCE,
|
||||
GAME_COMMAND_PLACE_PEEP_SPAWN,
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_PARK_FUNDING, "PERMISSION_PARK_FUNDING",
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_PARK_FUNDING,
|
||||
"PERMISSION_PARK_FUNDING",
|
||||
{
|
||||
GAME_COMMAND_SET_CURRENT_LOAN,
|
||||
GAME_COMMAND_SET_RESEARCH_FUNDING,
|
||||
GAME_COMMAND_START_MARKETING_CAMPAIGN
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_KICK_PLAYER, "PERMISSION_KICK_PLAYER",
|
||||
GAME_COMMAND_START_MARKETING_CAMPAIGN,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_KICK_PLAYER,
|
||||
"PERMISSION_KICK_PLAYER",
|
||||
{
|
||||
GAME_COMMAND_KICK_PLAYER
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_MODIFY_GROUPS, "PERMISSION_MODIFY_GROUPS",
|
||||
GAME_COMMAND_KICK_PLAYER,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_MODIFY_GROUPS,
|
||||
"PERMISSION_MODIFY_GROUPS",
|
||||
{
|
||||
GAME_COMMAND_MODIFY_GROUPS
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_SET_PLAYER_GROUP, "PERMISSION_SET_PLAYER_GROUP",
|
||||
GAME_COMMAND_MODIFY_GROUPS,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_SET_PLAYER_GROUP,
|
||||
"PERMISSION_SET_PLAYER_GROUP",
|
||||
{
|
||||
GAME_COMMAND_SET_PLAYER_GROUP
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_CHEAT, "PERMISSION_CHEAT",
|
||||
GAME_COMMAND_SET_PLAYER_GROUP,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_CHEAT,
|
||||
"PERMISSION_CHEAT",
|
||||
{
|
||||
GAME_COMMAND_CHEAT
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_TOGGLE_SCENERY_CLUSTER, "PERMISSION_TOGGLE_SCENERY_CLUSTER",
|
||||
GAME_COMMAND_CHEAT,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_TOGGLE_SCENERY_CLUSTER,
|
||||
"PERMISSION_TOGGLE_SCENERY_CLUSTER",
|
||||
{
|
||||
MISC_COMMAND_TOGGLE_SCENERY_CLUSTER
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_PASSWORDLESS_LOGIN, "PERMISSION_PASSWORDLESS_LOGIN",
|
||||
MISC_COMMAND_TOGGLE_SCENERY_CLUSTER,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_PASSWORDLESS_LOGIN,
|
||||
"PERMISSION_PASSWORDLESS_LOGIN",
|
||||
{
|
||||
MISC_COMMAND_PASSWORDLESS_LOGIN
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_MODIFY_TILE, "PERMISSION_MODIFY_TILE",
|
||||
MISC_COMMAND_PASSWORDLESS_LOGIN,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_MODIFY_TILE,
|
||||
"PERMISSION_MODIFY_TILE",
|
||||
{
|
||||
GAME_COMMAND_MODIFY_TILE
|
||||
}
|
||||
}, {
|
||||
STR_ACTION_EDIT_SCENARIO_OPTIONS, "PERMISSION_EDIT_SCENARIO_OPTIONS",
|
||||
GAME_COMMAND_MODIFY_TILE,
|
||||
},
|
||||
},
|
||||
{
|
||||
STR_ACTION_EDIT_SCENARIO_OPTIONS,
|
||||
"PERMISSION_EDIT_SCENARIO_OPTIONS",
|
||||
{
|
||||
GAME_COMMAND_EDIT_SCENARIO_OPTIONS
|
||||
}
|
||||
}
|
||||
GAME_COMMAND_EDIT_SCENARIO_OPTIONS,
|
||||
GAME_COMMAND_SET_CLIMATE,
|
||||
},
|
||||
},
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
#endif
|
||||
|
|
|
@ -17,7 +17,8 @@ enum CLIMATE
|
|||
CLIMATE_COOL_AND_WET,
|
||||
CLIMATE_WARM,
|
||||
CLIMATE_HOT_AND_DRY,
|
||||
CLIMATE_COLD
|
||||
CLIMATE_COLD,
|
||||
CLIMATE_COUNT,
|
||||
};
|
||||
|
||||
enum WEATHER
|
||||
|
|
Loading…
Reference in New Issue