增加触发技能处理

This commit is contained in:
y.x 2020-12-08 12:07:53 +08:00
parent 3288cb74a0
commit 26bfd6a378
5 changed files with 67 additions and 27 deletions

View File

@ -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);
};
/**

View File

@ -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,

View File

@ -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;
}
}

View File

@ -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;
};

View File

@ -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 = [];