import {Player} from "../../schema/Player"; import {Card} from "../../schema/Card"; import {CardGameState} from "../../schema/CardGameState"; import { PlayerHandler } from "./PlayerHandler"; import CfgMan from "../CfgMan"; import { EffectCardType } from "../skill/SkillConst"; import { Pet } from "rooms/schema/Pet"; import {SkillParam} from "../skill/SkillParam"; import { Room } from "colyseus"; export class BattleHandler { private _cs: CardGameState; private _players: Map = new Map(); _room: Room; public init(cs: CardGameState, room: Room){ this._cs = cs; this._room = room; }; public addPlayer(aplayer: Player){ let ph = new PlayerHandler(); ph.init(aplayer, this); this._players.set(aplayer, ph); }; public delPlayer(aplayer: Player){ this._players.delete(aplayer); }; public getPlayer(aplayer: Player){ return aplayer? this._players.get(aplayer): null; }; public getTargetPets(){ }; public getTargetPlayer(){ }; /** * 使用卡片 * @param obj */ public useCard(obj: {srcplayer: Player, card: number, cardpoint: number, dbpt_cnt: number, eff_cnt: number, dstplayer: Player, dstpet: Pet}) { if(!obj || !obj.card){ return false; } let ph = this.getPlayer(obj.srcplayer); let dstph = this.getPlayer(obj.dstplayer); let dstpt = dstph? dstph.getPet(obj.dstpet): null; if(!ph){ return false; } let ps = new SkillParam(obj.card, obj.cardpoint, obj.dbpt_cnt, obj.eff_cnt, ph, dstph, dstpt); ph.useCard(ps); }; /** * 使用技能 * @param obj */ public useSkill(obj:{ srcplayer: Player, skillid: number, dstplayer: Player, dstpet: Pet }){ }; /** * 确认玩家是否有换效果牌技能 * @param aplayer */ public hasTransEffCardSkill(aplayer: Player): boolean{ let ph = this.getPlayer(aplayer); return ph && ph.hasTransEffCardSkill(); }; /** * 吃牌/胡牌确认 * @param aplayer : 玩家 * @param fromplayer : 吃别人的牌,自己胡牌时此参数传空 */ public onCardLinkReady(aplayer: Player, fromplayer?: Player){ }; /** * 吃牌/胡牌结束(暂时不用) * @param aplayer :玩家 * @param linkcards :吃到的牌组信息 */ public onCardLinkOver(aplayer: Player, linkcards: Card[]){ }; /** * 使用卡牌结束(暂时自动回调,无需外部触发) * @param obj :使用卡牌相关操作 */ public onUseCardEnd(obj: {srcplayer: Player, card: Card, cardpoint: number, eff_cnt: number, dstplayer: Player, dstpet: Pet} ){ }; /** * 弃牌完成 * @param aplayer :玩家 * @param fromplayer : 谁使玩家弃牌的(自己主动弃牌的传空) * @param dropcards : 弃掉的牌组 */ public onCardDroped(aplayer: Player, dropcards: Card[], fromplayer?: Player){ }; /** * 获取牌完成 * @param aplayer :玩家 * @param fromplayer : 谁使玩家获得牌的(自己主动获得牌的传空) * @param dropcards : 获得的牌组 */ public onCardGetted(aplayer: Player, getcards: Card[], fromplayer?: Player){ }; /** * 玩家回合开始 * @param aplayer */ public onPlayerRoundStart(aplayer: Player){ }; /** * 玩家回合结束 * @param aplayer */ public onPlayerRoundEnd(aplayer: Player){ }; }