add skill handler(not finish)

This commit is contained in:
yuexin 2020-12-02 21:16:19 +08:00
parent 1e49ef6def
commit 2c72c2e0de
5 changed files with 63 additions and 30 deletions

View File

@ -6,6 +6,7 @@ import {SkillCfg} from "../cfg/parsers/SkillCfg";
import {SystemCardCfg} from "../cfg/parsers/SystemCardCfg"; import {SystemCardCfg} from "../cfg/parsers/SystemCardCfg";
import {UnitCfg} from "../cfg/parsers/UnitCfg"; import {UnitCfg} from "../cfg/parsers/UnitCfg";
import {BaseConst} from "../constants/BaseConst"; import {BaseConst} from "../constants/BaseConst";
import SkillMan from "../rooms/logic/skill/SkillMan";
export function initData() { export function initData() {
const rP = DataParser.regCommonParser.bind(DataParser); const rP = DataParser.regCommonParser.bind(DataParser);
@ -16,5 +17,8 @@ export function initData() {
rP(BaseConst.SYSTEMCARD, SystemCardCfg); rP(BaseConst.SYSTEMCARD, SystemCardCfg);
rP(BaseConst.UNIT, UnitCfg); rP(BaseConst.UNIT, UnitCfg);
DataParser.loadAll(); DataParser.loadAll();
let map = global.$cfg.get(BaseConst.SKILL);
SkillMan.loadData(map);
} }

View File

@ -34,15 +34,11 @@ export class BattleHandler {
}; };
public useCard(obj: 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){ if(!obj || obj.card){
return false; return false;
} }
let cfg = CfgMan.findEffCardCfg(obj.card.id);
if(!cfg){
return false;
}
let ph = this.getPlayer(obj.srcplayer); let ph = this.getPlayer(obj.srcplayer);
@ -50,10 +46,6 @@ export class BattleHandler {
return false; return false;
} }
if(cfg.typeId == EffectCardType.NPC){ ph.useCard(obj);
}else if(cfg.typeId == EffectCardType.MAGIC){
}
}; };
} }

View File

@ -1,4 +1,5 @@
import { Pet } from "../../schema/Pet"; import { Pet } from "../../schema/Pet";
import CfgMan from "../CfgMan";
import {Skill} from "../skill/Skill"; import {Skill} from "../skill/Skill";
import { PlayerHandler } from "./PlayerHandler"; import { PlayerHandler } from "./PlayerHandler";
@ -6,6 +7,12 @@ import { PlayerHandler } from "./PlayerHandler";
export class PetHandler { export class PetHandler {
private _pet: Pet; private _pet: Pet;
private _owner: PlayerHandler; private _owner: PlayerHandler;
_id: number;
_cfg: any;
_exskills: number[];
_ap: number;
public init(apet: Pet, owner: PlayerHandler){ public init(apet: Pet, owner: PlayerHandler){
this._pet = apet; this._pet = apet;
this._owner = owner; this._owner = owner;
@ -16,4 +23,18 @@ export class PetHandler {
public addAttr(attrstr: string, value: number, sender: Skill){ 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);
}
});
}
} }

View File

@ -5,6 +5,7 @@ import { BattleHandler } from "./BattleHandler";
import CfgMan from "../CfgMan"; import CfgMan from "../CfgMan";
import { Card } from "rooms/schema/Card"; import { Card } from "rooms/schema/Card";
import { Pet } from "rooms/schema/Pet"; import { Pet } from "rooms/schema/Pet";
import { EffectCardType } from "../skill/SkillConst";
export class PlayerHandler { export class PlayerHandler {
public _player: Player; public _player: Player;
@ -50,9 +51,23 @@ export class PlayerHandler {
}; };
public useCard(obj: 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){
}
} }
} }

View File

@ -8,32 +8,25 @@
// - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html
import { Skill } from "./Skill"; import { Skill } from "./Skill";
import {SkillCfg} from "../../../cfg/parsers/SkillCfg";
let SkillManager = { let SkillMan = {
_skillmap: {}, _skillmap: new Map(),
_tilemap: {},
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); this._skillcb && this._skillcb(skill, param, bok, skill._owner);
}, },
getSkillMaxLevel(id) { addSkill(id: number, data: SkillCfg) {
let obj = this._skillmap[id];
if (obj) {
return obj._data.max_lv;
} else {
return null;
}
},
addSkill(id, data) {
let obj = new Skill(); let obj = new Skill();
obj.init(id, data, this); obj.init(id, data, this);
this._skillmap[id] = obj; this._skillmap.set(id, obj);
}, },
getSkill(id) { getSkill(id: number) {
let obj = this._skillmap[id]; let obj = this._skillmap.get(id);
if (obj) { if (obj) {
return obj.clone(); return obj.clone();
// return comutils.cloneFull(obj); // return comutils.cloneFull(obj);
@ -41,9 +34,17 @@ let SkillManager = {
return null; return null;
}, },
setSkillCallback(cb) { setSkillCallback(cb: any) {
this._skillcb = cb; this._skillcb = cb;
},
loadData(skills: Map<number, SkillCfg>){
skills.forEach((value, key)=>{
if(key > 0){
this.addSkill(key, value);
}
});
} }
}; };
export default SkillManager; export default SkillMan;