SaveManage.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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. console.error('自动保存数据');
  47. for (var t of this.list) t.isAuto && this.$save(t);
  48. }
  49. getAllAutoSaveData() {
  50. console.error('getAllAutoSaveData自动保存数据');
  51. let t = {};
  52. for (var e of this.list) {
  53. var i;
  54. e.isAuto ? ((i = this.$save(e)), (t[e.saveKey] = i)) : this.$save(e);
  55. }
  56. return JSON.stringify(t);
  57. }
  58. syncByData(t) {
  59. for (const e in t) cc.sys.localStorage.setItem(e, JSON.stringify(t[e]));
  60. }
  61. saveAll() {
  62. console.error('全部保存数据');
  63. for (var t of this.list) this.$save(t);
  64. Log.trace("存档成功!");
  65. }
  66. $save(t) {
  67. var e = t.obj.createMemento(t.key);
  68. console.error('保存数据');
  69. console.error(e);
  70. return (
  71. e && "object" == typeof e
  72. ? cc.sys.localStorage.setItem(t.saveKey, JSON.stringify(e))
  73. : cc.sys.localStorage.removeItem(t.saveKey),
  74. e
  75. );
  76. }
  77. save(t) {
  78. t = this.map[t];
  79. t && this.$save(t);
  80. }
  81. clearAllItem() {
  82. (this.list = []), (this.map = {});
  83. }
  84. clearItem(t) {
  85. t = this.map[t];
  86. t && cc.sys.localStorage.removeItem(t.saveKey);
  87. }
  88. checkIsNeedUpdateData() {
  89. var t, e;
  90. this._saveInfo &&
  91. ((e = s.default.DateUtils.Now()),
  92. (t = Math.floor((e - this._saveInfo.timezoneOffset) / 1e3 / 60 / 60 / 24)),
  93. (e = Math.floor((t + 3) / 7)),
  94. (this._saveInfo.week = e),
  95. -1 !== this._saveInfo.day
  96. ? t > this._saveInfo.day &&
  97. ((this._saveInfo.day = t), (this.updateDayDataCaches = {}), this.$updateDayData(t))
  98. : (this._saveInfo.day = t));
  99. }
  100. clear() {
  101. for (var t of this.list) cc.sys.localStorage.removeItem(t.saveKey);
  102. }
  103. $updateDayData(t) {
  104. for (var e of this.list)
  105. e.obj.updateDayData && e.obj.updateDayData(e.key, t), (this.updateDayDataCaches[e.key] = !0);
  106. this.isNeedUpdateDayData = !0;
  107. }
  108. updateWeekData() {
  109. for (var t of this.list) t.obj.updateWeekData && t.obj.updateWeekData(t.key);
  110. }
  111. loadAll() {
  112. for (var t of this.list) {
  113. var e;
  114. t.isAuto && ((e = this.$load(t.saveKey)), t.obj.setMemento(e, t.key));
  115. }
  116. console.error(`加载本地文件 `);
  117. Log.trace("加载存档成功!");
  118. }
  119. $load(e) {
  120. var i = cc.sys.localStorage.getItem(e);
  121. if (e==='GAME_DATA') {
  122. console.error('在这边截取到地图数据');
  123. console.error(JSON.parse(i));
  124. }
  125. if (i)
  126. try {
  127. return JSON.parse(i);
  128. } catch (t) {
  129. return (
  130. cc.sys.localStorage.removeItem(e),
  131. Log.error(
  132. `\u52a0\u8f7d\u672c\u5730\u6587\u4ef6:${e}, \u89e3\u6790\u7684\u5185\u5bb9:${i} \u51fa\u9519!!!!`,
  133. t
  134. ),
  135. null
  136. );
  137. }
  138. return null;
  139. }
  140. createMemento() {
  141. return this._saveInfo;
  142. }
  143. setMemento(t) {
  144. var e, i;
  145. t
  146. ? (isNaN(t.timezoneOffset) && (t.timezoneOffset = 6e4 * new Date().getTimezoneOffset()),
  147. (this._saveInfo = t))
  148. : ((i = s.default.DateUtils.Now()),
  149. (e = 6e4 * new Date().getTimezoneOffset()),
  150. (t = Math.floor((i - e) / 1e3 / 60 / 60 / 24)),
  151. (i = Math.floor((t + 3) / 7)),
  152. (this._saveInfo = { day: t, week: i, timezoneOffset: e })),
  153. s.default.DateUtils.setTimezoneOffset(this._saveInfo.timezoneOffset);
  154. }
  155. load(t) {
  156. let e = this.map[t];
  157. var i;
  158. e &&
  159. // ((i = ddd),
  160. ((i = this.$load(e.saveKey)),
  161. e.obj.setMemento(i, t),
  162. this.isNeedUpdateDayData &&
  163. !this.updateDayDataCaches[t] &&
  164. ((this.updateDayDataCaches[t] = !0),
  165. e.obj.updateDayData && e.obj.updateDayData(t, this._saveInfo.day)));
  166. }
  167. }),
  168. ((i = i.ZHANGAIWU_OPERTYPE || (i.ZHANGAIWU_OPERTYPE = {}))[(i.CLOSE = 0)] = "CLOSE"),
  169. (i[(i.NEED_CLOSE = -1)] = "NEED_CLOSE"),
  170. (i[(i.NEED_OPEN = -2)] = "NEED_OPEN"),
  171. (i[(i.OPEN = -3)] = "OPEN"),
  172. (i[(i.BUY = -4)] = "BUY");