using CommonAI.Zone; using CommonLang; using CommonLang.Property; using System; using System.Collections.Generic; using System.Linq; using System.Text; using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills; namespace XmdsCommonSkill.Plugin.Interface { public class ComSpellTemplate { //法术类型魔板信息 public enum XmdsSpellID : int { [Desc("治疗1-3,分裂扇")] SPLIT_FAN = 510131, [Desc("战士4-6,气血冲击")] WARRIOR_4_6 = 110461, [Desc("战士2-6,护盾破碎")] WARRIOR_2_6_DunBreak = 110261, [Desc("宠物Give-冰冻射线")] ROUND_FROZENLINE = 100000, [Desc("治疗普攻强化-飞花")] REMEDY_NORMALATK_1 = 510002, [Desc("治疗普攻强化-弹射")] REMEDY_NORMALATK_2 = 510003, [Desc("宠物Give-溅射")] PETGIVE_SPUTTER = 100001, [Desc("宠物Give-范围伤害")] PETGIVE_ROUNDDAMAGE = 100002, [Desc("法师,闪现后回原地范围伤害")] FS_MOVE_BACK = 310008, [Desc("周本boss五行特效-金")] BOSS_ZB_EFFECT_GOLD = 91301, [Desc("周本boss五行特效-木")] BOSS_ZB_EFFECT_WOOD = 91302, [Desc("周本boss五行特效-水")] BOSS_ZB_EFFECT_WATER = 91303, [Desc("周本boss五行特效-火")] BOSS_ZB_EFFECT_FIRE = 91304, [Desc("周本boss五行特效-土")] BOSS_ZB_EFFECT_SOIL = 91305, [Desc("周本boss五行-冲击波")] BOSS_ZB_EFFECT_DAMAGE = 91306, //斩妖技-法术 [Desc("斩妖技-战士1")] ZHANYAO_ZS_1 = 70010, [Desc("斩妖技-战士2")] ZHANYAO_ZS_2 = 70011, [Desc("斩妖技-法师1")] ZHANYAO_FS_1 = 70020, [Desc("斩妖技-法师2")] ZHANYAO_FS_2 = 70021, [Desc("斩妖技-治疗1")] ZHANYAO_NM_1 = 70030, [Desc("斩妖技-治疗2")] ZHANYAO_NM_2 = 70031, // 天书特效 [Desc("天数-天火")] TIANSHU_1 = 100101, [Desc("天数-地火")] TIANSHU_2 = 100102, [Desc("天数-阳雷")] TIANSHU_3 = 100103, [Desc("天数-阴雷")] TIANSHU_4 = 100104, [Desc("天数-天火-敌")] TIANSHU_1_ENEMY = 100105, [Desc("天数-地火-敌")] TIANSHU_2_ENEMY = 100106, [Desc("天数-阳雷-敌")] TIANSHU_3_ENEMY = 100107, [Desc("天数-阴雷-敌")] TIANSHU_4_ENEMY = 100108, //boss特殊法术 DUNGEON_DEADSPELL = 910190, //副本,小怪死亡,boss释放 //宠物装备802XX-803XX } private static ComSpellTemplate instance; private static readonly int BuffTemplateId = 123456; // 职业&默认法术模板 private static readonly int BuffTemplateId_PET = 123458; // 宠物装备的法术,比较多,单独弄一个 private static readonly int BuffTemplateId_CARDSKILL = 1999999; // 卡牌模块法术模板 // 通用法术模板 private static HashMap mCacheSpell = new HashMap(); // 卡牌法术模板 private static HashMap mCardSpell = new HashMap(); public static ComSpellTemplate Instance() { if (instance == null) { instance = new ComSpellTemplate(); instance.Init(); } return instance; } private ComSpellTemplate() { } private void Init() { SpellTemplate mSpellInfo = XmdsBattleSkill.GetSpellTemplate(BuffTemplateId); for (int i = 0; i < mSpellInfo.KeyFrames.Count; i++) { mCacheSpell.Put(mSpellInfo.KeyFrames[i].Spell.SpellID, mSpellInfo.KeyFrames[i].Spell); } mSpellInfo = XmdsBattleSkill.GetSpellTemplate(BuffTemplateId_PET); for (int i = 0; i < mSpellInfo.KeyFrames.Count; i++) { mCacheSpell.Put(mSpellInfo.KeyFrames[i].Spell.SpellID, mSpellInfo.KeyFrames[i].Spell); } //卡牌法术 mSpellInfo = XmdsBattleSkill.GetSpellTemplate(BuffTemplateId_CARDSKILL); if(mSpellInfo != null) { for (int i = 0; i < mSpellInfo.KeyFrames.Count; i++) { mCardSpell.Put(mSpellInfo.KeyFrames[i].Spell.SpellID, mSpellInfo.KeyFrames[i].Spell); } } } public LaunchSpell GetSpellByID(XmdsSpellID spellID) { return mCacheSpell.Get((int)spellID); } public LaunchSpell GetSpellBySpellID(int spellID) { return mCacheSpell.Get(spellID); } public LaunchSpell GetCardSpell(int spellID) { LaunchSpell launchSpll = mCardSpell.Get(spellID); if(launchSpll == null) { launchSpll = CommonAI.ZoneServer.JSGModule.JSGGlobalData.GetUnConfigSpellByID(spellID); } return launchSpll; } } }