156 lines
3.6 KiB
TypeScript
156 lines
3.6 KiB
TypeScript
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<Player, PlayerHandler> = 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){
|
||
|
||
};
|
||
}
|