From c25a0d5c1cf77670dd23f26f51a643af786dac75 Mon Sep 17 00:00:00 2001 From: yuexin Date: Thu, 3 Dec 2020 11:54:05 +0800 Subject: [PATCH] add trigger interface --- src/rooms/logic/Handler/BattleHandler.ts | 88 +++++++++++++++++++++--- src/rooms/logic/Handler/PetHandler.ts | 2 +- src/rooms/logic/Handler/PlayerHandler.ts | 14 ++++ src/rooms/logic/skill/Skill.ts | 20 +----- src/rooms/logic/skill/SkillConst.ts | 2 + 5 files changed, 99 insertions(+), 27 deletions(-) diff --git a/src/rooms/logic/Handler/BattleHandler.ts b/src/rooms/logic/Handler/BattleHandler.ts index 15a0d4c..048b67a 100644 --- a/src/rooms/logic/Handler/BattleHandler.ts +++ b/src/rooms/logic/Handler/BattleHandler.ts @@ -8,7 +8,8 @@ import { Pet } from "rooms/schema/Pet"; export class BattleHandler { private _cs: CardGameState; - private _players: PlayerHandler[]; + + private _players: Map = new Map(); public init(cs: CardGameState){ this._cs = cs; @@ -17,20 +18,15 @@ export class BattleHandler { public addPlayer(aplayer: Player){ let ph = new PlayerHandler(); ph.init(aplayer, this); - this._players.push(ph); + this._players.set(aplayer, ph); }; public delPlayer(aplayer: Player){ - let idx = this._players.findIndex((item: PlayerHandler)=>{ - return item._player == aplayer; - }) - this._players.splice(idx, 1); + this._players.delete(aplayer); }; public getPlayer(aplayer: Player){ - return this._players.find((item: PlayerHandler)=>{ - return item._player == aplayer; - }) + return this._players.get(aplayer); }; public useCard(obj: @@ -48,4 +44,78 @@ export class BattleHandler { ph.useCard(obj); }; + + /** + * + * @param obj + */ + public useSkill(obj:{ + srcplayer: Player, skillid: number, dstplayer: Player, dstpet: Pet + }){ + + }; + + /** + * 吃牌/胡牌确认 + * @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){ + + } } \ No newline at end of file diff --git a/src/rooms/logic/Handler/PetHandler.ts b/src/rooms/logic/Handler/PetHandler.ts index a67cc88..a6fb472 100644 --- a/src/rooms/logic/Handler/PetHandler.ts +++ b/src/rooms/logic/Handler/PetHandler.ts @@ -35,6 +35,6 @@ export class PetHandler { } }); - + } } \ No newline at end of file diff --git a/src/rooms/logic/Handler/PlayerHandler.ts b/src/rooms/logic/Handler/PlayerHandler.ts index 37f1938..0361723 100644 --- a/src/rooms/logic/Handler/PlayerHandler.ts +++ b/src/rooms/logic/Handler/PlayerHandler.ts @@ -6,12 +6,15 @@ import CfgMan from "../CfgMan"; import { Card } from "rooms/schema/Card"; import { Pet } from "rooms/schema/Pet"; import { EffectCardType } from "../skill/SkillConst"; +import { UnitCfg } from "cfg/parsers/UnitCfg"; export class PlayerHandler { public _player: Player; public _playercfg: HeroCfg; + public _unitcfg: UnitCfg; + public _pets: PetHandler[]; private _owner: BattleHandler; @@ -20,6 +23,7 @@ export class PlayerHandler { this._owner = owner; this._player = aplayer; this._playercfg = CfgMan.findPlayerCfg(this._player.heroId); + this._unitcfg = this._playercfg && CfgMan.findUnitCfg(this._playercfg.unitId); }; public getCurrCardCount(){ @@ -68,6 +72,16 @@ export class PlayerHandler { }else if(cfg.typeId == EffectCardType.MAGIC){ } + }; + + public useSkill(obj:{ + skillid: number, dstplayer: Player, dstpet: Pet}) + { + + }; + + public addSkill(skillid: number){ + } } \ No newline at end of file diff --git a/src/rooms/logic/skill/Skill.ts b/src/rooms/logic/skill/Skill.ts index 377c35c..f3ea4bc 100644 --- a/src/rooms/logic/skill/Skill.ts +++ b/src/rooms/logic/skill/Skill.ts @@ -1,11 +1,7 @@ import { PetHandler } from "../Handler/PetHandler"; +import { TriggerType } from "./SkillConst"; import TriggerManager from "./TriggerMan"; -let con = require('constant'); - -let SK_TYPE = con.SKILL_TYPE; -let TG_TYPE = con.TRIGGER_TYPE; - export class Skill { _currCount: number; _roundCount: number; @@ -136,19 +132,9 @@ export class Skill { return this._data && (this._data.is_sp == 1); }; - // 是否是位移技能 - isMapSkill() { - return false; //this._type == SK_TYPE.DASH_ATK || this._type == SK_TYPE.BACK_ATK; - }; - // 是否是获得即起效技能 isIMMSkill() { - return this._data && (this._data.trigger_id == TG_TYPE.IMM); - }; - - // 是否是抢先攻击技能 - isDefFirstSkill() { - return this._data && (this._type == SK_TYPE.ATK_FIRST); + return this._data && (this._data.trigger_id == TriggerType.NO_COND); }; canComposition() { @@ -176,7 +162,7 @@ export class Skill { }; checkTrigger(tg_type: any, tg_value: any, tg_target: any, cb: any) { - if (tg_type == TG_TYPE.MYGROUPROUND_START) { + if (tg_type == TriggerType.ROUND_START_MYSELF) { this._roundCount++; if (this._start) { this._startround++; diff --git a/src/rooms/logic/skill/SkillConst.ts b/src/rooms/logic/skill/SkillConst.ts index 794dee3..006aa39 100644 --- a/src/rooms/logic/skill/SkillConst.ts +++ b/src/rooms/logic/skill/SkillConst.ts @@ -38,6 +38,8 @@ export const enum TriggerType ROUND_END_MYSELF = 5, CARD_GETTED = 6, + + ROUND_START_MYSELF = 6, }; export const enum SkillType{