Changeset View
Changeset View
Standalone View
Standalone View
source/ps/SavedGame.cpp
Show First 20 Lines • Show All 77 Lines • ▼ Show 20 Lines | Status SavedGames::Save(const CStrW& name, const CStrW& description, CSimulation2& simulation, const shared_ptr<ScriptInterface::StructuredClone>& guiMetadataClone) | ||||
if (!simulation.SerializeState(simStateStream)) | if (!simulation.SerializeState(simStateStream)) | ||||
WARN_RETURN(ERR::FAIL); | WARN_RETURN(ERR::FAIL); | ||||
JS::RootedValue initAttributes(cx, simulation.GetInitAttributes()); | JS::RootedValue initAttributes(cx, simulation.GetInitAttributes()); | ||||
JS::RootedValue mods(cx, Mod::GetLoadedModsWithVersions(simulation.GetScriptInterface())); | JS::RootedValue mods(cx, Mod::GetLoadedModsWithVersions(simulation.GetScriptInterface())); | ||||
JS::RootedValue metadata(cx); | JS::RootedValue metadata(cx); | ||||
simulation.GetScriptInterface().CreateObject( | ScriptInterface::CreateObject( | ||||
cx, | |||||
&metadata, | &metadata, | ||||
"engine_version", std::string(engine_version), | "engine_version", engine_version, | ||||
"time", static_cast<double>(now), | "time", static_cast<double>(now), | ||||
"playerID", g_Game->GetPlayerID(), | "playerID", g_Game->GetPlayerID(), | ||||
"mods", mods, | "mods", mods, | ||||
"initAttributes", initAttributes); | "initAttributes", initAttributes); | ||||
JS::RootedValue guiMetadata(cx); | JS::RootedValue guiMetadata(cx); | ||||
simulation.GetScriptInterface().ReadStructuredClone(guiMetadataClone, &guiMetadata); | simulation.GetScriptInterface().ReadStructuredClone(guiMetadataClone, &guiMetadata); | ||||
// get some camera data | // get some camera data | ||||
const CVector3D cameraPosition = g_Game->GetView()->GetCameraPosition(); | const CVector3D cameraPosition = g_Game->GetView()->GetCameraPosition(); | ||||
const CVector3D cameraRotation = g_Game->GetView()->GetCameraRotation(); | const CVector3D cameraRotation = g_Game->GetView()->GetCameraRotation(); | ||||
JS::RootedValue cameraMetadata(cx); | JS::RootedValue cameraMetadata(cx); | ||||
simulation.GetScriptInterface().CreateObject( | ScriptInterface::CreateObject( | ||||
cx, | |||||
&cameraMetadata, | &cameraMetadata, | ||||
"PosX", cameraPosition.X, | "PosX", cameraPosition.X, | ||||
"PosY", cameraPosition.Y, | "PosY", cameraPosition.Y, | ||||
"PosZ", cameraPosition.Z, | "PosZ", cameraPosition.Z, | ||||
"RotX", cameraRotation.X, | "RotX", cameraRotation.X, | ||||
"RotY", cameraRotation.Y, | "RotY", cameraRotation.Y, | ||||
"Zoom", g_Game->GetView()->GetCameraZoom()); | "Zoom", g_Game->GetView()->GetCameraZoom()); | ||||
▲ Show 20 Lines • Show All 115 Lines • ▼ Show 20 Lines | |||||
JS::Value SavedGames::GetSavedGames(const ScriptInterface& scriptInterface) | JS::Value SavedGames::GetSavedGames(const ScriptInterface& scriptInterface) | ||||
{ | { | ||||
TIMER(L"GetSavedGames"); | TIMER(L"GetSavedGames"); | ||||
JSContext* cx = scriptInterface.GetContext(); | JSContext* cx = scriptInterface.GetContext(); | ||||
JSAutoRequest rq(cx); | JSAutoRequest rq(cx); | ||||
JS::RootedValue games(cx); | JS::RootedValue games(cx); | ||||
scriptInterface.CreateArray(&games); | ScriptInterface::CreateArray(cx, &games); | ||||
Status err; | Status err; | ||||
VfsPaths pathnames; | VfsPaths pathnames; | ||||
err = vfs::GetPathnames(g_VFS, "saves/", L"*.0adsave", pathnames); | err = vfs::GetPathnames(g_VFS, "saves/", L"*.0adsave", pathnames); | ||||
WARN_IF_ERR(err); | WARN_IF_ERR(err); | ||||
for (size_t i = 0; i < pathnames.size(); ++i) | for (size_t i = 0; i < pathnames.size(); ++i) | ||||
Show All 19 Lines | for (size_t i = 0; i < pathnames.size(); ++i) | ||||
if (err < 0) | if (err < 0) | ||||
{ | { | ||||
DEBUG_WARN_ERR(err); | DEBUG_WARN_ERR(err); | ||||
continue; // skip this file | continue; // skip this file | ||||
} | } | ||||
JS::RootedValue metadata(cx, loader.GetMetadata()); | JS::RootedValue metadata(cx, loader.GetMetadata()); | ||||
JS::RootedValue game(cx); | JS::RootedValue game(cx); | ||||
scriptInterface.CreateObject( | ScriptInterface::CreateObject( | ||||
cx, | |||||
&game, | &game, | ||||
"id", pathnames[i].Basename(), | "id", pathnames[i].Basename(), | ||||
"metadata", metadata); | "metadata", metadata); | ||||
scriptInterface.SetPropertyInt(games, i, game); | scriptInterface.SetPropertyInt(games, i, game); | ||||
} | } | ||||
return games; | return games; | ||||
Show All 23 Lines |
Wildfire Games · Phabricator