Rework Mod into a class.

`Mod` currently modifies 4 global arrays, including some that are
'public'.

The logic flow is easier to understand if this becomes a real class with
const-correctness and public/private methods.

Differential Revision: https://code.wildfiregames.com/D3981
This was SVN commit r25469.
This commit is contained in:
wraitii
2021-05-20 08:32:11 +00:00
parent 13c1b55f42
commit 04549a081d
10 changed files with 144 additions and 124 deletions
+12 -7
View File
@@ -26,10 +26,15 @@ extern void RestartEngine();
namespace JSI_Mod
{
Mod* ModGetter(const ScriptRequest&, JS::CallArgs&)
{
return &g_Mods;
}
bool SetModsAndRestartEngine(const ScriptInterface& scriptInterface, const std::vector<CStr>& mods)
{
Mod::ClearIncompatibleMods();
if (!Mod::CheckAndEnableMods(scriptInterface, mods))
g_Mods.ClearIncompatibleMods();
if (!g_Mods.CheckAndEnableMods(scriptInterface, mods))
return false;
RestartEngine();
@@ -38,16 +43,16 @@ bool SetModsAndRestartEngine(const ScriptInterface& scriptInterface, const std::
bool HasFailedMods()
{
return Mod::GetFailedMods().size() > 0;
return g_Mods.GetFailedMods().size() > 0;
}
void RegisterScriptFunctions(const ScriptRequest& rq)
{
ScriptFunction::Register<&Mod::GetEngineInfo>(rq, "GetEngineInfo");
ScriptFunction::Register<&Mod::GetAvailableMods>(rq, "GetAvailableMods");
ScriptFunction::Register<&Mod::GetEnabledMods>(rq, "GetEnabledMods");
ScriptFunction::Register<&Mod::GetEngineInfo, ModGetter>(rq, "GetEngineInfo");
ScriptFunction::Register<&Mod::GetAvailableMods, ModGetter>(rq, "GetAvailableMods");
ScriptFunction::Register<&Mod::GetEnabledMods, ModGetter>(rq, "GetEnabledMods");
ScriptFunction::Register<HasFailedMods> (rq, "HasFailedMods");
ScriptFunction::Register<&Mod::GetFailedMods>(rq, "GetFailedMods");
ScriptFunction::Register<&Mod::GetFailedMods, ModGetter>(rq, "GetFailedMods");
ScriptFunction::Register<&SetModsAndRestartEngine>(rq, "SetModsAndRestartEngine");
}
}