import { Data } from "../../../mk/data/Data"; import { GameProp, RewardState, RewardType } from "../GameData"; /** * @description 签到数据 * @author 邹勇 薛鸿潇 */ export class SignData extends Data { /** * 数据初始化 */ public init() { // 签到配置表 if (gData.gameData.configs.SignIn) { gData.gameData.configs.SignIn.forEach(item_data => { for (const key in item_data) { item_data[key] = parseInt(item_data[key]) } }); this.c_sign = gData.gameData.configs.SignIn; } // 服务端数据不对 // this.sign_last_bar = gData.gameData.gameData.signInDay; this.sign_last_bar = gData.gameData.getProp(GameProp.sign_last_bar); // this.sign_can = gData.gameData.getProp(GameProp.sign_can); } /** 标志位:是否需要刷新数据 */ public init_data: boolean = false; /** 配置数据 签到 */ private _c_sign: Array = []; set c_sign(value: Array) { this._c_sign = value; this.init_data = true; } get c_sign(): Array { return this._c_sign; } // 服务端数据 上次签到天数 private _sign_last_bar = 0; set sign_last_bar(value: number) { this._sign_last_bar = value; this.init_data = true; } get sign_last_bar(): number { return this._sign_last_bar; } // 服务端数据 能够签到 private _sign_can = 1; set sign_can(value: number) { this._sign_can = value; this.init_data = true; } get sign_can(): number { return this._sign_can; } /** 签到列表数据 */ public list_data = []; /** 初始化列表数据 */ public initListData() { // if (!this.c_sign.length) this.c_sign = this.getSignConfig(); let list_data = []; for (let i = 0; i < 30;) { let item_data = []; for (let j = 0; j < 3; j++) { let data = this.c_sign[i]; item_data.push(data); i++; } list_data.push(item_data); } this.list_data = list_data; } /** 客户端造的假配置 */ // private getSignConfig() { // let c_sign = []; // for (let i = 0; i < 30; i++) { // const id = i + 1; // let data: any = {}; // data.id = id; // data.reward_type = i % 3; // data.count = id; // data.login_day = id; // data.video_limit = 0; // c_sign.push(data); // } // return c_sign; // } /** * 获取奖励状态 * @param login_day 登陆日 * @returns 状态123 */ public getStateByDay(login_day: number) { let _state = 0; if (login_day <= this.sign_last_bar) { _state = RewardState.none; } else if (this.sign_can && login_day == (this.sign_last_bar + 1)) { _state = RewardState.unlock; } else { _state = RewardState.lock; } return _state; } /** * 存在可签到天数 * - 签到天数用完后将不可签到 */ public haveSignDay() { if (this.sign_last_bar >= this.c_sign.length) { return false; } else { return true; } } /** * 签到完成 */ public signComplete() { this.sign_can = 0; this.sign_last_bar++; // 自定义状态 let new_data = [ { key: GameProp.sign_can, value: this.sign_can }, { key: GameProp.sign_last_bar, value: this.sign_last_bar } ] gData.gameData.setProps(new_data); // 奖励展示 let reward_data = this.c_sign[this.sign_last_bar - 1]; if (reward_data.rewardType === RewardType.redBag) { gData.reward.lid_type = gData.reward.type_lid.none;// 无盖子类型 gData.reward.data = [reward_data];// 数据列表 mk.ui.openPanel('module/reward/reward') } else if (reward_data.rewardType === RewardType.rmb || reward_data.rewardType === RewardType.pigRmb) { } // 获得奖励 } } export type CSignType = { id: number, /** 天数 */ loginDay: number, /** 奖励数量 */ rewardNum: number, /** 奖励类型 */ rewardType: number, /** 视频限制 */ videoNum: number, }