import 'dart:io'; import 'package:hive/hive.dart'; import 'package:servermanager/pathtools.dart'; import 'package:servermanager/settingsEntry.dart'; class Settings { Settings._(); static final Settings Instance = Settings._(); String steamcmd_path = ""; String game_path = ""; factory Settings() { return Instance; } SettingsEntry? inst; void Read() { if (!isValid()) return; var box = Hive.box("settings"); inst = box.get("entry", defaultValue: SettingsEntry()) as SettingsEntry; } void Write() { if (!isValid()) return; var box = Hive.box("settings"); box.put("entry", inst); box.compact(); } bool isValid() { if (!Hive.isBoxOpen("settings")) { return false; } else { return true; } } Future> Open() { Close(); return Hive.openBox( "settings", path: game_path, compactionStrategy: (entries, deletedEntries) { return deletedEntries > 1; }, ); } static void Close() { if (Hive.isBoxOpen("settings")) { var box = Hive.box("settings"); box.compact(); box.close(); } } String getServerPath() { return "$game_path${Platform.pathSeparator}server"; } 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"; } String getModJailPath() { return "$game_path${Platform.pathSeparator}mods.jail"; } Future createModFolderIfNotExists() async { if (Directory(getModPath()).existsSync()) { return; } else { await Directory(getModPath()).create(recursive: true); } } Future createModJailFolderIfNotExists() async { if (Directory(getModJailPath()).existsSync()) { return; } else { await Directory(getModJailPath()).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" ]); } Future createServerModFolderIfNotExists() async { Directory dir = Directory(PathHelper(pth: getServerPath()) .resolve("ConanSandbox") .resolve("Mods") .build()); if (await dir.exists()) { return; } else await dir.create(recursive: true); } File getModListFile() { return File(PathHelper(pth: getServerPath()) .resolve("ConanSandbox") .resolve("Mods") .resolve("modlist.txt") .build()); } }