ConanServerManager/lib/settings.dart
2023-11-01 03:28:33 -07:00

94 lines
1.9 KiB
Dart

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 {
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<Box<E>> Open<E>() {
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<Mod> 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");
}
bool serverInstalled() {
return File(
getServerPath() + Platform.pathSeparator + "ConanSandboxServer.exe")
.existsSync();
}
Future<ProcessResult> RunUpdate() {
return Process.run(getSteamCmd(), [
"+@sSteamCmdForcePlatformType",
"windows",
"+force_install_dir",
getServerPath(),
"+login",
"anonymous",
"+app_update",
"443030",
"public",
"validate",
"+quit"
]);
}
}