Index: ps/trunk/source/ps/Mod.h
===================================================================
--- ps/trunk/source/ps/Mod.h (revision 21312)
+++ ps/trunk/source/ps/Mod.h (revision 21313)
@@ -1,40 +1,49 @@
/* Copyright (C) 2018 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* 0 A.D. is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with 0 A.D. If not, see .
*/
#ifndef INCLUDED_MOD
#define INCLUDED_MOD
#include "ps/CStr.h"
#include "ps/GameSetup/CmdLineArgs.h"
#include "scriptinterface/ScriptInterface.h"
extern std::vector g_modsLoaded;
extern CmdLineArgs g_args;
namespace Mod
{
JS::Value GetAvailableMods(const ScriptInterface& scriptInterface);
+
+ /**
+ * Get the loaded mods and their version.
+ * "user" mod and "mod" mod are ignored as they are irrelevant for compatibility checks.
+ *
+ * @param scriptInterface the ScriptInterface in which to create the return data.
+ * @return list of loaded mods with the format [[modA, versionA], [modB, versionB], ...]
+ */
JS::Value GetLoadedModsWithVersions(const ScriptInterface& scriptInterface);
+
/**
* Gets info (version and mods loaded) on the running engine
*
* @param scriptInterface the ScriptInterface in which to create the return data.
- * @return list of objects containing saved game data
+ * @return list of objects containing data
*/
JS::Value GetEngineInfo(const ScriptInterface& scriptInterface);
}
#endif // INCLUDED_MOD
Index: ps/trunk/source/ps/scripting/JSInterface_Mod.cpp
===================================================================
--- ps/trunk/source/ps/scripting/JSInterface_Mod.cpp (revision 21312)
+++ ps/trunk/source/ps/scripting/JSInterface_Mod.cpp (revision 21313)
@@ -1,62 +1,62 @@
-/* Copyright (C) 2017 Wildfire Games.
+/* Copyright (C) 2018 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* 0 A.D. is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with 0 A.D. If not, see .
*/
#include "precompiled.h"
#include "ps/scripting/JSInterface_Mod.h"
#include "ps/Mod.h"
extern void restart_engine();
JS::Value JSI_Mod::GetEngineInfo(ScriptInterface::CxPrivate* pCxPrivate)
{
return Mod::GetEngineInfo(*(pCxPrivate->pScriptInterface));
}
/**
* Returns a JS object containing a listing of available mods that
* have a modname.json file in their modname folder. The returned
* object looks like { modname1: json1, modname2: json2, ... } where
* jsonN is the content of the modnameN/modnameN.json file as a JS
* object.
*
* @return JS object with available mods as the keys of the modname.json
* properties.
*/
JS::Value JSI_Mod::GetAvailableMods(ScriptInterface::CxPrivate* pCxPrivate)
{
return Mod::GetAvailableMods(*(pCxPrivate->pScriptInterface));
}
void JSI_Mod::RestartEngine(ScriptInterface::CxPrivate* UNUSED(pCxPrivate))
{
restart_engine();
}
void JSI_Mod::SetMods(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const std::vector& mods)
{
g_modsLoaded = mods;
}
void JSI_Mod::RegisterScriptFunctions(const ScriptInterface& scriptInterface)
{
scriptInterface.RegisterFunction("GetEngineInfo");
scriptInterface.RegisterFunction("GetAvailableMods");
scriptInterface.RegisterFunction("RestartEngine");
scriptInterface.RegisterFunction, &JSI_Mod::SetMods>("SetMods");
}
Index: ps/trunk/source/ps/scripting/JSInterface_SavedGame.h
===================================================================
--- ps/trunk/source/ps/scripting/JSInterface_SavedGame.h (revision 21312)
+++ ps/trunk/source/ps/scripting/JSInterface_SavedGame.h (revision 21313)
@@ -1,36 +1,36 @@
-/* Copyright (C) 2017 Wildfire Games.
+/* Copyright (C) 2018 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* 0 A.D. is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with 0 A.D. If not, see .
*/
#ifndef INCLUDED_JSI_SAVEDGAME
#define INCLUDED_JSI_SAVEDGAME
#include "scriptinterface/ScriptInterface.h"
namespace JSI_SavedGame
{
JS::Value GetSavedGames(ScriptInterface::CxPrivate* pCxPrivate);
bool DeleteSavedGame(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& name);
void SaveGame(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& filename, const std::wstring& description, JS::HandleValue GUIMetadata);
void SaveGamePrefix(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& prefix, const std::wstring& description, JS::HandleValue GUIMetadata);
void QuickSave(ScriptInterface::CxPrivate* pCxPrivate);
void QuickLoad(ScriptInterface::CxPrivate* pCxPrivate);
JS::Value StartSavedGame(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& name);
void RegisterScriptFunctions(const ScriptInterface& scriptInterface);
}
#endif