import {MapSchema, SetSchema, Schema, type} from "@colyseus/schema"; import {Pet} from "./Pet"; import {Card} from "./Card"; import {singleton} from "../../common/Singleton"; import {GameEnv} from "../../cfg/GameEnv"; import {PlayerStateConst} from "../../constants/PlayerStateConst"; export class Player extends Schema { @type("string") id: string; @type("number") heroId: number; /** * 手牌 */ cards = new MapSchema(); @type({ set: "string" }) cardSet = new SetSchema(); /** * 当前hp */ @type("number") hp: number; /** * 状态 * 0: 正常状态 * 1: 已准备好 * 2: 死亡 * 3: 已换完牌 * 9: 掉线 */ @type("number") state: number; /** * 随从 */ @type({ map: Pet }) pets = new MapSchema(); /** * 队伍 */ @type("number") team: number; //TODO: set hp, ap from cfg constructor(id: string, heroId: number, team: number) { super(); this.id = id; this.state = PlayerStateConst.PLAYER_NORMAL; this.hp = 0; this.heroId = heroId; this.team = team; for (let i = 0; i < singleton(GameEnv).maxPlayerPetCount + 1; i++) { let pet = new Pet(); pet.isHero = i === 0; this.pets.set(i+'', pet); } } }