SaveManage.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. var t = require;
  2. var e = module;
  3. var i = exports;
  4. Object.defineProperty(i, "__esModule", { value: !0 }), (i.ZHANGAIWU_OPERTYPE = void 0);
  5. const s = t("App");
  6. (i.default = class {
  7. constructor() {
  8. (this.saveKey = ""),
  9. (this.gameKey = "ZhaXinLaoTie"),
  10. (this.list = []),
  11. (this.map = {}),
  12. (this.isNeedUpdateDayData = !1),
  13. (this.updateDayDataCaches = {}),
  14. (this._saveInfo = null);
  15. }
  16. init() {
  17. this.add(this, "SaveInfo", !1, !0), this.load("SaveInfo");
  18. }
  19. add(t, e, i = !0, s = !0) {
  20. var o = i ? this.saveKey + e : e,
  21. s = { key: e, obj: t, saveKey: o, isAuto: s };
  22. if (this.map[e]) {
  23. var a = this.list.length;
  24. for (let t = 0; t < a; t++)
  25. if (this.list[t].saveKey === o) {
  26. this.list.splice(t, 1);
  27. break;
  28. }
  29. }
  30. this.list.push(s), (this.map[e] = s);
  31. }
  32. removeByKey(t) {
  33. this.list.remove(this.map[t]), delete this.map[t];
  34. }
  35. removeByObj(e) {
  36. for (let t = this.list.length - 1; 0 <= t; t--)
  37. this.list[t].obj == e && (delete this.map[this.list[t].key], this.list.splice(t, 1));
  38. }
  39. setSaveKey(t) {
  40. this.saveKey = t;
  41. }
  42. getSaveObj(t) {
  43. return this.map[t];
  44. }
  45. autoSave() {
  46. for (var t of this.list) t.isAuto && this.$save(t);
  47. }
  48. getAllAutoSaveData() {
  49. let t = {};
  50. for (var e of this.list) {
  51. var i;
  52. e.isAuto ? ((i = this.$save(e)), (t[e.saveKey] = i)) : this.$save(e);
  53. }
  54. return JSON.stringify(t);
  55. }
  56. syncByData(t) {
  57. for (const e in t) cc.sys.localStorage.setItem(e, JSON.stringify(t[e]));
  58. }
  59. saveAll() {
  60. for (var t of this.list) this.$save(t);
  61. Log.trace("存档成功!");
  62. }
  63. $save(t) {
  64. var e = t.obj.createMemento(t.key);
  65. return (
  66. e && "object" == typeof e
  67. ? cc.sys.localStorage.setItem(t.saveKey, JSON.stringify(e))
  68. : cc.sys.localStorage.removeItem(t.saveKey),
  69. e
  70. );
  71. }
  72. save(t) {
  73. t = this.map[t];
  74. t && this.$save(t);
  75. }
  76. clearAllItem() {
  77. (this.list = []), (this.map = {});
  78. }
  79. clearItem(t) {
  80. t = this.map[t];
  81. t && cc.sys.localStorage.removeItem(t.saveKey);
  82. }
  83. checkIsNeedUpdateData() {
  84. var t, e;
  85. this._saveInfo &&
  86. ((e = s.default.DateUtils.Now()),
  87. (t = Math.floor((e - this._saveInfo.timezoneOffset) / 1e3 / 60 / 60 / 24)),
  88. (e = Math.floor((t + 3) / 7)),
  89. (this._saveInfo.week = e),
  90. -1 !== this._saveInfo.day
  91. ? t > this._saveInfo.day &&
  92. ((this._saveInfo.day = t), (this.updateDayDataCaches = {}), this.$updateDayData(t))
  93. : (this._saveInfo.day = t));
  94. }
  95. clear() {
  96. for (var t of this.list) cc.sys.localStorage.removeItem(t.saveKey);
  97. }
  98. $updateDayData(t) {
  99. for (var e of this.list)
  100. e.obj.updateDayData && e.obj.updateDayData(e.key, t), (this.updateDayDataCaches[e.key] = !0);
  101. this.isNeedUpdateDayData = !0;
  102. }
  103. updateWeekData() {
  104. for (var t of this.list) t.obj.updateWeekData && t.obj.updateWeekData(t.key);
  105. }
  106. loadAll() {
  107. for (var t of this.list) {
  108. var e;
  109. t.isAuto && ((e = this.$load(t.saveKey)), t.obj.setMemento(e, t.key));
  110. }
  111. console.error(`加载本地文件 `);
  112. Log.trace("加载存档成功!");
  113. }
  114. $load(e) {
  115. var i = cc.sys.localStorage.getItem(e);
  116. if (i)
  117. try {
  118. return JSON.parse(i);
  119. } catch (t) {
  120. return (
  121. cc.sys.localStorage.removeItem(e),
  122. Log.error(
  123. `\u52a0\u8f7d\u672c\u5730\u6587\u4ef6:${e}, \u89e3\u6790\u7684\u5185\u5bb9:${i} \u51fa\u9519!!!!`,
  124. t
  125. ),
  126. null
  127. );
  128. }
  129. return null;
  130. }
  131. createMemento() {
  132. return this._saveInfo;
  133. }
  134. setMemento(t) {
  135. var e, i;
  136. t
  137. ? (isNaN(t.timezoneOffset) && (t.timezoneOffset = 6e4 * new Date().getTimezoneOffset()),
  138. (this._saveInfo = t))
  139. : ((i = s.default.DateUtils.Now()),
  140. (e = 6e4 * new Date().getTimezoneOffset()),
  141. (t = Math.floor((i - e) / 1e3 / 60 / 60 / 24)),
  142. (i = Math.floor((t + 3) / 7)),
  143. (this._saveInfo = { day: t, week: i, timezoneOffset: e })),
  144. s.default.DateUtils.setTimezoneOffset(this._saveInfo.timezoneOffset);
  145. }
  146. load(t) {
  147. let e = this.map[t];
  148. var i;
  149. e &&
  150. // ((i = ddd),
  151. ((i = this.$load(e.saveKey)),
  152. e.obj.setMemento(i, t),
  153. this.isNeedUpdateDayData &&
  154. !this.updateDayDataCaches[t] &&
  155. ((this.updateDayDataCaches[t] = !0),
  156. e.obj.updateDayData && e.obj.updateDayData(t, this._saveInfo.day)));
  157. }
  158. }),
  159. ((i = i.ZHANGAIWU_OPERTYPE || (i.ZHANGAIWU_OPERTYPE = {}))[(i.CLOSE = 0)] = "CLOSE"),
  160. (i[(i.NEED_CLOSE = -1)] = "NEED_CLOSE"),
  161. (i[(i.NEED_OPEN = -2)] = "NEED_OPEN"),
  162. (i[(i.OPEN = -3)] = "OPEN"),
  163. (i[(i.BUY = -4)] = "BUY");