import 'dart:io'; import 'package:hive/hive.dart'; import 'package:servermanager/credentials.dart'; import 'package:servermanager/mod.dart'; import 'package:servermanager/steamcmd.dart'; class Settings { Settings._(); static final Settings Instance = Settings._(); factory Settings() { return Instance; } void Read() { if (!isValid()) return; var box = Hive.box("settings"); var ml = box.get("modlist", defaultValue: []); for (final item in ml) { try { Mod X = item as Mod; mods.add(X); } catch (E) {} } steam_creds = box.get("creds"); } void Write() { if (!isValid()) return; var box = Hive.box("settings"); box.put("modlist", mods); if (steam_creds != null) box.put("creds", steam_creds); } bool isValid() { if (!Hive.isBoxOpen("settings")) { return false; } else return true; } Future> Open() { Close(); return Hive.openBox("settings", path: game_path); } static void Close() { if (Hive.isBoxOpen("settings")) { Hive.box("settings").close(); } } String getServerPath() { return game_path + Platform.pathSeparator + "server"; } List mods = []; String steamcmd_path = ""; String game_path = ""; Credentials? steam_creds; bool checkInitDone() { if (File(steamcmd_path + Platform.pathSeparator + "cxinit").existsSync()) { return true; } else return false; } String getSteamCmd() { return steamcmd_path + Platform.pathSeparator + "steamcmd" + (Platform.isWindows ? ".exe" : ".sh"); } String getSteamCmd2FA() { return steamcmd_path + Platform.pathSeparator + "steamcmd-2fa" + (Platform.isWindows ? ".exe" : ""); } String getModPath() { return game_path + Platform.pathSeparator + "mods"; } Future createModFolderIfNotExists() async { if (Directory(getModPath()).existsSync()) return; else await Directory(getModPath()).create(recursive: true); } bool serverInstalled() { return File( getServerPath() + Platform.pathSeparator + "ConanSandboxServer.exe") .existsSync(); } Future RunUpdate() { return Process.run(getSteamCmd(), [ "+@sSteamCmdForcePlatformType", "windows", "+force_install_dir", getServerPath(), "+login", "anonymous", "+app_update", "443030", "public", "validate", "+quit" ]); } }