From 26bfd6a378b73735c8f510d091b954aa033eaa0c Mon Sep 17 00:00:00 2001 From: "y.x" Date: Tue, 8 Dec 2020 12:07:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A7=A6=E5=8F=91=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rooms/logic/Handler/BattleHandler.ts | 22 +++++------ src/rooms/logic/Handler/PetHandler.ts | 16 +++++++- src/rooms/logic/Handler/PlayerHandler.ts | 50 +++++++++++++++++------- src/rooms/logic/skill/Skill.ts | 3 ++ src/rooms/logic/skill/SkillParam.ts | 3 ++ 5 files changed, 67 insertions(+), 27 deletions(-) diff --git a/src/rooms/logic/Handler/BattleHandler.ts b/src/rooms/logic/Handler/BattleHandler.ts index 20af84f..a0e259b 100644 --- a/src/rooms/logic/Handler/BattleHandler.ts +++ b/src/rooms/logic/Handler/BattleHandler.ts @@ -188,7 +188,7 @@ export class BattleHandler { ph.useCard(ps); - this.onUseCardEnd(obj); + this.onUseCardEnd(ps); }; /** @@ -211,7 +211,7 @@ export class BattleHandler { }; /** - * 吃牌/胡牌确认 + * 吃牌/胡牌确认[暂不用] * @param aplayer : 玩家 * @param fromplayer : 吃别人的牌,自己胡牌时此参数传空 */ @@ -222,27 +222,25 @@ export class BattleHandler { }; /** - * 吃牌/胡牌结束(暂时不用)?? + * 吃牌/胡牌结束 ?? * @param aplayer :玩家 * @param linkcards :吃到的牌组信息 */ - public onCardLinkOver(aplayer: Player, linkcards: Card[]){ + public onCardLinkOver(aplayer: Player, linkcards: Card[], fromplayer?: Player){ let ph = this.getPlayer(aplayer); - ph && ph.onCardLinkEnd(linkcards); + let fromph = this.getPlayer(fromplayer); + ph && ph.onCardLinkEnd(linkcards, fromph); }; /** * 使用卡牌结束(暂时自动回调,无需外部触发) - * @param obj :使用卡牌相关操作 + * @param sp :使用卡牌相关操作 */ - public onUseCardEnd(obj: - {srcplayer: Player, card: number, cardpoint: number, dbpt_cnt: number, eff_cnt: number, dstplayer: Player, dstpet: Pet} - ){ - if(!obj){ + public onUseCardEnd(sp: SkillParam){ + if(!sp){ return; } - let ph = this.getPlayer(obj.srcplayer); - ph && ph.onUseCardEnd(); + sp.srcplayer && sp.srcplayer.onUseCardEnd(sp); }; /** diff --git a/src/rooms/logic/Handler/PetHandler.ts b/src/rooms/logic/Handler/PetHandler.ts index cd4aa87..000f9b0 100644 --- a/src/rooms/logic/Handler/PetHandler.ts +++ b/src/rooms/logic/Handler/PetHandler.ts @@ -5,7 +5,7 @@ import CfgMan from "../CfgMan"; import {Skill} from "../skill/Skill"; import SkillMan from "../skill/SkillMan"; -import { EnhanceEffectType, PowerValueType } from "../skill/SkillConst"; +import { EnhanceEffectType, PowerValueType, TriggerType } from "../skill/SkillConst"; import { PlayerHandler } from "./PlayerHandler"; import { PetInfoMsg } from "../../../message/PetInfo"; import { SkillParam } from "../skill/SkillParam"; @@ -24,6 +24,8 @@ export class PetHandler { _effhalos: Skill[] = []; + _waitskills: Skill[] = []; + _baseap: number; // 基础 _exap: number = 0; // 额外 @@ -109,6 +111,8 @@ export class PetHandler { }else if(obj.isHaloSkill()){ this._halos.push(obj); halocb && halocb(this); + }else{ + this._waitskills.push(obj); } } @@ -136,6 +140,10 @@ export class PetHandler { this._halos.splice(idx, 1); halocb && halocb(this); } + idx = this._waitskills.indexOf(obj); + if(idx >= 0){ + this._waitskills.splice(idx, 1); + } } this._skills.delete(skillid); } @@ -205,6 +213,12 @@ export class PetHandler { }); }; + public checkSkills(tgtype: TriggerType){ + this._waitskills.forEach((item: Skill) => { + item.checkTrigger(tgtype, ) + }); + }; + public exportData(): PetInfoMsg{ let obj = new PetInfoMsg({ id: this._id, diff --git a/src/rooms/logic/Handler/PlayerHandler.ts b/src/rooms/logic/Handler/PlayerHandler.ts index dd212f1..b95e188 100644 --- a/src/rooms/logic/Handler/PlayerHandler.ts +++ b/src/rooms/logic/Handler/PlayerHandler.ts @@ -22,13 +22,11 @@ export class PlayerHandler { public _pets: PetHandler[] = []; - public _skills: Skill[] = []; - - public _exskills: Skill[] = []; - public _owner: BattleHandler; - _friend: PlayerHandler; + public _friend: PlayerHandler; + + _totalcc: number = 0; public init(aplayer: Player, owner: BattleHandler){ this._owner = owner; @@ -48,7 +46,7 @@ export class PlayerHandler { }; public getTotalCardCount(){ - return 0; + return this._totalcc; }; public getId(): string{ @@ -299,30 +297,54 @@ export class PlayerHandler { }; onCardLinkReady(fromplayer: PlayerHandler){ - + this.checkSkills(TriggerType.CARD_LINK_BEFORE); }; - onCardLinkEnd(linkcards: Card[]){ - + onCardLinkEnd(linkcards: Card[], fromplayer: PlayerHandler){ + this.checkSkills(TriggerType.CARD_LINK_AFTER); }; onCardDroped(dropcards: Card[], srcplayer: PlayerHandler){ - + this.checkSkills(TriggerType.CARD_DROP_MYROUND); }; onCardGetted(getcards: Card[], srcplayer: PlayerHandler){ - + getcards && (this._totalcc += getcards.length); + this.checkSkills(TriggerType.CARD_GETTED); }; - onUseCardEnd(){ - + onUseCardEnd(sp: SkillParam){ + this.checkSkills(TriggerType.CARD_USED, 0, sp); }; onRoundStart(){ - + this.checkSkills(TriggerType.ROUND_START_MYSELF); }; onRoundEnd(){ + this.checkSkills(TriggerType.ROUND_END_MYSELF); + }; + checkSkills(tgttype: TriggerType, tgtvalue?: any, tgtsp?: SkillParam){ + let sp = tgtsp; + if(!sp){ + sp = new SkillParam(0, 0, 0, this, this._self, null, null); + } + let reslst: SkillTarget[] = []; + this._self._waitskills.forEach((item:Skill) => { + item.checkTrigger(tgttype, tgtvalue, sp, (skill: Skill, ap: SkillParam, res: SkillTarget[])=>{ + if(res){ + reslst = reslst.concat(res); + }else{ + let st = new SkillTarget(skill); + st.LoadParam(sp); + reslst.push(st); + } + }); + }); + }; + + resetTotalCard(){ + this._totalcc = 0; } } diff --git a/src/rooms/logic/skill/Skill.ts b/src/rooms/logic/skill/Skill.ts index 9755074..24f0deb 100644 --- a/src/rooms/logic/skill/Skill.ts +++ b/src/rooms/logic/skill/Skill.ts @@ -178,6 +178,9 @@ export class Skill { this._man && this._man.onSkillTrigger(this, param, res); + if(this.isTotalCardSkill()){ + this._owner && this._owner.resetTotalCard(); + } return res; }; diff --git a/src/rooms/logic/skill/SkillParam.ts b/src/rooms/logic/skill/SkillParam.ts index 7ce3854..568d46a 100644 --- a/src/rooms/logic/skill/SkillParam.ts +++ b/src/rooms/logic/skill/SkillParam.ts @@ -46,6 +46,7 @@ export class SkillTarget{ srcplayer: PlayerHandler; srcpet: PetHandler; srcskill: Skill; + srcskillid: number; dst: any; dsttype: GameUnitType; @@ -55,6 +56,7 @@ export class SkillTarget{ this.srcplayer = splayer; this.srcpet = spet; this.srcskill = skill; + this.srcskillid = skill._id; this.dst = dstobj; this.dsttype = dsttype; }; @@ -91,6 +93,7 @@ export class SkillTarget{ let msg = new SkillInfoMsg(); msg.data = new SkillInfoData(); let obj = msg.data; + obj.skill_id = this.srcskillid; obj.player = this.srcplayer.getId(), obj.pos = this.srcpet? this.srcpet._idx: 0; obj.datas = [];