1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-21 14:02:59 +01:00

Refactor game action binding for plugins (#11528)

* Refactor game action binding for plugins

Adds parameter visiting for game actions to reduce code needed for binding game actions to JavaScript objects

* Apply suggestions from code review

Co-Authored-By: Tulio Leao <tupaschoal@gmail.com>

Co-authored-by: Tulio Leao <tupaschoal@gmail.com>
This commit is contained in:
Ted John
2020-04-30 10:56:57 +01:00
committed by GitHub
parent a8f4a1e114
commit bbe7ff0d80
9 changed files with 191 additions and 52 deletions

View File

@@ -123,7 +123,7 @@ namespace OpenRCT2::Scripting
std::mutex _changedPluginFilesMutex;
std::vector<std::function<void(std::shared_ptr<Plugin>)>> _pluginStoppedSubscriptions;
struct CustomAction
struct CustomActionInfo
{
std::shared_ptr<Plugin> Owner;
std::string Name;
@@ -131,7 +131,7 @@ namespace OpenRCT2::Scripting
DukValue Execute;
};
std::unordered_map<std::string, CustomAction> _customActions;
std::unordered_map<std::string, CustomActionInfo> _customActions;
public:
ScriptEngine(InteractiveConsole& console, IPlatformEnvironment& env);
@@ -181,6 +181,7 @@ namespace OpenRCT2::Scripting
const std::shared_ptr<Plugin>& plugin, const std::string_view& action, const DukValue& query,
const DukValue& execute);
void RunGameActionHooks(const GameAction& action, std::unique_ptr<GameActionResult>& result, bool isExecute);
std::unique_ptr<GameAction> CreateGameAction(const std::string& actionid, const DukValue& args);
void SaveSharedStorage();