Added popups telling you to run CSharp when joining a server with CSharp mods enabled but without the Cs package
This commit is contained in:
@@ -0,0 +1,66 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Barotrauma
|
||||||
|
{
|
||||||
|
partial class LuaCsSetup
|
||||||
|
{
|
||||||
|
public void CheckInitialize()
|
||||||
|
{
|
||||||
|
List<ContentPackage> csharpMods = new List<ContentPackage>();
|
||||||
|
foreach (ContentPackage cp in ContentPackageManager.EnabledPackages.All)
|
||||||
|
{
|
||||||
|
if (Directory.Exists(cp.Dir + "/CSharp"))
|
||||||
|
{
|
||||||
|
csharpMods.Add(cp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (csharpMods.Count == 0 || ShouldRunCs || GameMain.Client == null)
|
||||||
|
{
|
||||||
|
Initialize();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GameMain.Client.IsServerOwner)
|
||||||
|
{
|
||||||
|
new GUIMessageBox("", "You have CSharp mods enabled but don't have the Cs For Barotrauma package enabled, those mods might not work.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
foreach (ContentPackage cp in csharpMods)
|
||||||
|
{
|
||||||
|
if (cp.UgcId.TryUnwrap(out ContentPackageId id))
|
||||||
|
{
|
||||||
|
sb.AppendLine($"- {cp.Name} ({id})");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.AppendLine($"- {cp.Name} (Not On Workshop)");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GUIMessageBox msg = new GUIMessageBox(
|
||||||
|
"Confirm",
|
||||||
|
$"This server has the following CSharp mods installed: \n{sb}\nDo you wish to run them? Cs mods are not sandboxed so make sure you trust these mods.",
|
||||||
|
new LocalizedString[2] { "Run", "Don't Run" });
|
||||||
|
|
||||||
|
msg.Buttons[0].OnClicked = (GUIButton button, object obj) =>
|
||||||
|
{
|
||||||
|
Initialize(true);
|
||||||
|
msg.Close();
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
msg.Buttons[1].OnClicked = (GUIButton button, object obj) =>
|
||||||
|
{
|
||||||
|
Initialize();
|
||||||
|
msg.Close();
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -116,7 +116,7 @@ namespace Barotrauma
|
|||||||
ContentPackageManager.EnabledPackages.SetRegular(regularPackages);
|
ContentPackageManager.EnabledPackages.SetRegular(regularPackages);
|
||||||
}
|
}
|
||||||
GameMain.NetLobbyScreen.Select();
|
GameMain.NetLobbyScreen.Select();
|
||||||
GameMain.LuaCs.Initialize();
|
GameMain.LuaCs.CheckInitialize();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Collections.Generic;
|
|
||||||
using MoonSharp.Interpreter;
|
using MoonSharp.Interpreter;
|
||||||
using MoonSharp.Interpreter.Interop;
|
using MoonSharp.Interpreter.Interop;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
@@ -65,6 +64,14 @@ namespace Barotrauma
|
|||||||
public CsScriptLoader CsScriptLoader { get; private set; }
|
public CsScriptLoader CsScriptLoader { get; private set; }
|
||||||
public LuaCsSetupConfig Config { get; private set; }
|
public LuaCsSetupConfig Config { get; private set; }
|
||||||
|
|
||||||
|
private bool ShouldRunCs
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return GetPackage(CsForBarotraumaId, false, true) != null || Config.ForceCsScripting;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public LuaCsSetup()
|
public LuaCsSetup()
|
||||||
{
|
{
|
||||||
Hook = new LuaCsHook(this);
|
Hook = new LuaCsHook(this);
|
||||||
@@ -260,13 +267,13 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Initialize()
|
public void Initialize(bool forceEnableCs = false)
|
||||||
{
|
{
|
||||||
Stop();
|
Stop();
|
||||||
|
|
||||||
LuaCsLogger.LogMessage("Lua! Version " + AssemblyInfo.GitRevision);
|
LuaCsLogger.LogMessage("Lua! Version " + AssemblyInfo.GitRevision);
|
||||||
|
|
||||||
bool csActive = GetPackage(CsForBarotraumaId, false, true) != null || Config.ForceCsScripting;
|
bool csActive = ShouldRunCs || forceEnableCs;
|
||||||
|
|
||||||
LuaScriptLoader = new LuaScriptLoader();
|
LuaScriptLoader = new LuaScriptLoader();
|
||||||
LuaScriptLoader.ModulePaths = new string[] { };
|
LuaScriptLoader.ModulePaths = new string[] { };
|
||||||
|
|||||||
Reference in New Issue
Block a user