import 'dart:io'; import 'package:hive/hive.dart'; import 'package:servermanager/credentials.dart'; import 'package:servermanager/mod.dart'; import 'package:servermanager/settingsEntry.dart'; import 'package:servermanager/steamcmd.dart'; class Settings { Settings._(); static final Settings Instance = Settings._(); factory Settings() { return Instance; } SettingsEntry? inst; void Read() { if (!isValid()) return; var box = Hive.box("settings"); inst = box.get("entry") as SettingsEntry; } void Write() { if (!isValid()) return; var box = Hive.box("settings"); box.put("entry", inst); } bool isValid() { if (!Hive.isBoxOpen("settings")) { return false; } else return true; } Future> Open() { Close(); return Hive.openBox("settings", path: inst!.game_path); } static void Close() { if (Hive.isBoxOpen("settings")) { Hive.box("settings").close(); } } String getServerPath() { return inst!.game_path + Platform.pathSeparator + "server"; } bool checkInitDone() { if (File(inst!.steamcmd_path + Platform.pathSeparator + "cxinit") .existsSync()) { return true; } else return false; } String getSteamCmd() { return inst!.steamcmd_path + Platform.pathSeparator + "steamcmd" + (Platform.isWindows ? ".exe" : ".sh"); } String getSteamCmd2FA() { return inst!.steamcmd_path + Platform.pathSeparator + "steamcmd-2fa" + (Platform.isWindows ? ".exe" : ""); } String getModPath() { return inst!.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" ]); } }