Start work on custom game actions

This commit is contained in:
Ted John
2020-03-01 21:56:49 +00:00
parent 07ed0f5c0e
commit 4e4379e6ef
7 changed files with 108 additions and 7 deletions

View File

@@ -694,6 +694,30 @@ void ScriptEngine::AddNetworkPlugin(const std::string_view& code)
LoadPlugin(plugin);
}
std::unique_ptr<GameActionResult> ScriptEngine::QueryOrExecuteCustomGameAction(
const std::string_view& id,
const std::string_view& args,
bool isExecute)
{
// Deserialise the JSON args
std::string argsz(args);
duk_push_string(_context, argsz.c_str());
duk_json_decode(_context, -1);
auto dukArgs = DukValue::take_from_stack(_context);
// Ready to call plugin handler
if (isExecute)
{
std::printf("EXECUTE: %s(%s)\n", std::string(id).c_str(), std::string(args).c_str());
}
else
{
std::printf("QUERY: %s(%s)\n", std::string(id).c_str(), std::string(args).c_str());
}
return std::make_unique<GameActionResult>();
}
std::string OpenRCT2::Scripting::Stringify(const DukValue& val)
{
return ExpressionStringifier::StringifyExpression(val);