ModItem.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System.Globalization;
  2. using System.IO;
  3. namespace MeidoPhotoStudio.Plugin;
  4. public class ModItem : MenuItem
  5. {
  6. public ModItem()
  7. {
  8. }
  9. public ModItem(string menuFile) =>
  10. MenuFile = menuFile;
  11. public string MenuFile { get; set; }
  12. public string BaseMenuFile { get; set; }
  13. public string Name { get; set; }
  14. public string Category { get; set; }
  15. public float Priority { get; set; }
  16. public bool IsMod { get; private set; }
  17. public bool IsOfficialMod { get; private set; }
  18. public static ModItem OfficialMod(string menuFile) =>
  19. new()
  20. {
  21. MenuFile = menuFile,
  22. IsMod = true,
  23. IsOfficialMod = true,
  24. Priority = 1000f,
  25. };
  26. public static ModItem Mod(string menuFile) =>
  27. new()
  28. {
  29. MenuFile = menuFile,
  30. IsMod = true,
  31. };
  32. public static ModItem Deserialize(BinaryReader binaryReader) =>
  33. new()
  34. {
  35. MenuFile = binaryReader.ReadNullableString(),
  36. BaseMenuFile = binaryReader.ReadNullableString(),
  37. IconFile = binaryReader.ReadNullableString(),
  38. Name = binaryReader.ReadNullableString(),
  39. Category = binaryReader.ReadNullableString(),
  40. Priority = float.Parse(binaryReader.ReadNullableString()),
  41. IsMod = binaryReader.ReadBoolean(),
  42. IsOfficialMod = binaryReader.ReadBoolean(),
  43. };
  44. public override string ToString() =>
  45. IsOfficialMod ? $"{Path.GetFileName(MenuFile)}#{BaseMenuFile}" : MenuFile;
  46. public void Serialize(BinaryWriter binaryWriter)
  47. {
  48. if (IsOfficialMod)
  49. return;
  50. binaryWriter.WriteNullableString(MenuFile);
  51. binaryWriter.WriteNullableString(BaseMenuFile);
  52. binaryWriter.WriteNullableString(IconFile);
  53. binaryWriter.WriteNullableString(Name);
  54. binaryWriter.WriteNullableString(Category);
  55. binaryWriter.WriteNullableString(Priority.ToString(CultureInfo.InvariantCulture));
  56. binaryWriter.Write(IsMod);
  57. binaryWriter.Write(IsOfficialMod);
  58. }
  59. }