DataMgr.ts 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  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 Start from "../Start";
  10. import StorageMgr from "./StorageMgr";
  11. import { PROPTYPE } from "../data/Enum";
  12. import GamePlay from "../GamePlay";
  13. import HttpMgr from "./HttpMgr";
  14. import { EVENT_TYPE } from "../../game/data/GameData";
  15. const { ccclass, property } = cc._decorator;
  16. @ccclass
  17. export default class DataMgr extends cc.Component {
  18. //单例模式---------------------------
  19. private static instance: DataMgr = null;
  20. public static get Inst(): DataMgr {
  21. if (!DataMgr.instance) {
  22. DataMgr.instance = new DataMgr();
  23. }
  24. return DataMgr.instance;
  25. }
  26. /**初始化缓存数据 */
  27. initStorageData() {
  28. //uin
  29. let uin = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.uin);
  30. mk.console.log("uin", uin);
  31. if (!!uin) {
  32. GameConst.uin = mk.encrypt.decrypt(uin, GameConst.localEncryptKey, GameConst.appid);
  33. GameConst.tmp_uin = GameConst.uin;
  34. mk.console.log("GameConst.uin", GameConst.uin);
  35. }
  36. //session_key
  37. let session_key = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.session_key);
  38. if (!!session_key) {
  39. GameConst.session_key = mk.encrypt.decrypt(session_key, GameConst.localEncryptKey, GameConst.appid);
  40. }
  41. //login_ticket
  42. let login_ticket = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.login_ticket);
  43. if (!!login_ticket) {
  44. GameConst.login_ticket = mk.encrypt.decrypt(login_ticket, GameConst.localEncryptKey, GameConst.appid);
  45. }
  46. //是否巨量api 回传激活
  47. let ifJuliangApiActivie = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.ifJuliangApiApiActivie);
  48. if (!!ifJuliangApiActivie) {
  49. PlayerConst.ifJuliangApiApiActivie = ifJuliangApiActivie;
  50. }
  51. //是否巨量api 二次激活
  52. let ifJuliangApiSencondActivie = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.ifJuliangApiSencondActivie);
  53. if (!!ifJuliangApiSencondActivie) {
  54. PlayerConst.ifJuliangApiSencondActivie = ifJuliangApiSencondActivie;
  55. }
  56. //今天通关的红包数目
  57. let todayPassRedPacketNum = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.todayPassRedPacketNum);
  58. if (!!todayPassRedPacketNum) {
  59. PlayerConst.todayPassRedPacketNum = todayPassRedPacketNum;
  60. }
  61. //地址
  62. let address = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.adress);
  63. if (!!address) {
  64. PlayerConst.adress = address;
  65. }
  66. //平均ecpm
  67. let average_ecpm = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.average_ecpm);
  68. if (!!average_ecpm) {
  69. PlayerConst.average_ecpm = average_ecpm;
  70. }
  71. //体力回复
  72. let energyNum = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.energyNum);
  73. if (!!energyNum) {
  74. PlayerConst.energyNum = energyNum;
  75. }
  76. //剩余体力恢复时间
  77. let leftEnergyRecoverTime = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.leftEnergyRecoverTime);
  78. if (!!leftEnergyRecoverTime) {
  79. PlayerConst.leftEnergyRecoverTime = leftEnergyRecoverTime;
  80. }
  81. let date = new Date();
  82. //体力值恢复计算--------------------------------------------------------------------
  83. let energyChangeTime = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.energyChangeTime);
  84. mk.console.log("energyChangeTime", energyChangeTime);
  85. if (!!energyChangeTime) {
  86. let curTime = date.getTime();
  87. //计算总的间隔时间
  88. let timeInterval = Math.floor((curTime - energyChangeTime) / 1000);
  89. //计算整段恢复的数量
  90. let recoverNum = Math.floor(timeInterval / GameConst.recoverTimePerEnergy);
  91. //去除整段恢复剩余的时间
  92. let leftTime = timeInterval - recoverNum * GameConst.recoverTimePerEnergy;
  93. //如果存在剩余恢复时间
  94. if (leftEnergyRecoverTime) {
  95. if (leftTime >= leftEnergyRecoverTime) {
  96. recoverNum += 1;
  97. PlayerConst.leftEnergyRecoverTime = leftTime - leftEnergyRecoverTime;
  98. }
  99. else {
  100. PlayerConst.leftEnergyRecoverTime = leftEnergyRecoverTime - leftTime;
  101. }
  102. }
  103. if (recoverNum > 0) {
  104. PlayerConst.energyNum += recoverNum;
  105. if (PlayerConst.energyNum >= GameConst.maxEnergyNum) {
  106. PlayerConst.energyNum = GameConst.maxEnergyNum;
  107. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.energyNum, PlayerConst.energyNum);
  108. }
  109. }
  110. mk.console.log("recoverNum", recoverNum);
  111. mk.console.log("timeInterval", timeInterval);
  112. }
  113. }
  114. /**更新金钱数量
  115. * @param cashNum 加减的cashNum值
  116. */
  117. public updateMoneyNum(cashNum: number) {
  118. PlayerConst.cashNum += cashNum;
  119. if (cashNum < 0) {
  120. PlayerConst.cashNum = PlayerConst.cashNum <= 0 ? 0 : PlayerConst.cashNum;
  121. }
  122. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.cashNum, PlayerConst.cashNum);
  123. if (Start.Inst) {
  124. Start.Inst.initCashNum();
  125. }
  126. mk.event.emit(EVENT_TYPE.UPDATE_CashNum);
  127. }
  128. /**
  129. * 更新道具数据
  130. * @param updateType 更新类型 0 刷新 1 增 2减
  131. * @param propType 道具类型
  132. * @param propNum 道具数目
  133. */
  134. updatePropNum(updateType: number, propType: PROPTYPE, propNum: number = 1) {
  135. mk.console.log("更新道具数据", propType, propNum);
  136. switch (propType) {
  137. case PROPTYPE.Hammer:
  138. if (updateType == 0) {
  139. PlayerConst.hanmmerPropNum = propNum;
  140. }
  141. else {
  142. PlayerConst.hanmmerPropNum += propNum;
  143. }
  144. if (GamePlay.Inst) {
  145. GamePlay.Inst.initHammerPropNum();
  146. }
  147. break;
  148. case PROPTYPE.Change:
  149. if (updateType == 0) {
  150. PlayerConst.changePropNum = propNum;
  151. }
  152. else {
  153. PlayerConst.changePropNum += propNum;
  154. }
  155. if (GamePlay.Inst) {
  156. GamePlay.Inst.initChanegPropNum();
  157. }
  158. break;
  159. case PROPTYPE.Reset:
  160. if (updateType == 0) {
  161. PlayerConst.resetPropNum = propNum;
  162. }
  163. else {
  164. PlayerConst.resetPropNum += propNum;
  165. }
  166. if (GamePlay.Inst) {
  167. GamePlay.Inst.initResetPropNum();
  168. }
  169. break;
  170. }
  171. if (updateType === 0) {
  172. return;
  173. }
  174. HttpMgr.Inst.prop(updateType, GamePlay.Inst.curPropType, 1).then((data) => {
  175. }).catch((err) => {
  176. });
  177. }
  178. /**更新当前过关红包 */
  179. updateCurPassRedPacket() {
  180. PlayerConst.todayPassRedPacketNum++;
  181. }
  182. /** */
  183. updateTodayPassRedPacketNum(num: number) {
  184. PlayerConst.todayPassRedPacketNum = num;
  185. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.todayPassRedPacketNum, PlayerConst.todayPassRedPacketNum);
  186. }
  187. //更新地址
  188. updateAdress(adress: string) {
  189. PlayerConst.adress = adress;
  190. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.adress, PlayerConst.adress);
  191. }
  192. //巨量回传数据--------------------------------------------------------------------------------------------
  193. /**更新巨量回传 */
  194. updateJuliangApi() {
  195. if (!PlayerConst.ifJuliangApiApiActivie) {
  196. this.updateJuliangApiActive(true);
  197. HttpMgr.Inst.juliangAPIActive(0);
  198. }
  199. else {
  200. if (!PlayerConst.ifJuliangApiSencondActivie && PlayerConst.loginDay > 1) {
  201. this.updateJuliangApiSecondActive(true);
  202. HttpMgr.Inst.juliangAPIActive(6);
  203. }
  204. }
  205. }
  206. /**更新巨量激活回传 */
  207. updateJuliangApiActive(ifActive: boolean) {
  208. PlayerConst.ifJuliangApiApiActivie = true;
  209. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.ifJuliangApiApiActivie, PlayerConst.ifJuliangApiApiActivie);
  210. }
  211. /**更新巨量次留激活回传 */
  212. updateJuliangApiSecondActive(ifActive: boolean) {
  213. PlayerConst.ifJuliangApiSencondActivie = true;
  214. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.ifJuliangApiSencondActivie, PlayerConst.ifJuliangApiSencondActivie);
  215. }
  216. /**重设数据 */
  217. resteData() {
  218. mk.console.log("重设数据!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
  219. this.updateTodayPassRedPacketNum(0);
  220. }
  221. }