GameData.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. /**
  2. * @description 游戏核心玩法数据
  3. * @author 邹勇
  4. */
  5. export class GameData {
  6. public dataFinish: boolean = false;
  7. public savePropFinish: boolean = false;
  8. public savePropsFinish: boolean = false;
  9. public getPropsFnish: boolean = false;
  10. public configs: any = {};
  11. public gameData: PlayerInfoType;
  12. public props: Map<number, number>;
  13. /**
  14. * 初始化游戏数据:网络配置信息,用户信息
  15. * @returns
  16. */
  17. public async init() {
  18. let data: any = { "versionCode": gData.appData.version };
  19. let response = await mk.http.sendData('getAllConfigInfo', data);
  20. if (response.errcode != 0) {
  21. return;
  22. }
  23. this.configs = response.data;
  24. data = {};
  25. response = await mk.http.sendData('getInfoCrypt', data);
  26. if (response.errcode != 0) {
  27. return;
  28. }
  29. this.gameData = response.data;
  30. if (this.props == null) {
  31. this.props = new Map<number, number>();
  32. }
  33. this.initProps(response.data.gameUserData);
  34. gData.moduleData.forEach(element => {
  35. element.init();
  36. });
  37. this.dataFinish = true;
  38. }
  39. /**
  40. * 保存单个数据
  41. */
  42. public async setProp(key: GameProp, value: number) {
  43. let data = {
  44. key: key + '',
  45. value: value + ''
  46. };
  47. await mk.http.sendData('savePlayerProp', data);
  48. this.props.set(key, value);
  49. this.savePropFinish = true;
  50. }
  51. /**
  52. * 保存多个数据
  53. */
  54. public async setProps(arr: { key: GameProp, value: number }[]) {
  55. let needProp = {};
  56. for (let i = 0; i < arr.length; i++) {
  57. needProp[arr[i].key + ''] = arr[i].value + "";
  58. }
  59. let data = {
  60. needProp: needProp
  61. };
  62. await mk.http.sendData('saveAllPlayerProp', data);
  63. for (let i = 0; i < arr.length; i++) {
  64. this.props.set(arr[i].key, arr[i].value);
  65. }
  66. this.savePropsFinish = true;
  67. }
  68. /** 获取属性 */
  69. public getProp(key: GameProp): number {
  70. if (this.props == null) {
  71. return 0;
  72. }
  73. let value = this.props.get(key);
  74. return value == null ? 0 : value;
  75. }
  76. /**
  77. * 向服务器请求所有属性后更新
  78. */
  79. public async getAllProps() {
  80. let response = await mk.http.sendData('getAllPlayerProp', {});
  81. if (response.errcode != 0) {
  82. return;
  83. }
  84. this.initProps(response.data);
  85. this.getPropsFnish = true;
  86. }
  87. private initProps(data) {
  88. if (data == null) {
  89. return;
  90. }
  91. for (let key in data) {
  92. this.props.set(parseInt(key), JSON.parse(data[key]));
  93. }
  94. }
  95. /**
  96. * 第二天需要重置的数据
  97. */
  98. public resetProps() {
  99. let arr = [];
  100. arr.push({ key: GameProp.sign_can, value: 1 });
  101. this.setProps(arr);
  102. }
  103. }
  104. /**
  105. * 所有模块的非校验数据
  106. */
  107. export enum GameProp {
  108. /** ------------------ 游戏核心数据 --------------------------- */
  109. /** ------------------ 转盘数据 ------------------------------ */
  110. turnable_leftTimes = 20,
  111. /** ------------------ 存钱罐数据 ----------------------------- */
  112. /** ------------------ 签到数据 ----------------------------- */
  113. /** 上次签到进度 */
  114. sign_last_bar = 120,
  115. /** 当前能否签到 */
  116. sign_can = 121,
  117. }
  118. /**
  119. * 奖励状态
  120. */
  121. export enum RewardState {
  122. /** 已领取 */
  123. none = 1,
  124. /** 未解锁 */
  125. lock = 2,
  126. /** 可领取 */
  127. unlock = 3
  128. }
  129. /**
  130. * 奖励类型
  131. */
  132. export enum RewardType {
  133. /** 红包币 */
  134. redBag = 1,
  135. /** 毛币 */
  136. rmb = 2,
  137. /** 金猪币 */
  138. pigRmb = 3,
  139. }
  140. /**
  141. * 音频路径
  142. */
  143. export enum AUDIO_TYPE {
  144. bgm = 'Background_music1', //背景音乐
  145. button = 'Button_click', //按钮点击音效
  146. turntableDraw = 'turntable1', //转盘抽奖结束
  147. turntableDrawEnd = 'turntable_2', //转盘抽奖音效
  148. getGold = 'Get_gold', //获取金币音效
  149. }
  150. type PlayerInfoType = {
  151. /** 自定义不需要校验的数据 */
  152. gameUserData: object,
  153. /** 存钱罐??? */
  154. piggyBank: number,
  155. /** 存钱罐能否提现 */
  156. isWithdrawable: boolean,
  157. /** 存钱罐每日提现次数 */
  158. piggyBankCashTimes: number,
  159. /** 累计存钱罐每日提现次数 */
  160. totalPiggyBankCashTimes: number,
  161. /** 上次登录时间 */
  162. lastTime: number,
  163. /** 登录天数 */
  164. loginDays: number,
  165. newPlayer: Boolean,
  166. /** 红包币数量 */
  167. redMoney: number,
  168. /** 累计签到次数 客户端理解 上次签到天数 */
  169. signInDay: number,
  170. /** 转盘次数 */
  171. turntableTimes: number,
  172. /** 版本号 */
  173. versioncfg: string,
  174. }