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 {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);
}

View File

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

View File

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

View File

@ -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){
}
}
}

View File

@ -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<number, SkillCfg>){
skills.forEach((value, key)=>{
if(key > 0){
this.addSkill(key, value);
}
});
}
};
export default SkillManager;
export default SkillMan;