SettingsSerializable.cs 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using Serilog.Events;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. namespace VeloeMinecraftLauncher.Utils;
  6. public class SettingsSerializable : ICloneable
  7. {
  8. public string JavaPath { get; set; } = string.Empty;
  9. public string MinecraftForlderPath { get; set; } = Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar;
  10. public UInt32 MaxRam { get; set; } = 2048;
  11. public bool UseCustomJava { get; set; } = false;
  12. public bool SetMaxRam { get; set; } = false;
  13. public bool SetPath { get; set; } = true;
  14. public bool CheckGameAssets { get; set; } = false;
  15. public bool GameLogToLauncher { get; set; } = false;
  16. public string Username { get; set; } = string.Empty;
  17. public string LastChosenVersion { get; set; } = string.Empty;
  18. public bool SetMaxLog { get; set; } = false;
  19. public UInt32 MaxLog { get; set; } = 1024;
  20. public bool FullScreen { get; set; } = false;
  21. public bool CustomSize { set; get; } = false;
  22. public UInt32 ClientWidth { get; set; } = 1280;
  23. public UInt32 ClientHeight { get; set; } = 720;
  24. public bool HideLauncher { get; set; } = false;
  25. public LogEventLevel ConsoleLogEventLevel { get; set; } = LogEventLevel.Debug;
  26. public LogEventLevel FileLogEventLevel { get; set; } = LogEventLevel.Debug;
  27. public Dictionary<string, string> ServerAutoConnectLinks { get; set; } = new();
  28. public object Clone()
  29. {
  30. return MemberwiseClone();
  31. }
  32. public override bool Equals(object? obj)
  33. {
  34. return obj is SettingsSerializable serializable &&
  35. MaxRam == serializable.MaxRam &&
  36. UseCustomJava == serializable.UseCustomJava &&
  37. SetMaxRam == serializable.SetMaxRam &&
  38. SetPath == serializable.SetPath &&
  39. CheckGameAssets == serializable.CheckGameAssets &&
  40. GameLogToLauncher == serializable.GameLogToLauncher &&
  41. SetMaxLog == serializable.SetMaxLog &&
  42. MaxLog == serializable.MaxLog &&
  43. FullScreen == serializable.FullScreen &&
  44. LastChosenVersion == serializable.LastChosenVersion &&
  45. Username == serializable.Username &&
  46. CustomSize == serializable.CustomSize &&
  47. ClientWidth == serializable.ClientWidth &&
  48. ClientHeight == serializable.ClientHeight &&
  49. HideLauncher == serializable.HideLauncher &&
  50. ConsoleLogEventLevel == serializable.ConsoleLogEventLevel &&
  51. FileLogEventLevel == serializable.FileLogEventLevel &&
  52. MinecraftForlderPath == serializable.MinecraftForlderPath &&
  53. JavaPath == serializable.JavaPath;
  54. }
  55. public override int GetHashCode()
  56. {
  57. HashCode hash = new HashCode();
  58. hash.Add(JavaPath);
  59. hash.Add(MinecraftForlderPath);
  60. hash.Add(MaxRam);
  61. hash.Add(UseCustomJava);
  62. hash.Add(SetMaxRam);
  63. hash.Add(SetPath);
  64. hash.Add(CheckGameAssets);
  65. hash.Add(GameLogToLauncher);
  66. hash.Add(Username);
  67. hash.Add(LastChosenVersion);
  68. hash.Add(SetMaxLog);
  69. hash.Add(MaxLog);
  70. hash.Add(FullScreen);
  71. hash.Add(CustomSize);
  72. hash.Add(ClientWidth);
  73. hash.Add(ClientHeight);
  74. hash.Add(HideLauncher);
  75. hash.Add(ConsoleLogEventLevel);
  76. hash.Add(FileLogEventLevel);
  77. return hash.ToHashCode();
  78. }
  79. }