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