1 /*****************************************************************************
2  * Copyright (c) 2014-2020 OpenRCT2 developers
3  *
4  * For a complete list of all authors, please refer to contributors.md
5  * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
6  *
7  * OpenRCT2 is licensed under the GNU General Public License version 3.
8  *****************************************************************************/
9 
10 #pragma once
11 
12 #include "GameAction.h"
13 
14 enum class ScenarioSetSetting : uint8_t
15 {
16     NoMoney,
17     InitialCash,
18     InitialLoan,
19     MaximumLoanSize,
20     AnnualInterestRate,
21     ForbidMarketingCampaigns,
22     AverageCashPerGuest,
23     GuestInitialHappiness,
24     GuestInitialHunger,
25     GuestInitialThirst,
26     GuestsPreferLessIntenseRides,
27     GuestsPreferMoreIntenseRides,
28     CostToBuyLand,
29     CostToBuyConstructionRights,
30     ParkChargeMethod,
31     ParkChargeEntryFee,
32     ForbidTreeRemoval,
33     ForbidLandscapeChanges,
34     ForbidHighConstruction,
35     ParkRatingHigherDifficultyLevel,
36     GuestGenerationHigherDifficultyLevel,
37     AllowEarlyCompletion,
38     Count
39 };
40 
41 class ScenarioSetSettingAction final : public GameActionBase<GameCommand::EditScenarioOptions>
42 {
43 private:
44     ScenarioSetSetting _setting{ ScenarioSetSetting::Count };
45     uint32_t _value{};
46 
47 public:
48     ScenarioSetSettingAction() = default;
ScenarioSetSettingAction(ScenarioSetSetting setting,uint32_t value)49     ScenarioSetSettingAction(ScenarioSetSetting setting, uint32_t value)
50         : _setting(setting)
51         , _value(value)
52     {
53     }
54 
GetActionFlags()55     uint16_t GetActionFlags() const override
56     {
57         return GameAction::GetActionFlags() | GameActions::Flags::AllowWhilePaused;
58     }
59 
60     void Serialise(DataSerialiser& stream) override;
61     GameActions::Result::Ptr Query() const override;
62     GameActions::Result::Ptr Execute() const override;
63 };
64