1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 19:13:07 +01:00

Add Plugin API for storing data in .park files

This commit is contained in:
Ted John
2022-02-19 16:32:08 +00:00
parent 2ef5265ead
commit 1182ff5f19
11 changed files with 96 additions and 2 deletions

View File

@@ -439,6 +439,7 @@ void ScriptEngine::Initialise()
_pluginsStarted = false;
InitSharedStorage();
ClearParkStorage();
}
void ScriptEngine::LoadPlugins()
@@ -1245,6 +1246,29 @@ void ScriptEngine::SaveSharedStorage()
}
}
void ScriptEngine::ClearParkStorage()
{
duk_push_object(_context);
_parkStorage = std::move(DukValue::take_from_stack(_context));
}
std::string ScriptEngine::GetParkStorageAsJSON()
{
_parkStorage.push();
auto json = std::string(duk_json_encode(_context, -1));
duk_pop(_context);
return json;
}
void ScriptEngine::SetParkStorageFromJSON(std::string_view value)
{
auto result = DuktapeTryParseJson(_context, value);
if (result)
{
_parkStorage = std::move(*result);
}
}
IntervalHandle ScriptEngine::AllocateHandle()
{
for (size_t i = 0; i < _intervals.size(); i++)