using System; using System.IO; using System.Linq; namespace Barotrauma { static partial class LuaCsInstaller { public static void Uninstall() { if (!File.Exists("Temp/Original/Barotrauma.dll")) { new GUIMessageBox("Error", "Error: Temp/Original/Barotrauma.dll not found, Github version? Use Steam validate files instead."); return; } var msg = new GUIMessageBox("Confirm", "Are you sure you want to remove Client-Side ProjectEP?", new LocalizedString[2] { TextManager.Get("Yes"), TextManager.Get("Cancel") }); msg.Buttons[0].OnClicked = (GUIButton button, object obj) => { msg.Close(); string[] filesToRemove = new string[] { "Barotrauma.dll", "Barotrauma.deps.json", "Barotrauma.pdb", "BarotraumaCore.dll", "BarotraumaCore.pdb", "System.Reflection.Metadata.dll", "System.Collections.Immutable.dll", "System.Runtime.CompilerServices.Unsafe.dll" }; try { CreateMissingDirectory(); foreach (string file in filesToRemove) { File.Move(file, "Temp/ToDelete/" + file, true); File.Move("Temp/Original/" + file, file, true); } } catch (Exception e) { new GUIMessageBox("Error", $"{e} {e.InnerException} \nTry verifying files instead."); return false; } new GUIMessageBox("Restart", "Restart your game to apply the changes. If the mod continues to stay active after the restart, try verifying games instead."); return true; }; msg.Buttons[1].OnClicked = (GUIButton button, object obj) => { msg.Close(); return true; }; } public static void CheckUpdate() { if (!File.Exists(LuaCsSetup.VersionFile)) { return; } ContentPackage luaPackage = LuaCsSetup.GetPackage(LuaCsSetup.LuaForBarotraumaId); if (luaPackage == null) { return; } string luaCsPath = Path.GetDirectoryName(luaPackage.Path); string clientVersion = File.ReadAllText(LuaCsSetup.VersionFile); string workshopVersion = luaPackage.ModVersion; if (clientVersion == workshopVersion || File.Exists("debugsomething")) { return; } var msg = new GUIMessageBox($"LuaCs Update", $"Your LuaCs client version is different from the version found in the LuaCsForBarotrauma workshop files. Do you want to update?\n\n Client Version: {clientVersion}\n Workshop Version: {workshopVersion}", new LocalizedString[2] { TextManager.Get("Yes"), TextManager.Get("Cancel") }); msg.Buttons[0].OnClicked = (GUIButton button, object obj) => { string[] filesToUpdate = trackingFiles.Concat(Directory.EnumerateFiles(luaCsPath, "*.dll", SearchOption.AllDirectories) .Where(s => s.Contains("mscordaccore_amd64_amd64")).Select(s => Path.GetFileName(s))).ToArray(); try { CreateMissingDirectory(); foreach (string file in filesToUpdate) { try { File.Move(file, "Temp/Old/" + file, true); File.Copy(Path.Combine(luaCsPath, "Binary", file), file, true); } catch (Exception e) { DebugConsole.ThrowError($"Failed to update file {e}"); } } File.WriteAllText(LuaCsSetup.VersionFile, workshopVersion); } catch (Exception e) { new GUIMessageBox("Failed", $"Failed to update, error: {e}"); msg.Close(); return true; } new GUIMessageBox("Restart", $"LuaCs updated! Restart your game to apply the changes."); msg.Close(); return true; }; msg.Buttons[1].OnClicked = (GUIButton button, object obj) => { msg.Close(); return true; }; } } }