GameData.ts 5.3 KB

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