import AccountModel from "../../data/Account/AccountModel"; import EventManager from "../../framework/event/EventManager"; import Utils from "../../framework/utils/utils"; import { ATTACK_MODE, EVENT_TYPE } from "./gameEnum"; import gameEventManager from "./gameEventManager"; /**游戏数据类 */ class GameData { /**单例 */ private static _instance: GameData = null; isSetZomBie: boolean = true; //是否可以重生僵尸 bAddBoss: boolean; /**获取游戏数据类单例 */ static get instance(): GameData { if (this._instance == null) { this._instance = new GameData(); } return this._instance; } /**当前攻击模式 */ cur_attack_mode = ATTACK_MODE.close; _curBulletNum: number = 0; _curPowerNum: number = 0; _curDay: number = 1; _curKillZomNum: number = 0; get curDay(): number { return this._curDay; } set curDay(num: number) { this._curDay = num; AccountModel.getInstance().curDay = num; zjSdk?.sendEvent('Entering Day' + num + '');//进入第X天 EventManager.emit(EVENT_TYPE.UPDATE_DAY_NUM); } get curBulletNum(): number { return this._curBulletNum; } set curBulletNum(num: number) { let isSub = num < this._curBulletNum; this._curBulletNum = num; AccountModel.getInstance().curBullet = num; EventManager.emit(EVENT_TYPE.UPDATE_BULLET_NUM,isSub); } get curPowerNum(): number { return this._curPowerNum; } set curPowerNum(num: number) { this._curPowerNum = num; AccountModel.getInstance().curPower = num; EventManager.emit(EVENT_TYPE.UPDATE_TILI_NUM); } get curKillZomNum(): number { return this._curKillZomNum; } set curKillZomNum(num: number) { const isSend = num > this._curKillZomNum; this._curKillZomNum = num; AccountModel.getInstance().curKillZomNum = num; if (isSend){ gameEventManager.emit(EVENT_TYPE.zombieDieForCrazy); } } curPeopleNum: number = 1; peopleDieNum: number = 0; curDiePeopleNum: number = 0; curKillBossNum: number = 0; playerDtList: Object[] = []; isDayTime: boolean = true; curInDungeonType: number; public init() { this.curDay = AccountModel.getInstance().curDay; //当前天数 this.curPowerNum = AccountModel.getInstance().curPower; //当前体力 this._curBulletNum = AccountModel.getInstance().curBullet;//当前子弹数 this.curPeopleNum = 0;//当前玩家数 this.peopleDieNum = 0;//玩家死亡数 this.curDiePeopleNum = 0; //当前死亡玩家数 this._curKillZomNum = AccountModel.getInstance().curKillZomNum; //当前已杀死的僵尸数 this.curKillBossNum = 0; //当前杀死的boss数 this.bAddBoss = false; //-----------------------------以下切换副本界面需要用到的数据------------------------------------------------------// this.playerDtList = []; //this.isDayTime = true; //是否是白天 this.curInDungeonType = null; //当前进入的房间类型 } } export default GameData.instance; /**场景数据类 */ export class SceneData { /**玩家数据组 */ player_datas: PlayerData[] = []; /**道具数据组 */ prop_datas: PropData[] = []; /**僵尸数据组 */ zombie_datas: ZombieData[] = []; } /**玩家数据类 */ export class PlayerData { /**角色id */ id = 0; /**当前血量 */ cur_hp = 0; /**近战武器id */ close_weapon_id = 0; /**远程武器id */ remote_weapon_id = 0; /**位置 */ pos: cc.Vec2 = null; /**设置数据 * @param id 角色id * @param cur_hp 当前血量 * @param close_weapon_id 近战武器id * @param remote_weapon_id 远程武器id * @param pos 位置 */ setData(id: number, cur_hp: number, close_weapon_id: number, remote_weapon_id: number, pos: cc.Vec2) { this.id = id; this.cur_hp = cur_hp; this.close_weapon_id = close_weapon_id; this.remote_weapon_id = remote_weapon_id; this.pos = pos; } } /**道具数据类 */ export class PropData { /**道具id */ id = 0; /**位置 */ pos: cc.Vec2 = null; } /**僵尸数据类 */ export class ZombieData { /**id */ id = 0; /**当前血量 */ cur_hp = 0; /**位置 */ pos: cc.Vec2 = null; }