DataMgr.ts 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  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 Game from "../Game";
  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 watchVideoNum = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.watchVideoNum);
  65. if (!!watchVideoNum) {
  66. PlayerConst.watchVideoNum = watchVideoNum;
  67. }
  68. //在线时间
  69. let onlineTime = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.onlineTime);
  70. if (!!onlineTime) {
  71. PlayerConst.onlineTime = onlineTime;
  72. }
  73. //过关数量
  74. let passNum = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.passNum);
  75. if (!!passNum) {
  76. PlayerConst.passNum = passNum;
  77. }
  78. //地址
  79. let address = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.adress);
  80. if (!!address) {
  81. PlayerConst.adress = address;
  82. }
  83. //平均ecpm
  84. let average_ecpm = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.average_ecpm);
  85. if (!!average_ecpm) {
  86. PlayerConst.average_ecpm = average_ecpm;
  87. }
  88. //体力回复
  89. let energyNum = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.energyNum);
  90. if (!!energyNum) {
  91. PlayerConst.energyNum = energyNum;
  92. }
  93. //剩余体力恢复时间
  94. let leftEnergyRecoverTime = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.leftEnergyRecoverTime);
  95. if (!!leftEnergyRecoverTime) {
  96. PlayerConst.leftEnergyRecoverTime = leftEnergyRecoverTime;
  97. }
  98. let date = new Date();
  99. //体力值恢复计算--------------------------------------------------------------------
  100. let energyChangeTime = StorageMgr.Inst.getStorage(DATA_STORAGE_KEY.energyChangeTime);
  101. mk.console.log("energyChangeTime", energyChangeTime);
  102. if (!!energyChangeTime) {
  103. let curTime = date.getTime();
  104. //计算总的间隔时间
  105. let timeInterval = Math.floor((curTime - energyChangeTime) / 1000);
  106. //计算整段恢复的数量
  107. let recoverNum = Math.floor(timeInterval / GameConst.recoverTimePerEnergy);
  108. //去除整段恢复剩余的时间
  109. let leftTime = timeInterval - recoverNum * GameConst.recoverTimePerEnergy;
  110. //如果存在剩余恢复时间
  111. if (leftEnergyRecoverTime) {
  112. if (leftTime >= leftEnergyRecoverTime) {
  113. recoverNum += 1;
  114. PlayerConst.leftEnergyRecoverTime = leftTime - leftEnergyRecoverTime;
  115. }
  116. else {
  117. PlayerConst.leftEnergyRecoverTime = leftEnergyRecoverTime - leftTime;
  118. }
  119. }
  120. if (recoverNum > 0) {
  121. PlayerConst.energyNum += recoverNum;
  122. if (PlayerConst.energyNum >= GameConst.maxEnergyNum) {
  123. PlayerConst.energyNum = GameConst.maxEnergyNum;
  124. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.energyNum, PlayerConst.energyNum);
  125. }
  126. }
  127. mk.console.log("recoverNum", recoverNum);
  128. mk.console.log("timeInterval", timeInterval);
  129. }
  130. }
  131. /**更新金钱数量
  132. * @param cashNum 加减的cashNum值
  133. */
  134. public updateMoneyNum(cashNum: number) {
  135. PlayerConst.cashNum += cashNum;
  136. if (cashNum < 0) {
  137. PlayerConst.cashNum = PlayerConst.cashNum <= 0 ? 0 : PlayerConst.cashNum;
  138. }
  139. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.cashNum, PlayerConst.cashNum);
  140. if (Start.Inst) {
  141. Start.Inst.initCashNum();
  142. }
  143. let node_cashOutUI = mk.ui.getCurOnPanel("CashOutUI");
  144. if (node_cashOutUI) {
  145. node_cashOutUI.getComponent(CashOutUI).initCashNum();
  146. }
  147. mk.event.emit(EVENT_TYPE.UPDATE_CashNum);
  148. }
  149. /**更新观看视频次数
  150. * num 视频数
  151. */
  152. public updateWatchVideoNum(num: number) {
  153. mk.console.log("观看视频次数!!!!!!!!!!!!!!!!!!!!!!!", PlayerConst.watchVideoNum, num);
  154. PlayerConst.watchVideoNum = num;
  155. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.watchVideoNum, PlayerConst.watchVideoNum);
  156. }
  157. /**更新观看视频次数
  158. * num 视频数
  159. */
  160. public updateOnlineTime(num: number) {
  161. PlayerConst.onlineTime = num;
  162. // LogUtil.log("计算在线时间!!!!!!!!!!!!!!!!!!!!!!!", num);
  163. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.onlineTime, PlayerConst.onlineTime);
  164. }
  165. public interval_countOnlineTime: number = 0;
  166. /**开始计算在线时间 */
  167. public startCountOnlineTime() {
  168. this.interval_countOnlineTime = setInterval(() => {
  169. DataMgr.Inst.updateOnlineTime(PlayerConst.onlineTime += 10);
  170. //如果每日体现界面存在
  171. let node_dailyCashOutUI = mk.ui.getCurOnPanel("DailyCashOutUI");
  172. if (node_dailyCashOutUI) {
  173. let dailyCashOut = node_dailyCashOutUI.getComponent(DailyCashOutUI);
  174. dailyCashOut.initOnlineTime();
  175. dailyCashOut.initCashOutState();
  176. }
  177. }, 10000);
  178. }
  179. /**更新观看视频次数
  180. * num 视频数
  181. */
  182. public updatePassNum(num: number) {
  183. mk.console.log("通过次数!!!!!!!!!!!!!!!!!!!!!!!", num);
  184. PlayerConst.passNum = num;
  185. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.passNum, PlayerConst.passNum);
  186. }
  187. /**
  188. * 更新道具数据
  189. * @param updateType 更新类型 0 刷新 1 增 2减
  190. * @param propType 道具类型
  191. * @param propNum 道具数目
  192. */
  193. updatePropNum(updateType: number, propType: PROPTYPE, propNum: number = 1) {
  194. mk.console.log("更新道具数据", propType, propNum);
  195. switch (propType) {
  196. case PROPTYPE.Hammer:
  197. if (updateType == 0) {
  198. PlayerConst.hanmmerPropNum = propNum;
  199. }
  200. else {
  201. PlayerConst.hanmmerPropNum += propNum;
  202. }
  203. if (Game.Inst) {
  204. Game.Inst.initHammerPropNum();
  205. }
  206. break;
  207. case PROPTYPE.Change:
  208. if (updateType == 0) {
  209. PlayerConst.changePropNum = propNum;
  210. }
  211. else {
  212. PlayerConst.changePropNum += propNum;
  213. }
  214. if (Game.Inst) {
  215. Game.Inst.initChanegPropNum();
  216. }
  217. break;
  218. case PROPTYPE.Reset:
  219. if (updateType == 0) {
  220. PlayerConst.resetPropNum = propNum;
  221. }
  222. else {
  223. PlayerConst.resetPropNum += propNum;
  224. }
  225. if (Game.Inst) {
  226. Game.Inst.initResetPropNum();
  227. }
  228. break;
  229. }
  230. if (updateType === 0) {
  231. return;
  232. }
  233. HttpMgr.Inst.prop(updateType, Game.Inst.curPropType, 1).then((data) => {
  234. }).catch((err) => {
  235. });
  236. }
  237. /**更新当前过关红包 */
  238. updateCurPassRedPacket() {
  239. PlayerConst.todayPassRedPacketNum++;
  240. }
  241. /** */
  242. updateTodayPassRedPacketNum(num: number) {
  243. PlayerConst.todayPassRedPacketNum = num;
  244. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.todayPassRedPacketNum, PlayerConst.todayPassRedPacketNum);
  245. }
  246. //更新地址
  247. updateAdress(adress: string) {
  248. PlayerConst.adress = adress;
  249. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.adress, PlayerConst.adress);
  250. }
  251. //巨量回传数据--------------------------------------------------------------------------------------------
  252. /**更新巨量回传 */
  253. updateJuliangApi() {
  254. if (!PlayerConst.ifJuliangApiApiActivie) {
  255. this.updateJuliangApiActive(true);
  256. HttpMgr.Inst.juliangAPIActive(0);
  257. }
  258. else {
  259. if (!PlayerConst.ifJuliangApiSencondActivie && PlayerConst.loginDay > 1) {
  260. this.updateJuliangApiSecondActive(true);
  261. HttpMgr.Inst.juliangAPIActive(6);
  262. }
  263. }
  264. }
  265. /**更新巨量激活回传 */
  266. updateJuliangApiActive(ifActive: boolean) {
  267. PlayerConst.ifJuliangApiApiActivie = true;
  268. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.ifJuliangApiApiActivie, PlayerConst.ifJuliangApiApiActivie);
  269. }
  270. /**更新巨量次留激活回传 */
  271. updateJuliangApiSecondActive(ifActive: boolean) {
  272. PlayerConst.ifJuliangApiSencondActivie = true;
  273. StorageMgr.Inst.setStorage(DATA_STORAGE_KEY.ifJuliangApiSencondActivie, PlayerConst.ifJuliangApiSencondActivie);
  274. }
  275. /**重设数据 */
  276. resteData() {
  277. mk.console.log("重设数据!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
  278. this.updateTodayPassRedPacketNum(0);
  279. this.updateWatchVideoNum(0);
  280. this.updateOnlineTime(0);
  281. this.updatePassNum(0);
  282. }
  283. }