1
0
forked from 0ad/0ad

Fix autostart replays following a23884d79a by grabbing g_GameAttributes from the simulation instead of the GUI. Patch by Imarok, refs #3143.

Don't remove attribs from the init attributes as that is still used by
the loading screen to show the mapname.

This was SVN commit r18510.
This commit is contained in:
elexis 2016-07-12 01:49:48 +00:00
parent cab6a8c633
commit 4c0f12bce3
4 changed files with 24 additions and 1 deletions

View File

@ -225,12 +225,13 @@ function init(initData, hotloadData)
return;
}
g_GameAttributes = Engine.GetInitAttributes();
if (initData)
{
g_IsNetworked = initData.isNetworked;
g_IsController = initData.isController;
g_PlayerAssignments = initData.playerAssignments;
g_GameAttributes = initData.attribs;
g_ReplaySelectionData = initData.replaySelectionData;
g_HasRejoined = initData.isRejoining;

View File

@ -510,6 +510,21 @@ JS::Value LoadMapSettings(ScriptInterface::CxPrivate* pCxPrivate, const VfsPath&
return settings;
}
JS::Value GetInitAttributes(ScriptInterface::CxPrivate* pCxPrivate)
{
if (!g_Game)
return JS::UndefinedValue();
JSContext* cx = g_Game->GetSimulation2()->GetScriptInterface().GetContext();
JSAutoRequest rq(cx);
JS::RootedValue initAttribs(cx);
g_Game->GetSimulation2()->GetInitAttributes(&initAttribs);
return pCxPrivate->pScriptInterface->CloneValueFromOtherContext(
g_Game->GetSimulation2()->GetScriptInterface(),
initAttribs);
}
/**
* Get the current X coordinate of the camera.
*/
@ -1055,6 +1070,7 @@ void GuiScriptingInit(ScriptInterface& scriptInterface)
scriptInterface.RegisterFunction<bool, &AtlasIsAvailable>("AtlasIsAvailable");
scriptInterface.RegisterFunction<bool, &IsAtlasRunning>("IsAtlasRunning");
scriptInterface.RegisterFunction<JS::Value, VfsPath, &LoadMapSettings>("LoadMapSettings");
scriptInterface.RegisterFunction<JS::Value, &GetInitAttributes>("GetInitAttributes");
scriptInterface.RegisterFunction<float, &CameraGetX>("CameraGetX");
scriptInterface.RegisterFunction<float, &CameraGetZ>("CameraGetZ");
scriptInterface.RegisterFunction<void, entity_id_t, &CameraFollow>("CameraFollow");

View File

@ -748,6 +748,11 @@ JS::Value CSimulation2::GetInitAttributes()
return m->m_InitAttributes.get();
}
void CSimulation2::GetInitAttributes(JS::MutableHandleValue ret)
{
ret.set(m->m_InitAttributes);
}
void CSimulation2::SetMapSettings(const std::string& settings)
{
m->m_ComponentManager.GetScriptInterface().ParseJSON(settings, &m->m_MapSettings);

View File

@ -103,6 +103,7 @@ public:
* Get the data passed to SetInitAttributes.
*/
JS::Value GetInitAttributes();
void GetInitAttributes(JS::MutableHandleValue ret);
/**
* Set the initial map settings (as a UTF-8-encoded JSON string),