DataMgr.ts 9.7 KB

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