import { RankData, RankItemData } from "../UI/Rank/RankData"; import { ConfigData } from "./ConfigData"; import { Data } from "./Data"; export class GameData extends Data { public needReloadData = false; private _productingListMap: Map> = new Map(); /**建筑生产队列列表 */ public getProductingList(id: number): Array<{ productID: number, ripeDate: number }> { if (!this._productingListMap.has(id)) { this._productingListMap.set(id, []); } return this._productingListMap.get(id); } private _unlockMap: Map = new Map(); /**建筑解锁流水线数量列表 */ public getUnlock(id: number): number { if (!this._unlockMap.has(id)) { if (id <= 30003) { this._unlockMap.set(id, 5); } else { this._unlockMap.set(id, 1); } } return this._unlockMap.get(id); } public setUnlock(id: number, count: number): void { this._unlockMap.set(id, count); } /**已激活的建筑列表 */ private buildDataMap: Map = new Map(); public hasBuildData(id: number): boolean { return this.buildDataMap.has(id); } public getBuildData(id: number): number { return this.buildDataMap.get(id); } public setBuildData(id: number, userBuildID: number): void { this.buildDataMap.set(id, userBuildID); } /**设置建筑数据(生产队列,流水线数量,激活情况等) */ public async setGameData(data: any) { this._productingListMap = new Map(); this._unlockMap = new Map(); this.buildDataMap = new Map(); let product = ConfigData.configMap.get("product"); for (let i = 0; i < data.length; i++) { const build = data[i]; if (!this.buildDataMap.has(build.buildID)) { this.buildDataMap.set(build.buildID, build.userBuildID); this.setUnlock(build.buildID, build.addValue + 1); } if (build.productID != 0) { let result = product[build.productID]; this.getProductingList(build.buildID).push({ productID: build.productID, ripeDate: build.plantTime * 1000 + result["time"] * 1000 }); } } } /**是否有任务可领取 */ public taskReceive = false; /**是否有3日活动任务可领取 */ public threeDayTaskReceive = 0; /**3日活动还需要邀请人数 */ public needChildCount: number = 0; /**3日活动激活后结束时间 */ public threedayTaskTime: number = 0 /**种植奖励数据 */ public productPrize = null; /**排行榜数据*/ public rankData: RankData; /**排行榜积分数据*/ public rankScore: number = 0; /**是否刷新排行榜活动倒计时*/ public isRefreshRankTime: boolean; /**是否可以领取排行榜奖励*/ public isCanGetRankReward: boolean; }