diff --git a/src/openrct2/actions/GameAction.h b/src/openrct2/actions/GameAction.h index a883485c06..3a86c08890 100644 --- a/src/openrct2/actions/GameAction.h +++ b/src/openrct2/actions/GameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -148,6 +148,10 @@ class GameActionParameterVisitor public: virtual ~GameActionParameterVisitor() = default; + virtual void Visit(const std::string_view& name, bool& param) + { + } + virtual void Visit(const std::string_view& name, int32_t& param) { } @@ -156,6 +160,12 @@ public: { } + void Visit(CoordsXY& param) + { + Visit("x", param.x); + Visit("y", param.y); + } + void Visit(CoordsXYZD& param) { Visit("x", param.x); @@ -171,6 +181,11 @@ public: Visit(name, value); param = static_cast(value); } + + template void Visit(const std::string_view& name, NetworkObjectId_t& param) + { + Visit(name, param.id); + } }; struct GameAction diff --git a/src/openrct2/actions/GuestSetNameAction.hpp b/src/openrct2/actions/GuestSetNameAction.hpp index 57d85e0788..fbf295849e 100644 --- a/src/openrct2/actions/GuestSetNameAction.hpp +++ b/src/openrct2/actions/GuestSetNameAction.hpp @@ -39,7 +39,7 @@ public: void AcceptParameters(GameActionParameterVisitor & visitor) override { - visitor.Visit("id", _spriteIndex); + visitor.Visit("peep", _spriteIndex); visitor.Visit("name", _name); } diff --git a/src/openrct2/actions/MazePlaceTrackAction.hpp b/src/openrct2/actions/MazePlaceTrackAction.hpp index f8931d81d0..3197b634c4 100644 --- a/src/openrct2/actions/MazePlaceTrackAction.hpp +++ b/src/openrct2/actions/MazePlaceTrackAction.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -30,6 +30,13 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit(_loc); + visitor.Visit("ride", _rideIndex); + visitor.Visit("mazeEntry", _mazeEntry); + } + void Serialise(DataSerialiser & stream) override { GameAction::Serialise(stream); diff --git a/src/openrct2/actions/MazeSetTrackAction.hpp b/src/openrct2/actions/MazeSetTrackAction.hpp index ed4e3698dd..8b9fa7b102 100644 --- a/src/openrct2/actions/MazeSetTrackAction.hpp +++ b/src/openrct2/actions/MazeSetTrackAction.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -67,6 +67,14 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit(_loc); + visitor.Visit("ride", _rideIndex); + visitor.Visit("mode", _mode); + visitor.Visit("isInitialPlacement", _initialPlacement); + } + void Serialise(DataSerialiser & stream) override { GameAction::Serialise(stream); diff --git a/src/openrct2/actions/RideDemolishAction.hpp b/src/openrct2/actions/RideDemolishAction.hpp index 53612e2a72..0bc5de3bef 100644 --- a/src/openrct2/actions/RideDemolishAction.hpp +++ b/src/openrct2/actions/RideDemolishAction.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -45,6 +45,12 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit("ride", _rideIndex); + visitor.Visit("modifyType", _modifyType); + } + uint32_t GetCooldownTime() const override { return 1000; diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.hpp b/src/openrct2/actions/RideEntranceExitPlaceAction.hpp index 5118f61a79..da7a5659e6 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.hpp +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -40,6 +40,15 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit(_loc); + visitor.Visit("direction", _direction); + visitor.Visit("ride", _rideIndex); + visitor.Visit("station", _stationNum); + visitor.Visit("isExit", _isExit); + } + uint16_t GetActionFlags() const override { return GameAction::GetActionFlags(); diff --git a/src/openrct2/actions/RideEntranceExitRemoveAction.hpp b/src/openrct2/actions/RideEntranceExitRemoveAction.hpp index 418c802791..235d632ec1 100644 --- a/src/openrct2/actions/RideEntranceExitRemoveAction.hpp +++ b/src/openrct2/actions/RideEntranceExitRemoveAction.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -33,6 +33,14 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit(_loc); + visitor.Visit("ride", _rideIndex); + visitor.Visit("station", _stationNum); + visitor.Visit("isExit", _isExit); + } + uint16_t GetActionFlags() const override { return GameAction::GetActionFlags(); diff --git a/src/openrct2/actions/RideSetAppearanceAction.hpp b/src/openrct2/actions/RideSetAppearanceAction.hpp index 480c10a33c..48a5dbb0ee 100644 --- a/src/openrct2/actions/RideSetAppearanceAction.hpp +++ b/src/openrct2/actions/RideSetAppearanceAction.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -55,6 +55,14 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit("ride", _rideIndex); + visitor.Visit("type", _type); + visitor.Visit("value", _value); + visitor.Visit("index", _index); + } + uint16_t GetActionFlags() const override { return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED; diff --git a/src/openrct2/actions/RideSetColourScheme.hpp b/src/openrct2/actions/RideSetColourScheme.hpp index bb95db30d5..8ef66b6184 100644 --- a/src/openrct2/actions/RideSetColourScheme.hpp +++ b/src/openrct2/actions/RideSetColourScheme.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -37,6 +37,13 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit(_loc); + visitor.Visit("trackType", _trackType); + visitor.Visit("colourScheme", _newColourScheme); + } + uint16_t GetActionFlags() const override { return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED; diff --git a/src/openrct2/actions/RideSetName.hpp b/src/openrct2/actions/RideSetName.hpp index cfb73dda81..1f12d3aba7 100644 --- a/src/openrct2/actions/RideSetName.hpp +++ b/src/openrct2/actions/RideSetName.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -38,6 +38,12 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit("ride", _rideIndex); + visitor.Visit("name", _name); + } + uint16_t GetActionFlags() const override { return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED; diff --git a/src/openrct2/actions/RideSetPriceAction.hpp b/src/openrct2/actions/RideSetPriceAction.hpp index 968b6a8403..b61830f7a8 100644 --- a/src/openrct2/actions/RideSetPriceAction.hpp +++ b/src/openrct2/actions/RideSetPriceAction.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -41,6 +41,13 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit("ride", _rideIndex); + visitor.Visit("price", _price); + visitor.Visit("isPrimaryPrice", _primaryPrice); + } + uint16_t GetActionFlags() const override { return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED; diff --git a/src/openrct2/actions/RideSetSetting.hpp b/src/openrct2/actions/RideSetSetting.hpp index 097d0b37fc..ec90231c0a 100644 --- a/src/openrct2/actions/RideSetSetting.hpp +++ b/src/openrct2/actions/RideSetSetting.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -46,6 +46,13 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit("ride", _rideIndex); + visitor.Visit("setting", _setting); + visitor.Visit("value", _value); + } + uint16_t GetActionFlags() const override { return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED; diff --git a/src/openrct2/actions/RideSetStatus.hpp b/src/openrct2/actions/RideSetStatus.hpp index 2d6a5e61d8..15b5fa716a 100644 --- a/src/openrct2/actions/RideSetStatus.hpp +++ b/src/openrct2/actions/RideSetStatus.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -46,6 +46,12 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit("ride", _rideIndex); + visitor.Visit("status", _status); + } + uint16_t GetActionFlags() const override { return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED; diff --git a/src/openrct2/actions/RideSetVehiclesAction.hpp b/src/openrct2/actions/RideSetVehiclesAction.hpp index 299a37f527..8044223f70 100644 --- a/src/openrct2/actions/RideSetVehiclesAction.hpp +++ b/src/openrct2/actions/RideSetVehiclesAction.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -57,6 +57,14 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit("ride", _rideIndex); + visitor.Visit("type", _type); + visitor.Visit("value", _value); + visitor.Visit("colour", _colour); + } + uint16_t GetActionFlags() const override { return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED; diff --git a/src/openrct2/actions/TrackDesignAction.h b/src/openrct2/actions/TrackDesignAction.h index 2206959bbc..7575054152 100644 --- a/src/openrct2/actions/TrackDesignAction.h +++ b/src/openrct2/actions/TrackDesignAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -50,6 +50,11 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit(_loc); + } + uint16_t GetActionFlags() const override { return GameActionBase::GetActionFlags(); diff --git a/src/openrct2/actions/TrackPlaceAction.hpp b/src/openrct2/actions/TrackPlaceAction.hpp index ef24a56b4d..41b34a2278 100644 --- a/src/openrct2/actions/TrackPlaceAction.hpp +++ b/src/openrct2/actions/TrackPlaceAction.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -74,6 +74,18 @@ public: _origin.direction &= 3; } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit(_origin); + visitor.Visit("ride", _rideIndex); + visitor.Visit("trackType", _trackType); + visitor.Visit("brakeSpeed", _brakeSpeed); + visitor.Visit("colour", _colour); + visitor.Visit("seatRotation", _seatRotation); + visitor.Visit("trackPlaceFlags", _trackPlaceFlags); + visitor.Visit("isFromTrackDesign", _fromTrackDesign); + } + uint16_t GetActionFlags() const override final { return GameAction::GetActionFlags(); diff --git a/src/openrct2/actions/TrackRemoveAction.hpp b/src/openrct2/actions/TrackRemoveAction.hpp index a475e1b933..6c6193dd07 100644 --- a/src/openrct2/actions/TrackRemoveAction.hpp +++ b/src/openrct2/actions/TrackRemoveAction.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -39,6 +39,13 @@ public: _origin.direction &= 3; } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit(_origin); + visitor.Visit("trackType", _trackType); + visitor.Visit("sequence", _sequence); + } + uint16_t GetActionFlags() const override { return GameAction::GetActionFlags(); diff --git a/src/openrct2/actions/TrackSetBrakeSpeedAction.hpp b/src/openrct2/actions/TrackSetBrakeSpeedAction.hpp index 4764542fd6..c7bb3a5b55 100644 --- a/src/openrct2/actions/TrackSetBrakeSpeedAction.hpp +++ b/src/openrct2/actions/TrackSetBrakeSpeedAction.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2019 OpenRCT2 developers + * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -28,6 +28,13 @@ public: { } + void AcceptParameters(GameActionParameterVisitor & visitor) override + { + visitor.Visit(_loc); + visitor.Visit("trackType", _trackType); + visitor.Visit("brakeSpeed", _brakeSpeed); + } + uint16_t GetActionFlags() const override { return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED; diff --git a/src/openrct2/scripting/ScriptEngine.cpp b/src/openrct2/scripting/ScriptEngine.cpp index a52689d934..1a0834f4f8 100644 --- a/src/openrct2/scripting/ScriptEngine.cpp +++ b/src/openrct2/scripting/ScriptEngine.cpp @@ -899,6 +899,11 @@ public: { } + void Visit(const std::string_view& name, bool& param) override + { + param = _dukValue[name].as_bool(); + } + void Visit(const std::string_view& name, int32_t& param) override { param = _dukValue[name].as_int(); @@ -921,6 +926,12 @@ public: { } + void Visit(const std::string_view& name, bool& param) override + { + std::string szName(name); + _dukObject.Set(szName.c_str(), param); + } + void Visit(const std::string_view& name, int32_t& param) override { std::string szName(name); @@ -976,9 +987,24 @@ void ScriptEngine::RunGameActionHooks(const GameAction& action, std::unique_ptr< static std::unique_ptr CreateGameActionFromActionId(const std::string& actionid) { const static std::unordered_map ActionNameToType = { - { "parksetname", GAME_COMMAND_SET_PARK_NAME }, - { "smallsceneryplace", GAME_COMMAND_PLACE_SCENERY }, { "guestsetname", GAME_COMMAND_SET_GUEST_NAME }, + { "parksetname", GAME_COMMAND_SET_PARK_NAME }, + { "ridecreate", GAME_COMMAND_CREATE_RIDE }, + { "ridedemolish", GAME_COMMAND_DEMOLISH_RIDE }, + { "rideentranceexitplace", GAME_COMMAND_PLACE_RIDE_ENTRANCE_OR_EXIT }, + { "rideentranceexitremove", GAME_COMMAND_REMOVE_RIDE_ENTRANCE_OR_EXIT }, + { "ridesetappearance", GAME_COMMAND_SET_RIDE_APPEARANCE }, + { "ridesetcolourscheme.hpp", GAME_COMMAND_SET_COLOUR_SCHEME }, + { "ridesetname", GAME_COMMAND_SET_RIDE_NAME }, + { "ridesetprice", GAME_COMMAND_SET_RIDE_PRICE }, + { "ridesetsetting", GAME_COMMAND_SET_RIDE_SETTING }, + { "ridesetstatus", GAME_COMMAND_SET_RIDE_STATUS }, + { "ridesetvehicles", GAME_COMMAND_SET_RIDE_VEHICLES }, + { "smallsceneryplace", GAME_COMMAND_PLACE_SCENERY }, + { "trackdesign", GAME_COMMAND_PLACE_TRACK_DESIGN }, + { "trackplace", GAME_COMMAND_PLACE_TRACK }, + { "trackremove", GAME_COMMAND_REMOVE_TRACK }, + { "tracksetbrakespeed", GAME_COMMAND_SET_BRAKES_SPEED }, }; auto result = ActionNameToType.find(actionid);