card_svr/src/rooms/logic/Handler/BattleHandler.ts

156 lines
3.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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){
};
}