diff --git a/distribution/changelog.txt b/distribution/changelog.txt index d3437faccd..98d81b1f75 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.3.2+ (in development) ------------------------------------------------------------------------ +- Feature: [#13057] Make GameAction flags accessible by plugins. - Change: [#13346] Change FootpathScenery to FootpathAddition in all occurrences - Fix: [#13334] Uninitialised variables in CustomTabDesc - Fix: [#13342] Rename tabChange to onTabChange in WindowDesc interface diff --git a/src/openrct2/actions/GameAction.h b/src/openrct2/actions/GameAction.h index a8064c5b96..0f9b6d9c99 100644 --- a/src/openrct2/actions/GameAction.h +++ b/src/openrct2/actions/GameAction.h @@ -233,6 +233,11 @@ public: { } + void AcceptFlags(GameActionParameterVisitor& visitor) + { + visitor.Visit("flags", _flags); + } + NetworkPlayerId_t GetPlayer() const { return _playerId; diff --git a/src/openrct2/scripting/ScriptEngine.cpp b/src/openrct2/scripting/ScriptEngine.cpp index 05eb3bb682..59c7b8addd 100644 --- a/src/openrct2/scripting/ScriptEngine.cpp +++ b/src/openrct2/scripting/ScriptEngine.cpp @@ -43,7 +43,7 @@ using namespace OpenRCT2; using namespace OpenRCT2::Scripting; -static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 8; +static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 9; struct ExpressionStringifier final { @@ -1090,6 +1090,7 @@ void ScriptEngine::RunGameActionHooks(const GameAction& action, std::unique_ptr< DukObject args(_context); DukFromGameActionParameterVisitor visitor(args); const_cast(action).AcceptParameters(visitor); + const_cast(action).AcceptFlags(visitor); obj.Set("args", args.Take()); } @@ -1129,6 +1130,7 @@ std::unique_ptr ScriptEngine::CreateGameAction(const std::string& ac DukValue argsCopy = args; DukToGameActionParameterVisitor visitor(std::move(argsCopy)); action->AcceptParameters(visitor); + action->AcceptFlags(visitor); return action; } else