using System.Collections.Generic; using System.Threading; public partial class SkillConfig { static Dictionary horseSkills = new Dictionary(); /// /// 根据职业以及技能类型存储技能 /// private static Dictionary>>> m_Skills = new Dictionary>>>(); public static void SkillClassifingInit() { SkillClassifingConfig.Init(true); var configs = SkillClassifingConfig.GetValues(); foreach (var config in configs) { var UseType = config.UseType; var FuncType = config.FuncType; var SkillTypeID = config.SkillTypeID; var SkillID = config.SkillID; var SkillLV = config.SkillLV; if (FuncType == 5) { horseSkills.Add(SkillTypeID * 1000 + SkillLV, SkillID); } Dictionary>> funcDic = null; Dictionary> typeDic = null; List lvlist = null; m_Skills.TryGetValue(UseType, out funcDic); if (funcDic != null) { funcDic.TryGetValue(FuncType, out typeDic); if (typeDic != null) { typeDic.TryGetValue(SkillTypeID, out lvlist); if (lvlist != null) { lvlist.Add(SkillID); } else { lvlist = new List(); lvlist.Add(SkillID); typeDic.Add(SkillTypeID, lvlist); } } else { typeDic = new Dictionary>(); lvlist = new List(); lvlist.Add(SkillID); typeDic.Add(SkillTypeID, lvlist); funcDic.Add(FuncType, typeDic); } } else { funcDic = new Dictionary>>(); typeDic = new Dictionary>(); lvlist = new List(); lvlist.Add(SkillID); typeDic.Add(SkillTypeID, lvlist); funcDic.Add(FuncType, typeDic); m_Skills.Add(UseType, funcDic); } } } /// /// 根据职业类型以及技能类型获取技能 /// /// /// /// public static Dictionary> GetSkillWithOccpyAndType(int occupy, int type) { Dictionary>> dic = null; Dictionary> typeDic = null; m_Skills.TryGetValue(occupy, out dic); if (dic != null) { dic.TryGetValue(type, out typeDic); } return typeDic; } public static List GetSkills(int occupy, int type, int _typeId) { List _list = null; Dictionary> _dict = GetSkillWithOccpyAndType(occupy, type); if (_dict != null) { _dict.TryGetValue(_typeId, out _list); } return _list; } public static Dictionary>> GetSkillActive(int occupy) { Dictionary>> dic = null; m_Skills.TryGetValue(occupy, out dic); return dic; } //------坐骑技能获取 public static SkillConfig GetSkillTypeIDAndSkillLV(int typeId, int level) { var skillId = 0; horseSkills.TryGetValue(typeId * 1000 + level, out skillId); return SkillConfig.Get(skillId); } public static int FindSkillByJob(int[] skillIds, int job) { foreach (var skill in skillIds) { var config = SkillConfig.Get(skill); if (config != null && (config.UseType == 0 || config.UseType == 1 << job)) { return skill; } } return 0; } }