From 2c72c2e0de2b7ef9f3c3e0c656495e9f0062c72f Mon Sep 17 00:00:00 2001 From: yuexin Date: Wed, 2 Dec 2020 21:16:19 +0800 Subject: [PATCH] add skill handler(not finish) --- src/common/GConfig.ts | 4 +++ src/rooms/logic/Handler/BattleHandler.ts | 12 ++------ src/rooms/logic/Handler/PetHandler.ts | 21 +++++++++++++ src/rooms/logic/Handler/PlayerHandler.ts | 17 ++++++++++- src/rooms/logic/skill/SkillMan.ts | 39 ++++++++++++------------ 5 files changed, 63 insertions(+), 30 deletions(-) diff --git a/src/common/GConfig.ts b/src/common/GConfig.ts index ead7979..16aeedf 100644 --- a/src/common/GConfig.ts +++ b/src/common/GConfig.ts @@ -6,6 +6,7 @@ import {SkillCfg} from "../cfg/parsers/SkillCfg"; import {SystemCardCfg} from "../cfg/parsers/SystemCardCfg"; import {UnitCfg} from "../cfg/parsers/UnitCfg"; import {BaseConst} from "../constants/BaseConst"; +import SkillMan from "../rooms/logic/skill/SkillMan"; export function initData() { const rP = DataParser.regCommonParser.bind(DataParser); @@ -16,5 +17,8 @@ export function initData() { rP(BaseConst.SYSTEMCARD, SystemCardCfg); rP(BaseConst.UNIT, UnitCfg); DataParser.loadAll(); + + let map = global.$cfg.get(BaseConst.SKILL); + SkillMan.loadData(map); } diff --git a/src/rooms/logic/Handler/BattleHandler.ts b/src/rooms/logic/Handler/BattleHandler.ts index 4e0c708..15a0d4c 100644 --- a/src/rooms/logic/Handler/BattleHandler.ts +++ b/src/rooms/logic/Handler/BattleHandler.ts @@ -34,15 +34,11 @@ export class BattleHandler { }; public useCard(obj: - {srcplayer: Player, card: Card, dbeff_cnt: number, dbpt_cnt: number, dstplayer: Player, dstpet: Pet}) + {srcplayer: Player, card: Card, cardpoint: number, eff_cnt: number, dstplayer: Player, dstpet: Pet}) { if(!obj || obj.card){ return false; } - let cfg = CfgMan.findEffCardCfg(obj.card.id); - if(!cfg){ - return false; - } let ph = this.getPlayer(obj.srcplayer); @@ -50,10 +46,6 @@ export class BattleHandler { return false; } - if(cfg.typeId == EffectCardType.NPC){ - - }else if(cfg.typeId == EffectCardType.MAGIC){ - - } + ph.useCard(obj); }; } \ No newline at end of file diff --git a/src/rooms/logic/Handler/PetHandler.ts b/src/rooms/logic/Handler/PetHandler.ts index eda0f8d..a67cc88 100644 --- a/src/rooms/logic/Handler/PetHandler.ts +++ b/src/rooms/logic/Handler/PetHandler.ts @@ -1,4 +1,5 @@ import { Pet } from "../../schema/Pet"; +import CfgMan from "../CfgMan"; import {Skill} from "../skill/Skill"; import { PlayerHandler } from "./PlayerHandler"; @@ -6,6 +7,12 @@ import { PlayerHandler } from "./PlayerHandler"; export class PetHandler { private _pet: Pet; private _owner: PlayerHandler; + _id: number; + _cfg: any; + _exskills: number[]; + + _ap: number; + public init(apet: Pet, owner: PlayerHandler){ this._pet = apet; this._owner = owner; @@ -16,4 +23,18 @@ export class PetHandler { public addAttr(attrstr: string, value: number, sender: Skill){ }; + + public setParam(id: number, ap: number, effcnt: number, exskillid: number[]){ + this._id = id; + this._cfg = CfgMan.findUnitCfg(id); + + this._exskills.length = 0; + exskillid.forEach((skillid: number)=>{ + if(skillid > 0){ + this._exskills.push(skillid); + } + }); + + + } } \ No newline at end of file diff --git a/src/rooms/logic/Handler/PlayerHandler.ts b/src/rooms/logic/Handler/PlayerHandler.ts index b3ebf6c..37f1938 100644 --- a/src/rooms/logic/Handler/PlayerHandler.ts +++ b/src/rooms/logic/Handler/PlayerHandler.ts @@ -5,6 +5,7 @@ import { BattleHandler } from "./BattleHandler"; import CfgMan from "../CfgMan"; import { Card } from "rooms/schema/Card"; import { Pet } from "rooms/schema/Pet"; +import { EffectCardType } from "../skill/SkillConst"; export class PlayerHandler { public _player: Player; @@ -50,9 +51,23 @@ export class PlayerHandler { }; public useCard(obj: - {card: Card, dbeff_cnt: number, dbpt_cnt: number, dstplayer: Player, dstpet: Pet}) + {card: Card, cardpoint: number, eff_cnt: number, dstplayer: Player, dstpet: Pet}) { + let cfg = CfgMan.findEffCardCfg(obj.card.id); + if(!cfg){ + return false; + } + if(cfg.typeId == EffectCardType.NPC){ + let pet = this.newPet(); + if(!pet){ + return false; + } + pet.setParam(cfg.eff1Id, obj.cardpoint, obj.eff_cnt, [cfg.eff2Id, cfg.eff3Id, cfg.eff4Id, cfg.eff5Id]); + + }else if(cfg.typeId == EffectCardType.MAGIC){ + + } } } \ No newline at end of file diff --git a/src/rooms/logic/skill/SkillMan.ts b/src/rooms/logic/skill/SkillMan.ts index ec63384..2401fbf 100644 --- a/src/rooms/logic/skill/SkillMan.ts +++ b/src/rooms/logic/skill/SkillMan.ts @@ -8,32 +8,25 @@ // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html import { Skill } from "./Skill"; +import {SkillCfg} from "../../../cfg/parsers/SkillCfg"; -let SkillManager = { - _skillmap: {}, - _tilemap: {}, +let SkillMan = { + _skillmap: new Map(), - onSkillTrigger(skill, param, bok) { + _skillcb: function(p1:any, p2:any, p3:any, p4:any){}, + + onSkillTrigger(skill:Skill, param: any, bok: boolean) { this._skillcb && this._skillcb(skill, param, bok, skill._owner); }, - getSkillMaxLevel(id) { - let obj = this._skillmap[id]; - if (obj) { - return obj._data.max_lv; - } else { - return null; - } - }, - - addSkill(id, data) { + addSkill(id: number, data: SkillCfg) { let obj = new Skill(); obj.init(id, data, this); - this._skillmap[id] = obj; + this._skillmap.set(id, obj); }, - getSkill(id) { - let obj = this._skillmap[id]; + getSkill(id: number) { + let obj = this._skillmap.get(id); if (obj) { return obj.clone(); // return comutils.cloneFull(obj); @@ -41,9 +34,17 @@ let SkillManager = { return null; }, - setSkillCallback(cb) { + setSkillCallback(cb: any) { this._skillcb = cb; + }, + + loadData(skills: Map){ + skills.forEach((value, key)=>{ + if(key > 0){ + this.addSkill(key, value); + } + }); } }; -export default SkillManager; \ No newline at end of file +export default SkillMan; \ No newline at end of file