SignData.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import { Data } from "../../../mk/data/Data";
  2. import { GameProp, RewardState } from "../GameData";
  3. /**
  4. * @description 签到数据
  5. * @author 邹勇 薛鸿潇
  6. */
  7. export class SignData extends Data {
  8. /** 标志位:是否需要刷新数据 */
  9. public init_data: boolean = false;
  10. /** 配置数据 签到 */
  11. public c_sign = [];
  12. // 服务端数据 上次签到天数
  13. private _sign_last_bar = 3;
  14. set sign_last_bar(value: number) {
  15. this._sign_last_bar = value;
  16. this.init_data = true;
  17. }
  18. get sign_last_bar(): number {
  19. return this._sign_last_bar;
  20. }
  21. // 服务端数据 能够签到
  22. private _sign_can = 1;
  23. set sign_can(value: number) {
  24. this._sign_can = value;
  25. this.init_data = true;
  26. }
  27. get sign_can(): number {
  28. return this._sign_can;
  29. }
  30. /** 签到列表数据 */
  31. public list_data = [];
  32. /** 初始化列表数据 */
  33. public initListData() {
  34. if (!this.c_sign.length) this.c_sign = this.getSignConfig();
  35. let list_data = [];
  36. for (let i = 0; i < 30;) {
  37. let item_data = [];
  38. for (let j = 0; j < 3; j++) {
  39. let data = this.c_sign[i];
  40. item_data.push(data);
  41. i++;
  42. }
  43. list_data.push(item_data);
  44. }
  45. this.list_data = list_data;
  46. }
  47. /** 客户端造的假配置 */
  48. private getSignConfig() {
  49. let c_sign = [];
  50. for (let i = 0; i < 30; i++) {
  51. const id = i + 1;
  52. let data: any = {};
  53. data.id = id;
  54. data.reward_type = i % 3;
  55. data.count = id;
  56. data.login_day = id;
  57. data.video_limit = 0;
  58. c_sign.push(data);
  59. }
  60. return c_sign;
  61. }
  62. /**
  63. * 获取奖励状态
  64. * @param login_day 登陆日
  65. * @returns 状态123
  66. */
  67. public getStateByDay(login_day: number) {
  68. let _state = 0;
  69. if (login_day <= this.sign_last_bar) {
  70. _state = RewardState.none;
  71. } else if (this.sign_can && login_day == (this.sign_last_bar + 1)) {
  72. _state = RewardState.unlock;
  73. } else {
  74. _state = RewardState.lock;
  75. }
  76. return _state;
  77. }
  78. /**
  79. * 存在可签到天数
  80. * - 签到天数用完后将不可签到
  81. */
  82. public haveSignDay() {
  83. if (this.sign_last_bar >= this.c_sign.length) {
  84. return false;
  85. } else {
  86. return true;
  87. }
  88. }
  89. /**
  90. * 签到完成
  91. */
  92. public signComplete() {
  93. this.sign_can = 0;
  94. this.sign_last_bar++;
  95. let new_data = [
  96. {
  97. key: GameProp.sign_can,
  98. value: this.sign_can
  99. },
  100. {
  101. key: GameProp.sign_last_bar,
  102. value: this.sign_last_bar
  103. }
  104. ]
  105. gData.gameData.setProps(new_data);
  106. }
  107. }