diff --git a/Launcher-UI/Assets/Sprites/microsoft-logo.png b/Launcher-UI/Assets/Sprites/microsoft-logo.png new file mode 100644 index 0000000..cdce9c1 Binary files /dev/null and b/Launcher-UI/Assets/Sprites/microsoft-logo.png differ diff --git a/Launcher-UI/ConfigManager.cs b/Launcher-UI/ConfigManager.cs index 5a3e796..4d17fad 100644 --- a/Launcher-UI/ConfigManager.cs +++ b/Launcher-UI/ConfigManager.cs @@ -6,25 +6,43 @@ namespace Plombir; public class ConfigManager { + static private readonly string defaultRuntime = "./runtime"; + static private readonly string defaultVersion = "1.20.1"; + static private readonly string defaultNickname = "slugcat"; + + static private readonly string currentTweaksVersion = "1.2.0"; + + static private readonly string defaultLoginType = "offline"; + static private readonly string defaultUuid = "offline"; + static private readonly string defaultAccsessToken = "offline"; + static private readonly string defaultClientToken = "offline"; + public static void BuildDefault() { TomlTable toml = new TomlTable { ["title"] = "Launcher tweaks file!", + ["tweaks-version"] = currentTweaksVersion, ["runtime-path"] = new TomlString { - Value = "./runtime", + Value = defaultRuntime, Comment = "Path to folder that will hold all minecraft versions" }, ["last-version-launched"] = new TomlString { - Value = "1.20.1", + Value = defaultVersion, Comment = "Saving last launched version to use it after launch" }, - ["nickname"] = "slugcat" + ["nickname"] = defaultNickname, + ["login-method"] = defaultLoginType, + ["uuid"] = defaultUuid, + ["accsess-token"] = defaultAccsessToken, + ["client-token"] = defaultClientToken, + + }; using (StreamWriter writer = File.CreateText("tweaks.toml")) @@ -45,7 +63,43 @@ public class ConfigManager { TomlTable table = TOML.Parse(reader); - return table[key]; + // If config don't contains it means it's oudated or broken. + if (!table.TryGetNode(key, out var node)) + { + WriteInConfig(key, "NaN"); + } + + // In case if config is fine return its value + if (table[key].ToString() != "NaN") + { + if ((key == "tweaks-version") & (table[key] != currentTweaksVersion)) + { + Console.WriteLine("Warning! Tweaks version mismatch!"); + } + return table[key]; + } + + // Handling out-dated or broken toml files by filling with defaults + switch (key) + { + case "runtime-path": { WriteInConfig(key, defaultRuntime); return defaultRuntime; } + case "last-version-launched": { WriteInConfig(key, defaultVersion); return defaultVersion; } + case "nickname": { WriteInConfig(key, defaultNickname); return defaultNickname; } + + case "accsess-token": { WriteInConfig(key, defaultAccsessToken); return defaultAccsessToken; } + case "client-token": { WriteInConfig(key, defaultClientToken); return defaultClientToken; } + case "uuid": { WriteInConfig(key, defaultUuid); return defaultUuid; } + case "login-method": { WriteInConfig(key, defaultLoginType); return defaultLoginType; } + case "tweaks-version": + { + WriteInConfig(key, currentTweaksVersion); + Console.WriteLine("Warning! Can't locate tweaks version! Attempting auto recovery..."); + return "possibly broken"; + } + } + + return null; + } } diff --git a/Launcher-UI/Views/SettingsWindow.axaml b/Launcher-UI/Views/SettingsWindow.axaml index f96f1c2..eab1ae2 100644 --- a/Launcher-UI/Views/SettingsWindow.axaml +++ b/Launcher-UI/Views/SettingsWindow.axaml @@ -1,14 +1,12 @@ - - - + + + - - + + + + + + + + + + + +