mlaumcherb/Mlaumcherb.Client.Avalonia/Config.cs

83 lines
3.0 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Mlaumcherb.Client.Avalonia.зримое;
using Mlaumcherb.Client.Avalonia.классы;
using Mlaumcherb.Client.Avalonia.сеть.Update;
using Mlaumcherb.Client.Avalonia.холопы;
namespace Mlaumcherb.Client.Avalonia;
public record Config
{
[JsonRequired] public string config_version { get; set; } = "1.0.0";
public bool debug { get; set; } =
#if DEBUG
true;
#else
false;
#endif
public string player_name { get; set; } = "";
public int max_memory { get; set; } = 4096;
public string minecraft_dir { get; set; } = ".";
public bool download_java { get; set; } = true;
public bool redirect_game_output { get; set; } = false;
public string? last_launched_version { get; set; }
public int max_parallel_downloads { get; set; } = 16;
public GameVersionCatalogProps[] version_catalogs { get; set; } =
[
new() { name = "Тимериховое", url = "https://timerix.ddns.net/minecraft/catalog.json" },
new() { name = "Mojang", url = "https://piston-meta.mojang.com/mc/game/version_manifest_v2.json" },
];
public UpdateHelper.GiteaConfig gitea { get; set; } = new()
{
serverUrl = "https://timerix.ddns.net/git/",
user = "Timerix",
repo = "mlaumcherb",
};
[JsonIgnore] private static IOPath _filePath = "млаумчерб.json";
public static Config LoadFromFile()
{
LauncherApp.Logger.LogDebug(nameof(Config), $"loading config from file '{_filePath}'");
if(!File.Exists(_filePath))
{
LauncherApp.Logger.LogDebug(nameof(Config), "file doesn't exist");
return new Config();
}
string text = File.ReadAllText(_filePath);
string errorMessage = "config is empty";
Config? config = null;
try
{
config = JsonConvert.DeserializeObject<Config>(text);
}
catch (Exception ex)
{
errorMessage = ex.Message;
}
if (config == null)
{
IOPath _brokenPath = _filePath + ".broken";
File.Move(_filePath, _brokenPath, true);
ErrorHelper.ShowMessageBox(nameof(Config),
$"Can't reed config file '{_filePath}'.\n" +
$"New config file has been created. Old is renamed to '{_brokenPath}'.\n\n" +
$"Config parser error: {errorMessage}");
config = new Config();
config.SaveToFile();
}
LauncherApp.Logger.LogDebug(nameof(Config), $"config has been loaded: {config}");
return config;
}
public void SaveToFile()
{
LauncherApp.Logger.LogDebug(nameof(Config), $"saving config to file '{_filePath}'");
var text = JsonConvert.SerializeObject(this, Formatting.Indented);
File.WriteAllText(_filePath, text);
LauncherApp.Logger.LogDebug(nameof(Config), $"config has been saved: {text}");
}
}