GameData.ts 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  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 props: Map<number, number>;
  12. /**
  13. * 初始化游戏数据:网络配置信息,用户信息
  14. * @returns
  15. */
  16. public async init() {
  17. let data: any = { "versionCode": gData.appData.version };
  18. let response = await mk.http.sendData('getAllConfigInfo', data);
  19. if (response.errcode != 0) {
  20. return;
  21. }
  22. this.configs = response.data;
  23. data = {};
  24. response = await mk.http.sendData('getInfoCrypt', data);
  25. if (response.errcode != 0) {
  26. return;
  27. }
  28. if (this.props == null) {
  29. this.props = new Map<number, number>();
  30. }
  31. this.initProps(response.data.gameUserData);
  32. this.dataFinish = true;
  33. gData.moreGame.init()
  34. }
  35. /**
  36. * 保存单个数据
  37. */
  38. public async setProp(key: GameProp, value: number) {
  39. let data = {
  40. key: key + '',
  41. value: value + ''
  42. };
  43. await mk.http.sendData('savePlayerProp', data);
  44. this.props.set(key, value);
  45. this.savePropFinish = true;
  46. }
  47. /**
  48. * 保存多个数据
  49. */
  50. public async setProps(arr: { key: GameProp, value: number }[]) {
  51. let needProp = {};
  52. for (let i = 0; i < arr.length; i++) {
  53. needProp[arr[i].key + ''] = arr[i].value + "";
  54. }
  55. let data = {
  56. needProp: needProp
  57. };
  58. await mk.http.sendData('saveAllPlayerProp', data);
  59. for (let i = 0; i < arr.length; i++) {
  60. this.props.set(arr[i].key, arr[i].value);
  61. }
  62. this.savePropsFinish = true;
  63. }
  64. /** 获取属性 */
  65. public getProp(key: GameProp): number {
  66. if (this.props == null) {
  67. return 0;
  68. }
  69. let value = this.props.get(key);
  70. return value == null ? 0 : value;
  71. }
  72. /**
  73. * 向服务器请求所有属性后更新
  74. */
  75. public async getAllProps() {
  76. let response = await mk.http.sendData('getAllPlayerProp', {});
  77. if (response.errcode != 0) {
  78. return;
  79. }
  80. this.initProps(response.data);
  81. this.getPropsFnish = true;
  82. }
  83. private initProps(data) {
  84. if (data == null) {
  85. return;
  86. }
  87. for (let key in data) {
  88. this.props.set(parseInt(key), JSON.parse(data[key]));
  89. }
  90. }
  91. /**
  92. * 第二天需要重置的数据
  93. */
  94. public resetProps() {
  95. let arr = [];
  96. arr.push({ key: GameProp.sign_can, value: 1 });
  97. this.setProps(arr);
  98. }
  99. }
  100. /**
  101. * 所有模块的非校验数据
  102. */
  103. export enum GameProp {
  104. /** ------------------ 游戏核心数据 --------------------------- */
  105. /** ------------------ 转盘数据 ------------------------------ */
  106. turnable_leftTimes = 20,
  107. /** ------------------ 存钱罐数据 ----------------------------- */
  108. /** ------------------ 签到数据 ----------------------------- */
  109. /** 上次签到进度 */
  110. sign_last_bar = 120,
  111. /** 当前能否签到 */
  112. sign_can = 121,
  113. }
  114. /**
  115. * 奖励状态
  116. */
  117. export enum RewardState {
  118. /** 已领取 */
  119. none = 1,
  120. /** 未解锁 */
  121. lock = 2,
  122. /** 可领取 */
  123. unlock = 3
  124. }
  125. /**
  126. * 音频路径
  127. */
  128. export enum AUDIO_TYPE {
  129. bgm = 'Background_music1', //背景音乐
  130. button = 'Button_click', //按钮点击音效
  131. turntableDraw = 'turntable1', //转盘抽奖结束
  132. turntableDrawEnd = 'turntable_2', //转盘抽奖音效
  133. getGold = 'Get_gold', //获取金币音效
  134. }