SignData.ts 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. import { Data } from "../../../mk/data/Data";
  2. import { GameProp, RewardState, RewardType } from "../GameData";
  3. /**
  4. * @description 签到数据
  5. * @author 邹勇 薛鸿潇
  6. */
  7. export class SignData extends Data {
  8. /**
  9. * 数据初始化
  10. */
  11. public init() {
  12. // 签到配置表
  13. if (gData.gameData.configs.SignIn) {
  14. gData.gameData.configs.SignIn.forEach(item_data => {
  15. for (const key in item_data) {
  16. item_data[key] = parseInt(item_data[key])
  17. }
  18. });
  19. this.c_sign = gData.gameData.configs.SignIn;
  20. }
  21. // 服务端数据
  22. this.sign_last_bar = gData.gameData.gameData.signInDay;
  23. // 客户端测试数据
  24. // this.sign_last_bar = gData.gameData.getProp(GameProp.sign_last_bar);
  25. // this.sign_can = gData.gameData.getProp(GameProp.sign_can);
  26. }
  27. /** 标志位:是否需要刷新数据 */
  28. public init_data: boolean = false;
  29. /** 配置数据 签到 */
  30. private _c_sign: Array<CSignType> = [];
  31. set c_sign(value: Array<CSignType>) {
  32. this._c_sign = value;
  33. this.init_data = true;
  34. }
  35. get c_sign(): Array<CSignType> {
  36. return this._c_sign;
  37. }
  38. private _sign_last_bar = 0;
  39. /** 上次签到天数 */
  40. set sign_last_bar(value: number) {
  41. this._sign_last_bar = value;
  42. this.init_data = true;
  43. }
  44. get sign_last_bar(): number {
  45. return this._sign_last_bar;
  46. }
  47. /** 签到列表数据 */
  48. public list_data: Array<Array<CSignType>> = [];
  49. /** 初始化列表数据 */
  50. public initListData() {
  51. // if (!this.c_sign.length) this.c_sign = this.getSignConfig();
  52. let list_data = [];
  53. for (let i = 0; i < 30;) {
  54. let item_data = [];
  55. for (let j = 0; j < 3; j++) {
  56. let data = this.c_sign[i];
  57. item_data.push(data);
  58. i++;
  59. }
  60. list_data.push(item_data);
  61. }
  62. this.list_data = list_data;
  63. }
  64. /** 客户端造的假配置 */
  65. // private getSignConfig() {
  66. // let c_sign = [];
  67. // for (let i = 0; i < 30; i++) {
  68. // const id = i + 1;
  69. // let data: any = {};
  70. // data.id = id;
  71. // data.reward_type = i % 3;
  72. // data.count = id;
  73. // data.login_day = id;
  74. // data.video_limit = 0;
  75. // c_sign.push(data);
  76. // }
  77. // return c_sign;
  78. // }
  79. /**
  80. * 获取奖励状态
  81. * @param login_day 登陆日
  82. * @returns 状态123
  83. */
  84. public getStateByDay(login_day: number) {
  85. let _state = 0;
  86. if (login_day <= this.sign_last_bar) {
  87. _state = RewardState.none;
  88. } else if (gData.gameData.gameData.isSignInToday && login_day == (this.sign_last_bar + 1)) {
  89. _state = RewardState.unlock;
  90. } else {
  91. _state = RewardState.lock;
  92. }
  93. return _state;
  94. }
  95. /**
  96. * 存在可签到天数
  97. * - 签到天数用完后将不可签到
  98. */
  99. public haveSignDay() {
  100. if (this.sign_last_bar >= this.c_sign.length) {
  101. return false;
  102. } else {
  103. return true;
  104. }
  105. }
  106. /**
  107. * 签到完成
  108. */
  109. public async signComplete() {
  110. gData.gameData.gameData.isSignInToday = 0;
  111. this.sign_last_bar++;
  112. gData.gameData.gameData.signInDay++;
  113. gData.gameData.gameData.isSignInToday = 0;
  114. // 自定义状态
  115. let new_data = [
  116. {
  117. key: GameProp.sign_can,
  118. value: gData.gameData.gameData.isSignInToday
  119. },
  120. {
  121. key: GameProp.sign_last_bar,
  122. value: this.sign_last_bar
  123. }
  124. ]
  125. gData.gameData.setProps(new_data);
  126. // 奖励展示
  127. let reward_data = this.c_sign[this.sign_last_bar - 1];
  128. if (reward_data.rewardType === RewardType.redBag) {
  129. // 红包
  130. gData.reward.data = [reward_data];// 数据列表
  131. mk.ui.openPanel('module/reward/reward')
  132. } else if (reward_data.rewardType === RewardType.rmb) {
  133. // 陷阱提现
  134. let data = {};
  135. let response = await mk.http.sendRequest('readyCash', 'POST', JSON.stringify(data));
  136. // let response = await mk.http.sendRequest('readyCash', 'POST', JSON.stringify(data));
  137. if (response.errcode != 0) {
  138. mk.tip.pop('系统异常');
  139. return;
  140. }
  141. if (response.CashMode == 0) {//星云打款
  142. gData.receiptNotice.receip_rmb = reward_data.rewardNum;
  143. gData.cashNormal.receip_total_rmb += gData.receiptNotice.receip_rmb;
  144. mk.ui.openPanel('module/receiptNotice/receiptNotice');
  145. } else if (response.CashMode == 1) {//公众号打款
  146. }
  147. } else if (reward_data.rewardType === RewardType.pigRmb) {
  148. // 金猪现金
  149. gData.reward.data = [{ rewardNum: reward_data.rewardNum, rewardType: reward_data.rewardType }]
  150. mk.ui.openPanel('module/reward/reward');
  151. }
  152. // 获得奖励
  153. }
  154. /**
  155. * 获取数据列表中第一个可签到条目的index
  156. * @returns index
  157. */
  158. public getItemIndexByCanSign(): number {
  159. let index = 0;
  160. const l_count = this.list_data.length;
  161. for (let i = 0; i < l_count; i++) {
  162. const i_count = this.list_data[i].length;
  163. for (let j = 0; j < i_count; j++) {
  164. let state = this.getStateByDay(this.list_data[i][j].loginDay);
  165. if (gData.gameData.gameData.isSignInToday) {
  166. if (state === RewardState.unlock) {
  167. index = i;
  168. return index
  169. }
  170. } else {
  171. if (state === RewardState.lock) {
  172. index = i;
  173. return index
  174. }
  175. }
  176. }
  177. }
  178. return index;
  179. }
  180. }
  181. export type CSignType = {
  182. id: number,
  183. /** 天数 */
  184. loginDay: number,
  185. /** 奖励数量 */
  186. rewardNum: number,
  187. /** 奖励类型 */
  188. rewardType: number,
  189. /** 视频限制 */
  190. videoNum: number,
  191. }