SaveManage.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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. Log.trace("加载存档成功!");
  112. }
  113. $load(e) {
  114. var i = cc.sys.localStorage.getItem(e);
  115. if (i)
  116. try {
  117. return JSON.parse(i);
  118. } catch (t) {
  119. return (
  120. cc.sys.localStorage.removeItem(e),
  121. Log.error(
  122. `\u52a0\u8f7d\u672c\u5730\u6587\u4ef6:${e}, \u89e3\u6790\u7684\u5185\u5bb9:${i} \u51fa\u9519!!!!`,
  123. t
  124. ),
  125. null
  126. );
  127. }
  128. return null;
  129. }
  130. createMemento() {
  131. return this._saveInfo;
  132. }
  133. setMemento(t) {
  134. var e, i;
  135. t
  136. ? (isNaN(t.timezoneOffset) && (t.timezoneOffset = 6e4 * new Date().getTimezoneOffset()),
  137. (this._saveInfo = t))
  138. : ((i = s.default.DateUtils.Now()),
  139. (e = 6e4 * new Date().getTimezoneOffset()),
  140. (t = Math.floor((i - e) / 1e3 / 60 / 60 / 24)),
  141. (i = Math.floor((t + 3) / 7)),
  142. (this._saveInfo = { day: t, week: i, timezoneOffset: e })),
  143. s.default.DateUtils.setTimezoneOffset(this._saveInfo.timezoneOffset);
  144. }
  145. load(t) {
  146. let e = this.map[t];
  147. // let ddd
  148. // if (t == 'GAME_DATA') {
  149. // ddd = this.$load(e.saveKey)
  150. // console.error(ddd);
  151. // console.error(ddd);
  152. // console.error(ddd.maps);
  153. // console.error(ddd.maps[0]);
  154. // console.error(ddd.maps[0].curId = 14);
  155. // }
  156. var i;
  157. e &&
  158. // ((i = ddd),
  159. ((i = this.$load(e.saveKey)),
  160. e.obj.setMemento(i, t),
  161. this.isNeedUpdateDayData &&
  162. !this.updateDayDataCaches[t] &&
  163. ((this.updateDayDataCaches[t] = !0),
  164. e.obj.updateDayData && e.obj.updateDayData(t, this._saveInfo.day)));
  165. }
  166. }),
  167. ((i = i.ZHANGAIWU_OPERTYPE || (i.ZHANGAIWU_OPERTYPE = {}))[(i.CLOSE = 0)] = "CLOSE"),
  168. (i[(i.NEED_CLOSE = -1)] = "NEED_CLOSE"),
  169. (i[(i.NEED_OPEN = -2)] = "NEED_OPEN"),
  170. (i[(i.OPEN = -3)] = "OPEN"),
  171. (i[(i.BUY = -4)] = "BUY");