/** 转盘数据类 */ import GameM from "../manager/GameM" import RedPointM, { RedPointType } from "../manager/RedPointM" import UiM from "../manager/UiM" import Turntable from "../ui/Turntable" import LogUtil from "../utils/LogUtil" import { CFG_SERVER, HTTP_TYPE } from "./CommonData" import RoleManageData from "./RoleManageData" export default class TurntableData { private static instance: TurntableData = null static get Instance(): TurntableData { if (!TurntableData.instance) { TurntableData.instance = new TurntableData() } return TurntableData.instance } /** 转盘配置 */ turntableCft: any = null /** 宝箱刷新 */ turntableRefreshTimes = 0 /** 每日宝箱抽奖次数 */ turntableTimes = 10 /**转盘奖励提升幅度*/ turntableUpReward: number = 0.5; /**转盘奖励提升随机权重*/ turntableRewardRandom: Array = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5]; /** 额外次数奖励配置 */ turntableExtrasCfg = [[3,20006,58],[5,20006,158],[7,20006,258],[9,20006,358],[10,20006,458]] /** 获取一个奖励 * @param type 抽奖类型 0 免费 1 看视频 * @returns 随机的奖励 */ getTurnTable(type): any { let weight = 0 let weightArr = [] let len = this.turntableCft.length let data = null for (var i = 0; i < len; i++) { data = this.turntableCft[i] if (type == 0) { if (data.type == 1) { weight += data.weight weightArr[i] = weight } else { weightArr[i] = 0 } } else if (type == 1) { weight += data.weight weightArr[i] = weight } } let ran = Math.random() * weight for (var i = 0; i < weightArr.length; i++) { if (ran <= weightArr[i]) { data = this.turntableCft[i] break } } return data } getTurntableCfg() { GameM.commonData.getSingleCfg(CFG_SERVER.TurntableCfg) } /**获取转盘配置 */ getTurnTableCfgBack(data: string) { LogUtil.logV("getTurnTableCfg", data) let jsonObj = JSON.parse(data) this.turntableCft = jsonObj if (UiM.Instance.turntableNode) { UiM.Instance.turntableNode.getComponent(Turntable).init() } } /** 重置转盘次数 * 每日 12点 18点 0点重置 */ updateResetTurntable() { if (this.turntableRefreshTimes < 3) { let hour = new Date(GameM.commonData.gameTime).getHours() if (hour < 12) { if (this.turntableRefreshTimes <= 0) { this.turntableRefreshTimes = 1 this.turntableTimes = 10 GameM.commonData.roleData.turntableUseCard = 0 GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableRefreshTimes, { 'turntableRefreshTimes': this.turntableRefreshTimes }) GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableTimes, { 'turntableTimes': this.turntableTimes }) RoleManageData.Instance.updateRoleData("turntableUseCard", GameM.commonData.roleData.turntableUseCard) } } else if (hour < 18) { if (this.turntableRefreshTimes <= 1) { this.turntableRefreshTimes = 2 this.turntableTimes = 10 GameM.commonData.roleData.turntableUseCard = 0 GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableRefreshTimes, { 'turntableRefreshTimes': this.turntableRefreshTimes }) GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableTimes, { 'turntableTimes': this.turntableTimes }) RoleManageData.Instance.updateRoleData("turntableUseCard", GameM.commonData.roleData.turntableUseCard) } } else { if (this.turntableRefreshTimes <= 2) { this.turntableRefreshTimes = 3 this.turntableTimes = 10 GameM.commonData.roleData.turntableUseCard = 0 GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableRefreshTimes, { 'turntableRefreshTimes': this.turntableRefreshTimes }) GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableTimes, { 'turntableTimes': this.turntableTimes }) RoleManageData.Instance.updateRoleData("turntableUseCard", GameM.commonData.roleData.turntableUseCard) } } } } /** 每日抽奖次数 */ updateTurntableTimes() { this.turntableTimes-- GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableTimes, { 'turntableTimes': this.turntableTimes }) if (this.turntableTimes > 0) { RedPointM.instance.ActiveRedPoint(RedPointType.Turnplate, true) } else { RedPointM.instance.ActiveRedPoint(RedPointType.Turnplate, false) } GameM.commonData.addDailyFinishTimesDataByType(2) } /**刷新转盘次数奖励 */ updateTurntableExtraReward(){ let times = GameM.commonData.roleData.turntableExtrasReward let totalTimes = GameM.commonData.getDailyFinishTimesDataByType(2) // for(let entry of this.turntableExtrasCfg){ // if(totalTimes) // } } }