SaveData.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using SOTF_Struct.Data;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Text.Json.Serialization;
  8. using System.Text.Json;
  9. namespace SOTF_Savegame_Editor.SOTFSave {
  10. public class SaveData {
  11. public class DataObject {
  12. public string HeldOnlyItems { get; set; }
  13. public string VillagesAndCaves { get; set; }
  14. public string VailWorldSim { get; set; }
  15. public string NpcItemInstances { get; set; }
  16. }
  17. public string Version { get; set; }
  18. public DataObject Data { get; set; }
  19. protected SaveData_HeldOnlyItems? _data1 = null;
  20. protected SaveData_VillagesAndCaves? _data2 = null;
  21. protected SaveData_VailWorldSim? _data3 = null;
  22. protected SaveData_NpcItemInstances? _data4 = null;
  23. public SaveData_HeldOnlyItems? HeldOnlyItems {
  24. get {
  25. if (this._data1 == null) {
  26. JsonSerializerOptions options = new() {
  27. NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.AllowNamedFloatingPointLiterals,
  28. AllowTrailingCommas = true,
  29. IgnoreReadOnlyFields = true,
  30. IgnoreReadOnlyProperties = true,
  31. UnknownTypeHandling = JsonUnknownTypeHandling.JsonNode
  32. };
  33. this._data1 = System.Text.Json.JsonSerializer.Deserialize<SaveData_HeldOnlyItems>(this.Data.HeldOnlyItems.Replace("\"NaN\"", "0"), options);
  34. }
  35. return this._data1;
  36. }
  37. }
  38. public SaveData_VillagesAndCaves? VillagesAndCaves {
  39. get {
  40. if (this._data2 == null) {
  41. JsonSerializerOptions options = new() {
  42. NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.AllowNamedFloatingPointLiterals,
  43. AllowTrailingCommas = true,
  44. IgnoreReadOnlyFields = true,
  45. IgnoreReadOnlyProperties = true,
  46. UnknownTypeHandling = JsonUnknownTypeHandling.JsonNode
  47. };
  48. this._data2 = System.Text.Json.JsonSerializer.Deserialize<SaveData_VillagesAndCaves>(this.Data.VillagesAndCaves.Replace("\"NaN\"", "0"), options);
  49. }
  50. return this._data2;
  51. }
  52. }
  53. public SaveData_VailWorldSim? VailWorldSim {
  54. get {
  55. if (this._data3 == null) {
  56. JsonSerializerOptions options = new() {
  57. NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.AllowNamedFloatingPointLiterals,
  58. AllowTrailingCommas = true,
  59. IgnoreReadOnlyFields = true,
  60. IgnoreReadOnlyProperties = true,
  61. UnknownTypeHandling = JsonUnknownTypeHandling.JsonNode
  62. };
  63. this._data3 = System.Text.Json.JsonSerializer.Deserialize<SaveData_VailWorldSim>(this.Data.VailWorldSim.Replace("\"NaN\"", "0"), options);
  64. }
  65. return this._data3;
  66. }
  67. }
  68. public SaveData_NpcItemInstances? NpcItemInstances {
  69. get {
  70. if (this._data4 == null) {
  71. JsonSerializerOptions options = new() {
  72. NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.AllowNamedFloatingPointLiterals,
  73. AllowTrailingCommas = true,
  74. IgnoreReadOnlyFields = true,
  75. IgnoreReadOnlyProperties = true,
  76. UnknownTypeHandling = JsonUnknownTypeHandling.JsonNode
  77. };
  78. this._data4 = System.Text.Json.JsonSerializer.Deserialize<SaveData_NpcItemInstances>(this.Data.NpcItemInstances.Replace("\"NaN\"", "0"), options);
  79. }
  80. return this._data4;
  81. }
  82. }
  83. }
  84. }