DataMgr.ts 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. // Learn TypeScript:
  2. // - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
  3. // Learn Attribute:
  4. // - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
  5. // Learn life-cycle callbacks:
  6. // - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
  7. import PlayerConst, { DATA_STORAGE_KEY } from "../data/PlayerConst";
  8. import GameConst from "../data/GameConst";
  9. import StorageMgr from "./StorageMgr";
  10. import { PROPTYPE } from "../data/Enum";
  11. import GamePlay from "../GamePlay";
  12. import HttpMgr from "./HttpMgr";
  13. import { EVENT_TYPE, GameProp } from "../../game/data/GameData";
  14. const { ccclass, property } = cc._decorator;
  15. @ccclass
  16. export default class DataMgr extends cc.Component {
  17. //单例模式---------------------------
  18. private static instance: DataMgr = null;
  19. public static get Inst(): DataMgr {
  20. if (!DataMgr.instance) {
  21. DataMgr.instance = new DataMgr();
  22. }
  23. return DataMgr.instance;
  24. }
  25. /**初始化缓存数据 */
  26. initStorageData() {
  27. //uin
  28. let uin = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.uin);
  29. mk.console.log("uin", uin);
  30. if (!!uin) {
  31. GameConst.uin = mk.encrypt.decrypt(uin, GameConst.localEncryptKey, GameConst.appid);
  32. GameConst.tmp_uin = GameConst.uin;
  33. mk.console.log("GameConst.uin", GameConst.uin);
  34. }
  35. //session_key
  36. let session_key = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.session_key);
  37. if (!!session_key) {
  38. GameConst.session_key = mk.encrypt.decrypt(session_key, GameConst.localEncryptKey, GameConst.appid);
  39. }
  40. //login_ticket
  41. let login_ticket = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.login_ticket);
  42. if (!!login_ticket) {
  43. GameConst.login_ticket = mk.encrypt.decrypt(login_ticket, GameConst.localEncryptKey, GameConst.appid);
  44. }
  45. //是否巨量api 回传激活
  46. let ifJuliangApiActivie = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.ifJuliangApiApiActivie);
  47. if (!!ifJuliangApiActivie) {
  48. PlayerConst.ifJuliangApiApiActivie = ifJuliangApiActivie;
  49. }
  50. //是否巨量api 二次激活
  51. let ifJuliangApiSencondActivie = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.ifJuliangApiSencondActivie);
  52. if (!!ifJuliangApiSencondActivie) {
  53. PlayerConst.ifJuliangApiSencondActivie = ifJuliangApiSencondActivie;
  54. }
  55. //今天通关的红包数目
  56. let todayPassRedPacketNum = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.todayPassRedPacketNum);
  57. if (!!todayPassRedPacketNum) {
  58. PlayerConst.todayPassRedPacketNum = todayPassRedPacketNum;
  59. }
  60. //地址
  61. let address = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.adress);
  62. if (!!address) {
  63. PlayerConst.adress = address;
  64. }
  65. //平均ecpm
  66. let average_ecpm = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.average_ecpm);
  67. if (!!average_ecpm) {
  68. PlayerConst.average_ecpm = average_ecpm;
  69. }
  70. //剩余体力恢复时间
  71. let leftEnergyRecoverTime = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.leftEnergyRecoverTime);
  72. if (!!leftEnergyRecoverTime) {
  73. PlayerConst.leftEnergyRecoverTime = leftEnergyRecoverTime;
  74. }
  75. let date = new Date();
  76. //体力值恢复计算--------------------------------------------------------------------
  77. let energyChangeTime = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.energyChangeTime);
  78. mk.console.log("energyChangeTime", energyChangeTime);
  79. if (!!energyChangeTime) {
  80. let curTime = date.getTime();
  81. //计算总的间隔时间
  82. let timeInterval = Math.floor((curTime - energyChangeTime) / 1000);
  83. //计算整段恢复的数量
  84. let recoverNum = Math.floor(timeInterval / GameConst.recoverTimePerEnergy);
  85. //去除整段恢复剩余的时间
  86. let leftTime = timeInterval - recoverNum * GameConst.recoverTimePerEnergy;
  87. //如果存在剩余恢复时间
  88. if (leftEnergyRecoverTime) {
  89. if (leftTime >= leftEnergyRecoverTime) {
  90. recoverNum += 1;
  91. PlayerConst.leftEnergyRecoverTime = leftTime - leftEnergyRecoverTime;
  92. }
  93. else {
  94. PlayerConst.leftEnergyRecoverTime = leftEnergyRecoverTime - leftTime;
  95. }
  96. }
  97. if (recoverNum > 0) {
  98. }
  99. mk.console.log("recoverNum", recoverNum);
  100. mk.console.log("timeInterval", timeInterval);
  101. }
  102. }
  103. /**
  104. * 更新道具数据
  105. * @param updateType 更新类型 0 刷新 1 增 2减
  106. * @param propType 道具类型
  107. * @param propNum 道具数目
  108. */
  109. updatePropNum(updateType: number, propType: PROPTYPE, propNum: number = 1) {
  110. mk.console.log("更新道具数据", propType, propNum);
  111. switch (propType) {
  112. case PROPTYPE.Hammer:
  113. let hammerPropNum = gData.gameData.getProp(GameProp.hammerPropNum);
  114. if (updateType == 0) {
  115. }
  116. else {
  117. hammerPropNum += propNum;
  118. }
  119. gData.gameData.setProp(GameProp.hammerPropNum, hammerPropNum);
  120. if (GamePlay.Inst) {
  121. GamePlay.Inst.initHammerPropNum();
  122. }
  123. break;
  124. case PROPTYPE.Change:
  125. let changePropNum = gData.gameData.getProp(GameProp.changePropNum);
  126. if (updateType == 0) {
  127. }
  128. else {
  129. changePropNum += propNum;
  130. }
  131. gData.gameData.setProp(GameProp.changePropNum, changePropNum);
  132. if (GamePlay.Inst) {
  133. GamePlay.Inst.initChanegPropNum();
  134. }
  135. break;
  136. case PROPTYPE.Reset:
  137. let resetPropNum = gData.gameData.getProp(GameProp.resetPropNum);
  138. if (updateType == 0) {
  139. }
  140. else {
  141. resetPropNum += propNum;
  142. }
  143. gData.gameData.setProp(GameProp.resetPropNum, resetPropNum);
  144. if (GamePlay.Inst) {
  145. GamePlay.Inst.initResetPropNum();
  146. }
  147. break;
  148. }
  149. if (updateType === 0) {
  150. return;
  151. }
  152. }
  153. //巨量回传数据--------------------------------------------------------------------------------------------
  154. /**更新巨量回传 */
  155. updateJuliangApi() {
  156. if (!PlayerConst.ifJuliangApiApiActivie) {
  157. this.updateJuliangApiActive(true);
  158. HttpMgr.Inst.juliangAPIActive(0);
  159. }
  160. else {
  161. if (!PlayerConst.ifJuliangApiSencondActivie && PlayerConst.loginDay > 1) {
  162. this.updateJuliangApiSecondActive(true);
  163. HttpMgr.Inst.juliangAPIActive(6);
  164. }
  165. }
  166. }
  167. /**更新巨量激活回传 */
  168. updateJuliangApiActive(ifActive: boolean) {
  169. PlayerConst.ifJuliangApiApiActivie = true;
  170. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.ifJuliangApiApiActivie, PlayerConst.ifJuliangApiApiActivie);
  171. }
  172. /**更新巨量次留激活回传 */
  173. updateJuliangApiSecondActive(ifActive: boolean) {
  174. PlayerConst.ifJuliangApiSencondActivie = true;
  175. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.ifJuliangApiSencondActivie, PlayerConst.ifJuliangApiSencondActivie);
  176. }
  177. }