diff --git a/src/rooms/logic/CfgMan.ts b/src/rooms/logic/CfgMan.ts index dc3d430..b8949ef 100644 --- a/src/rooms/logic/CfgMan.ts +++ b/src/rooms/logic/CfgMan.ts @@ -3,13 +3,14 @@ import { HeroCfg } from "cfg/parsers/HeroCfg"; import { SkillCfg } from "cfg/parsers/SkillCfg"; import { UnitCfg } from "cfg/parsers/UnitCfg"; import { BaseConst } from "../../constants/BaseConst"; -import { EnhanceEffectType, SkillEffectSignType, SkillEffectValueType } from "./skill/SkillConst"; +import { EffectCardType, EnhanceEffectType, SkillEffectSignType, SkillEffectValueType, SkillTargetType } from "./skill/SkillConst"; let CfgMan = { /** * findPlayerCfg *playerid: numer */ + _cardcache: new Map(), findPlayerCfg(playerid: number): HeroCfg{ return global.$cfg.get(BaseConst.HERO).get(playerid); @@ -67,6 +68,47 @@ let CfgMan = { break; } return n; + }, + + getTargetByCard(cardid: number): SkillTargetType{ + let obj = this._cardcache.get(cardid + ''); + if(obj){ + return obj.target; + } + + let cardcfg = this.findEffCardCfg(cardid); + if(!cardcfg){ + return SkillTargetType.NONE; + } + let res = SkillTargetType.NONE; + + let skilllst: number[] = []; + + cardcfg.quoteskill1id && skilllst.push(cardcfg.quoteskill1id); + cardcfg.quoteskill2id && skilllst.push(cardcfg.quoteskill2id); + cardcfg.quoteskill3id && skilllst.push(cardcfg.quoteskill3id); + cardcfg.quoteskill4id && skilllst.push(cardcfg.quoteskill4id); + + if(cardcfg.type_id == EffectCardType.NPC){ + let unitcfg = this.findUnitCfg(cardcfg.stageunit_id); + if(unitcfg){ + unitcfg.base_skill1id && skilllst.push(unitcfg.base_skill1id); + unitcfg.base_skill2id && skilllst.push(unitcfg.base_skill2id); + unitcfg.base_skill3id && skilllst.push(unitcfg.base_skill3id); + } + } + + for(let i = 0; i < skilllst.length; i++){ + let skillcfg = this.findSkillCfg(skilllst[i]); + if(skillcfg && skillcfg.select_targetID != SkillTargetType.NONE){ + res = skillcfg.select_targetID; + break; + } + } + + this._cardcache.set(cardid + '', {target: res}); + + return res; } }; diff --git a/src/rooms/logic/skill/SkillConst.ts b/src/rooms/logic/skill/SkillConst.ts index 3a72830..4ec275f 100644 --- a/src/rooms/logic/skill/SkillConst.ts +++ b/src/rooms/logic/skill/SkillConst.ts @@ -182,4 +182,20 @@ export const enum PowerValueType { NONE = 0, NUMBER = 1, RATIO = 2, +}; + +// 目标类型 +/** + * 0.无需选择 + * 1.红色标识敌方玩家 + * 2.红色标识敌方单位 + * 3.蓝色标识自己单位 + * 4.蓝色标识(自己以外)友方单位 + */ +export const enum SkillTargetType { + NONE = 0, + ENEMY_PLAYER = 1, + ENEMY_PET = 2, + SELF_PET = 3, + FRIEND_PET = 4, }; \ No newline at end of file