diff --git a/Млаумчерб.Клиент/Config.cs b/Млаумчерб.Клиент/Config.cs deleted file mode 100644 index ef5448e..0000000 --- a/Млаумчерб.Клиент/Config.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Newtonsoft.Json; - -namespace Млаумчерб.Клиент; - -public class Config -{ - public string username { get; set; } = ""; - public int memory { get; set; } = 4096; - public bool fullscreen { get; set; } - - [JsonIgnore] public static Config Instance { get; private set; } = new(); - - public const string FileName = "млаумчерб.конфиг"; - public const string BackupFileName = "млаумчерб.конфиг.старый"; - public static readonly Encoding UTF8WithoutBom = new UTF8Encoding(false); - - public static void LoadFromFile() - { - //TODO: log - if(!File.Exists(FileName)) - { - SaveToFile(); - return; - } - - string text = File.ReadAllText(FileName); - Config? c = JsonConvert.DeserializeObject(text); - if (c is not null) - Instance = c; - else - { - File.Move(FileName, BackupFileName, true); - SaveToFile(); - Errors.ShowMessageBox($"Не удалось прочитать конфиг.\n" + - $"Сломанный конфиг переименован в '{BackupFileName}'.\n" + - $"Создан новый файл '{FileName}'."); - } - } - - public static void SaveToFile() - { - //TODO: log - var text = JsonConvert.SerializeObject(Instance, Formatting.Indented); - File.WriteAllText(FileName, text, UTF8WithoutBom); - } -} \ No newline at end of file diff --git a/Млаумчерб.Клиент/Главне.cs b/Млаумчерб.Клиент/Главне.cs index 3d24583..9ad4dc6 100644 --- a/Млаумчерб.Клиент/Главне.cs +++ b/Млаумчерб.Клиент/Главне.cs @@ -7,7 +7,7 @@ using Avalonia; namespace Млаумчерб.Клиент; -class Главне +public class Главне { [STAThread] public static void Main(string[] args) diff --git a/Млаумчерб.Клиент/Млаумчерб.Клиент.csproj b/Млаумчерб.Клиент/Млаумчерб.Клиент.csproj index 1adb1df..1c11a44 100644 --- a/Млаумчерб.Клиент/Млаумчерб.Клиент.csproj +++ b/Млаумчерб.Клиент/Млаумчерб.Клиент.csproj @@ -8,7 +8,7 @@ true гойда.manifest true - капитал\icon.ico + капитал\кубе.ico млаумчерб @@ -17,7 +17,9 @@ + + diff --git a/Млаумчерб.Клиент/Настройки.cs b/Млаумчерб.Клиент/Настройки.cs new file mode 100644 index 0000000..28ba930 --- /dev/null +++ b/Млаумчерб.Клиент/Настройки.cs @@ -0,0 +1,42 @@ +using Newtonsoft.Json; + +namespace Млаумчерб.Клиент; + +public class Настройки +{ + public string имя_пользователя { get; set; } = ""; + public int выделенная_память_мб { get; set; } = 4096; + public bool открывать_на_весь_экран { get; set; } + + public static readonly Encoding UTF8WithoutBom = new UTF8Encoding(false); + + public static Настройки ЗагрузитьИзФайла(string имя_файла = "млаумчерб.настройки") + { + //TODO: лог + if(!File.Exists(имя_файла)) + { + return new Настройки(); + } + + string текст = File.ReadAllText(имя_файла); + Настройки? н = JsonConvert.DeserializeObject<Настройки>(текст); + if (н == null) + { + File.Move(имя_файла, имя_файла + ".старые", true); + н = new Настройки(); + н.СохранитьВФайл(); + Ошибки.ПоказатьСообщение($"Не удалось прочитать настройки.\n" + + $"Сломанный файл настроек переименован в '{имя_файла}.старые'.\n" + + $"Создан новый файл '{имя_файла}'."); + } + + return н; + } + + public void СохранитьВФайл(string имя_файла = "млаумчерб.настройки") + { + //TODO: log + var текст = JsonConvert.SerializeObject(this, Formatting.Indented); + File.WriteAllText(имя_файла, текст, UTF8WithoutBom); + } +} \ No newline at end of file diff --git a/Млаумчерб.Клиент/Окне.axaml b/Млаумчерб.Клиент/Окне.axaml index afd68d1..f4d22e4 100644 --- a/Млаумчерб.Клиент/Окне.axaml +++ b/Млаумчерб.Клиент/Окне.axaml @@ -1,22 +1,32 @@ + Icon="avares://млаумчерб/капитал/кубе.ico" + FontFamily="{StaticResource PlexMono}" FontSize="18" + MinWidth="800" MinHeight="500" + Width="800" Height="500" + WindowStartupLocation="CenterScreen"> - 40 * - + 30 * 30 + - - * 400 * + + * 300 * + + + 30 * + 30 + + + + Classes="dark_box white_border" + Margin="5 5"> * 60 @@ -35,17 +45,27 @@ Foreground="Blue" Value="{Binding #window.MemoryLimit}"> - Fullscreen - Update game files + + Fullscreen + + + Update game files + - + + + + diff --git a/Млаумчерб.Клиент/Окне.axaml.cs b/Млаумчерб.Клиент/Окне.axaml.cs index 9ede669..0675045 100644 --- a/Млаумчерб.Клиент/Окне.axaml.cs +++ b/Млаумчерб.Клиент/Окне.axaml.cs @@ -1,3 +1,4 @@ +using System.ComponentModel.DataAnnotations; using Avalonia; using Avalonia.Controls; using Avalonia.Data; @@ -52,14 +53,14 @@ public partial class Окне : Window { try { - Config.LoadFromFile(); - Username = Config.Instance.username; - MemoryLimit = Config.Instance.memory; - Fullscreen = Config.Instance.fullscreen; + Приложение.Настройки = Настройки.ЗагрузитьИзФайла(); + Username = Приложение.Настройки.имя_пользователя; + MemoryLimit = Приложение.Настройки.выделенная_память_мб; + Fullscreen = Приложение.Настройки.открывать_на_весь_экран; } catch (Exception ex) { - Errors.ShowMessageBox(ex); + Ошибки.ПоказатьСообщение(ex); } } @@ -67,16 +68,15 @@ public partial class Окне : Window { try { - Config.Instance.username = Username; - Config.Instance.memory = MemoryLimit; - Config.Instance.fullscreen = Fullscreen; - Config.SaveToFile(); - + Приложение.Настройки.имя_пользователя = Username; + Приложение.Настройки.выделенная_память_мб = MemoryLimit; + Приложение.Настройки.открывать_на_весь_экран = Fullscreen; + Приложение.Настройки.СохранитьВФайл(); } catch (Exception ex) { - Errors.ShowMessageBox(ex); + Ошибки.ПоказатьСообщение(ex); } } } \ No newline at end of file diff --git a/Млаумчерб.Клиент/Errors.cs b/Млаумчерб.Клиент/Ошибки.cs similarity index 76% rename from Млаумчерб.Клиент/Errors.cs rename to Млаумчерб.Клиент/Ошибки.cs index 780a5c8..263cfc0 100644 --- a/Млаумчерб.Клиент/Errors.cs +++ b/Млаумчерб.Клиент/Ошибки.cs @@ -6,12 +6,12 @@ using MsBox.Avalonia.Models; namespace Млаумчерб.Клиент; -public static class Errors +public static class Ошибки { - internal static void ShowMessageBox(Exception err) - => ShowMessageBox(err.ToStringDemystified()); + internal static void ПоказатьСообщение(Exception err) + => ПоказатьСообщение(err.ToStringDemystified()); - internal static async void ShowMessageBox(string err) + internal static async void ПоказатьСообщение(string err) { var box = MessageBoxManager.GetMessageBoxCustom(new MessageBoxCustomParams { diff --git a/Млаумчерб.Клиент/Приложение.axaml b/Млаумчерб.Клиент/Приложение.axaml index 78bbfe3..56a234e 100644 --- a/Млаумчерб.Клиент/Приложение.axaml +++ b/Млаумчерб.Клиент/Приложение.axaml @@ -4,6 +4,19 @@ RequestedThemeVariant="Dark"> + + + + + diff --git a/Млаумчерб.Клиент/Приложение.axaml.cs b/Млаумчерб.Клиент/Приложение.axaml.cs index 679bf36..5ca0861 100644 --- a/Млаумчерб.Клиент/Приложение.axaml.cs +++ b/Млаумчерб.Клиент/Приложение.axaml.cs @@ -20,4 +20,6 @@ public partial class Приложение : Application base.OnFrameworkInitializationCompleted(); } + + public static Настройки Настройки = new(); } \ No newline at end of file diff --git a/Млаумчерб.Клиент/капитал/button.png b/Млаумчерб.Клиент/капитал/button.png deleted file mode 100644 index c4c41c0..0000000 Binary files a/Млаумчерб.Клиент/капитал/button.png and /dev/null differ diff --git a/Млаумчерб.Клиент/капитал/icon.ico b/Млаумчерб.Клиент/капитал/кубе.ico similarity index 100% rename from Млаумчерб.Клиент/капитал/icon.ico rename to Млаумчерб.Клиент/капитал/кубе.ico diff --git a/Млаумчерб.Клиент/капитал/background.png b/Млаумчерб.Клиент/капитал/фоне.png similarity index 100% rename from Млаумчерб.Клиент/капитал/background.png rename to Млаумчерб.Клиент/капитал/фоне.png