| | |
| | | /// <summary>
|
| | | /// 根据职业以及技能类型存储技能
|
| | | /// </summary>
|
| | | private static Dictionary<int, Dictionary<int, Dictionary<int, List<SkillConfig>>>> m_Skills = new Dictionary<int, Dictionary<int, Dictionary<int, List<SkillConfig>>>>();
|
| | | private static Dictionary<int, Dictionary<int, Dictionary<int, List<int>>>> m_Skills = new Dictionary<int, Dictionary<int, Dictionary<int, List<int>>>>();
|
| | |
|
| | | public void OnConfigParseCompleted()
|
| | | {
|
| | | #region 根据职业以及技能类型以及技能等级
|
| | | Dictionary<int, Dictionary<int, List<SkillConfig>>> funcDic = null;
|
| | | Dictionary<int, List<SkillConfig>> typeDic = null;
|
| | | List<SkillConfig> lvlist = null;
|
| | | Dictionary<int, Dictionary<int, List<int>>> funcDic = null;
|
| | | Dictionary<int, List<int>> typeDic = null;
|
| | | List<int> lvlist = null;
|
| | | m_Skills.TryGetValue(UseType, out funcDic);
|
| | | if (funcDic != null)
|
| | | {
|
| | |
| | | typeDic.TryGetValue(SkillTypeID, out lvlist);
|
| | | if (lvlist != null)
|
| | | {
|
| | | lvlist.Add(this);
|
| | | lvlist.Add(SkillID);
|
| | | }
|
| | | else
|
| | | {
|
| | | lvlist = new List<SkillConfig>();
|
| | | lvlist.Add(this);
|
| | | lvlist = new List<int>();
|
| | | lvlist.Add(SkillID);
|
| | | typeDic.Add(SkillTypeID, lvlist);
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | typeDic = new Dictionary<int, List<SkillConfig>>();
|
| | | lvlist = new List<SkillConfig>();
|
| | | lvlist.Add(this);
|
| | | typeDic = new Dictionary<int, List<int>>();
|
| | | lvlist = new List<int>();
|
| | | lvlist.Add(SkillID);
|
| | | typeDic.Add(SkillTypeID, lvlist);
|
| | | funcDic.Add(FuncType, typeDic);
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | funcDic = new Dictionary<int, Dictionary<int, List<SkillConfig>>>();
|
| | | typeDic = new Dictionary<int, List<SkillConfig>>();
|
| | | lvlist = new List<SkillConfig>();
|
| | | lvlist.Add(this);
|
| | | funcDic = new Dictionary<int, Dictionary<int, List<int>>>();
|
| | | typeDic = new Dictionary<int, List<int>>();
|
| | | lvlist = new List<int>();
|
| | | lvlist.Add(SkillID);
|
| | | typeDic.Add(SkillTypeID, lvlist);
|
| | | funcDic.Add(FuncType, typeDic);
|
| | | m_Skills.Add(UseType, funcDic);
|
| | |
| | | /// <param name="occupy"></param>
|
| | | /// <param name="type"></param>
|
| | | /// <returns></returns>
|
| | | public static Dictionary<int, List<SkillConfig>> GetSkillWithOccpyAndType(int occupy, int type)
|
| | | public static Dictionary<int, List<int>> GetSkillWithOccpyAndType(int occupy, int type)
|
| | | {
|
| | | Dictionary<int, Dictionary<int, List<SkillConfig>>> dic = null;
|
| | | Dictionary<int, List<SkillConfig>> typeDic = null;
|
| | | Dictionary<int, Dictionary<int, List<int>>> dic = null;
|
| | | Dictionary<int, List<int>> typeDic = null;
|
| | | m_Skills.TryGetValue(occupy, out dic);
|
| | | if (dic != null)
|
| | | {
|
| | |
| | | return typeDic;
|
| | | }
|
| | |
|
| | | public static List<SkillConfig> GetSkillActConfigs(int occupy, int type, int _typeId)
|
| | | public static List<int> GetSkills(int occupy, int type, int _typeId)
|
| | | {
|
| | | List<SkillConfig> _list = null;
|
| | | Dictionary<int, List<SkillConfig>> _dict = GetSkillWithOccpyAndType(occupy, type);
|
| | | List<int> _list = null;
|
| | | Dictionary<int, List<int>> _dict = GetSkillWithOccpyAndType(occupy, type);
|
| | | if (_dict != null)
|
| | | {
|
| | | _dict.TryGetValue(_typeId, out _list);
|
| | |
| | | return _list;
|
| | | }
|
| | |
|
| | | public static Dictionary<int, Dictionary<int, List<SkillConfig>>> GetSkillActive(int occupy)
|
| | | public static Dictionary<int, Dictionary<int, List<int>>> GetSkillActive(int occupy)
|
| | | {
|
| | | Dictionary<int, Dictionary<int, List<SkillConfig>>> dic = null;
|
| | | Dictionary<int, Dictionary<int, List<int>>> dic = null;
|
| | | m_Skills.TryGetValue(occupy, out dic);
|
| | | return dic;
|
| | | }
|
| | |
| | | Utils.RegisterFunc(L, Utils.CLS_IDX, "Has", _m_Has_xlua_st_); |
| | | Utils.RegisterFunc(L, Utils.CLS_IDX, "Init", _m_Init_xlua_st_); |
| | | Utils.RegisterFunc(L, Utils.CLS_IDX, "GetSkillWithOccpyAndType", _m_GetSkillWithOccpyAndType_xlua_st_); |
| | | Utils.RegisterFunc(L, Utils.CLS_IDX, "GetSkillActConfigs", _m_GetSkillActConfigs_xlua_st_); |
| | | Utils.RegisterFunc(L, Utils.CLS_IDX, "GetSkills", _m_GetSkills_xlua_st_); |
| | | Utils.RegisterFunc(L, Utils.CLS_IDX, "GetSkillActive", _m_GetSkillActive_xlua_st_); |
| | | Utils.RegisterFunc(L, Utils.CLS_IDX, "GetSkillTypeIDAndSkillLV", _m_GetSkillTypeIDAndSkillLV_xlua_st_); |
| | | Utils.RegisterFunc(L, Utils.CLS_IDX, "FindSkillByJob", _m_FindSkillByJob_xlua_st_); |
| | |
| | | int _occupy = LuaAPI.xlua_tointeger(L, 1); |
| | | int _type = LuaAPI.xlua_tointeger(L, 2); |
| | | |
| | | System.Collections.Generic.Dictionary<int, System.Collections.Generic.List<SkillConfig>> gen_ret = SkillConfig.GetSkillWithOccpyAndType( _occupy, _type ); |
| | | System.Collections.Generic.Dictionary<int, System.Collections.Generic.List<int>> gen_ret = SkillConfig.GetSkillWithOccpyAndType( _occupy, _type ); |
| | | translator.Push(L, gen_ret); |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] |
| | | static int _m_GetSkillActConfigs_xlua_st_(RealStatePtr L) |
| | | static int _m_GetSkills_xlua_st_(RealStatePtr L) |
| | | { |
| | | try { |
| | | |
| | |
| | | int _type = LuaAPI.xlua_tointeger(L, 2); |
| | | int __typeId = LuaAPI.xlua_tointeger(L, 3); |
| | | |
| | | System.Collections.Generic.List<SkillConfig> gen_ret = SkillConfig.GetSkillActConfigs( _occupy, _type, __typeId ); |
| | | System.Collections.Generic.List<int> gen_ret = SkillConfig.GetSkills( _occupy, _type, __typeId ); |
| | | translator.Push(L, gen_ret); |
| | | |
| | | |
| | |
| | | { |
| | | int _occupy = LuaAPI.xlua_tointeger(L, 1); |
| | | |
| | | System.Collections.Generic.Dictionary<int, System.Collections.Generic.Dictionary<int, System.Collections.Generic.List<SkillConfig>>> gen_ret = SkillConfig.GetSkillActive( _occupy ); |
| | | System.Collections.Generic.Dictionary<int, System.Collections.Generic.Dictionary<int, System.Collections.Generic.List<int>>> gen_ret = SkillConfig.GetSkillActive( _occupy ); |
| | | translator.Push(L, gen_ret); |
| | | |
| | | |
| | |
| | | {
|
| | | List<int> buffIds = new List<int>();
|
| | | StatusMgr.Instance.GetBuffIds(PlayerDatas.Instance.PlayerId, ref buffIds);
|
| | | var skillConfigs = SkillConfig.GetSkillActConfigs(0, 0, DeadModel.deadBuffId);
|
| | | var skillIds = SkillConfig.GetSkills(0, 0, DeadModel.deadBuffId);
|
| | | string skillName = string.Empty;
|
| | | int buffLv = 0;
|
| | | bool isMaxBuff = false;
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | if (skillConfigs != null && skillConfigs.Count > 0)
|
| | | if (skillIds != null && skillIds.Count > 0)
|
| | | {
|
| | | SkillConfig skillConfig = skillConfigs[0];
|
| | | var skillId = skillIds[0];
|
| | | var skillConfig = SkillConfig.Get(skillId);
|
| | | skillName = skillConfig.SkillName;
|
| | | }
|
| | | buffText.text = Language.Get("AncientBattlefield_Text_2", skillName);
|
| | |
| | | [SerializeField] SkillTurnplate m_SkillTurnplate;
|
| | | [SerializeField] Button m_AutoUseXp;
|
| | | [SerializeField] Image m_AutoXpCheck;
|
| | | private List<SkillConfig> skillListAct = new List<SkillConfig>();
|
| | | private List<int> skillListAct = new List<int>();
|
| | | private bool onXpCoolDown = false;
|
| | |
|
| | | private bool m_IsAutoUseXp = false;
|
| | |
| | | if (index < skillListAct.Count)
|
| | | {
|
| | | if(AchievementGoto.achievementType==AchievementGoto.ExcuteSkill
|
| | | && skillListAct[index].SkillID == m_AchieveSkillId)
|
| | | && skillListAct[index] == m_AchieveSkillId)
|
| | | {
|
| | | var _effect = AchievementGuideEffectPool.Require(3);
|
| | | _effect.transform.SetParentEx(skillTran, Vector3.zero, Vector3.zero, Vector3.one);
|
| | |
| | | DebugEx.LogErrorFormat("不存在该职业的技能{0}", _skillJobKey);
|
| | | return;
|
| | | }
|
| | | Dictionary<int, List<SkillConfig>> dic = model.skillActDict[_skillJobKey];
|
| | | Dictionary<int, List<int>> dic = model.skillActDict[_skillJobKey];
|
| | | Dictionary<int, PlayerSkillData> playerskills = PlayerDatas.Instance.skill.GetAllSkill();
|
| | | skillListAct.Clear();
|
| | | foreach (int key in dic.Keys)
|
| | | {
|
| | | List<SkillConfig> typeList = dic[key];
|
| | | SkillConfig lvCfg = typeList[0];
|
| | | foreach (SkillConfig cfg in typeList)
|
| | | List<int> typeList = dic[key];
|
| | | var skillId = typeList[0];
|
| | | foreach (var id in typeList)
|
| | | {
|
| | | if (PlayerDatas.Instance.skill.GetSKillById(cfg.SkillID) != null)
|
| | | if (PlayerDatas.Instance.skill.GetSKillById(id) != null)
|
| | | {
|
| | | lvCfg = cfg;
|
| | | skillId = id;
|
| | | break;
|
| | | }
|
| | | }
|
| | | if (PlayerDatas.Instance.skill.GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(lvCfg.SkillID))
|
| | | if (PlayerDatas.Instance.skill.GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(skillId))
|
| | | {
|
| | | continue;
|
| | | }
|
| | | skillListAct.Add(lvCfg);
|
| | | skillListAct.Add(skillId);
|
| | | }
|
| | | if (skillListAct.Count < 1)
|
| | | {
|
| | | return;
|
| | | }
|
| | | model.presentSltSkillID = skillListAct[0].SkillID;
|
| | | model.presentSltSkillID = skillListAct[0];
|
| | | flipActScroll.pageCnt = Mathf.CeilToInt((float)skillListAct.Count / SkillModel.ACT_SKILL_NUM);
|
| | | UpdateSltSkill();
|
| | | }
|
| | |
| | | m_AchieveSkillId = _skillId;
|
| | | var _index = skillListAct.FindIndex((x) =>
|
| | | {
|
| | | return x.SkillID == _skillId;
|
| | | return x == _skillId;
|
| | | });
|
| | | if (_index != -1)
|
| | | {
|
| | |
| | | m_Time = 0; |
| | | } |
| | | |
| | | public void Refresh(SkillConfig skillCfg) |
| | | public void Refresh(int skillId) |
| | | { |
| | | skill.SetSkillData(skillCfg.SkillID); |
| | | if (model.presentSltSkillID == skillCfg.SkillID) { |
| | | skill.SetSkillData(skillId); |
| | | if (model.presentSltSkillID == skillId) { |
| | | skill.m_SelectImg.gameObject.SetActive(true); |
| | | } |
| | | else { |
| | | skill.m_SelectImg.gameObject.SetActive(false); |
| | | } |
| | | |
| | | skill.SetActive(PlayerDatas.Instance.skill.GetSKillById(skillCfg.SkillID) != null); |
| | | skill.SetActive(PlayerDatas.Instance.skill.GetSKillById(skillId) != null); |
| | | skill.m_SkillBtn.onClick.RemoveAllListeners(); |
| | | skill.m_SkillBtn.onClick.AddListener(OnClickSkill); |
| | | } |
| | |
| | | public int passEquipCnt { get; private set; }
|
| | | public Dictionary<int, int[]> passEquipGetWays = new Dictionary<int, int[]>();
|
| | | public Dictionary<int, string> passEquipGetWayTxts;
|
| | | public Dictionary<int, Dictionary<int, List<SkillConfig>>> skillActDict { get; private set; }
|
| | | public Dictionary<int, Dictionary<int, List<int>>> skillActDict { get; private set; }
|
| | | public List<int> betterPassSkills { get; private set; }
|
| | | public bool jumpToPass { get; set; }
|
| | | public int minTaskHole { get; private set; }
|
| | |
| | | passEquipGetWayTxts = ConfigParse.GetDic<int, string>(funcCfg.Numerical2);
|
| | | }
|
| | | funcCfg = FuncConfigConfig.Get("SkillActTypeIdSort");
|
| | | skillActDict = new Dictionary<int, Dictionary<int, List<SkillConfig>>>();
|
| | | skillActDict = new Dictionary<int, Dictionary<int, List<int>>>();
|
| | | var _JobTypeIds = ConfigParse.GetMultipleStr<int>(funcCfg.Numerical1);
|
| | | var _dict = new Dictionary<int, List<SkillConfig>>();
|
| | | var _dict = new Dictionary<int, List<int>>();
|
| | | for (int i = 0; i < _JobTypeIds.Length; i++)
|
| | | {
|
| | | var _list = SkillConfig.GetSkillActConfigs(2, ACT_SKILL_TYPE, _JobTypeIds[i]);
|
| | | var _list = SkillConfig.GetSkills(2, ACT_SKILL_TYPE, _JobTypeIds[i]);
|
| | | if (_list != null)
|
| | | {
|
| | | _dict.Add(_JobTypeIds[i], _list);
|
| | |
| | | }
|
| | | skillActDict.Add(2, _dict);
|
| | | _JobTypeIds = ConfigParse.GetMultipleStr<int>(funcCfg.Numerical2);
|
| | | _dict = new Dictionary<int, List<SkillConfig>>();
|
| | | _dict = new Dictionary<int, List<int>>();
|
| | | for (int i = 0; i < _JobTypeIds.Length; i++)
|
| | | {
|
| | | var _list = SkillConfig.GetSkillActConfigs(4, ACT_SKILL_TYPE, _JobTypeIds[i]);
|
| | | var _list = SkillConfig.GetSkills(4, ACT_SKILL_TYPE, _JobTypeIds[i]);
|
| | | if (_list != null)
|
| | | {
|
| | | _dict.Add(_JobTypeIds[i], _list);
|
| | |
| | | }
|
| | | skillActDict.Add(4, _dict);
|
| | | _JobTypeIds = ConfigParse.GetMultipleStr<int>(funcCfg.Numerical3);
|
| | | _dict = new Dictionary<int, List<SkillConfig>>();
|
| | | _dict = new Dictionary<int, List<int>>();
|
| | | for (int i = 0; i < _JobTypeIds.Length; i++)
|
| | | {
|
| | | var _list = SkillConfig.GetSkillActConfigs(8, ACT_SKILL_TYPE, _JobTypeIds[i]);
|
| | | var _list = SkillConfig.GetSkills(8, ACT_SKILL_TYPE, _JobTypeIds[i]);
|
| | | if (_list != null)
|
| | | {
|
| | | _dict.Add(_JobTypeIds[i], _list);
|
| | |
| | | [SerializeField] RectTransform m_ContainerGetWay;
|
| | | [SerializeField] ClickScreenOtherSpace clickOtherSpace;
|
| | | [SerializeField, Header("特效时长")] float m_EffectDuration = 1f;
|
| | | private List<SkillConfig> skillListPass = new List<SkillConfig>();
|
| | | private List<int> skillListPass = new List<int>();
|
| | | private int presentSltEquipIndex = -1;
|
| | |
|
| | | Coroutine cacheCoroutine = null;
|
| | |
| | |
|
| | | void GetSkillList()
|
| | | {
|
| | | Dictionary<int, List<SkillConfig>> dic = SkillConfig.GetSkillWithOccpyAndType((int)Mathf.Pow(2, PlayerDatas.Instance.baseData.Job), SkillModel.PASS_SKILL_TYPE);
|
| | | Dictionary<int, List<int>> dic = SkillConfig.GetSkillWithOccpyAndType((int)Mathf.Pow(2, PlayerDatas.Instance.baseData.Job), SkillModel.PASS_SKILL_TYPE);
|
| | | Dictionary<int, PlayerSkillData> playerskills = PlayerDatas.Instance.skill.GetAllSkill();
|
| | | skillListPass.Clear();
|
| | | foreach (int key in dic.Keys)
|
| | | {
|
| | | SkillConfig lvCfg = dic[key][0];
|
| | | foreach (SkillConfig cfg in dic[key])
|
| | | var skillId = dic[key][0];
|
| | | foreach (var id in dic[key])
|
| | | {
|
| | | if (PlayerDatas.Instance.skill.GetSKillById(cfg.SkillID) != null) { lvCfg = cfg; break; }
|
| | | if (PlayerDatas.Instance.skill.GetSKillById(id) != null) { skillId = id; break; }
|
| | | }
|
| | | if (PlayerDatas.Instance.skill.GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(lvCfg.SkillID)) continue;
|
| | | skillListPass.Add(lvCfg);
|
| | | if (PlayerDatas.Instance.skill.GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(skillId)) continue;
|
| | | skillListPass.Add(skillId);
|
| | | }
|
| | | if (skillListPass.Count < 1) return;
|
| | | model.presentSltSkillID = skillListPass[0].SkillID;
|
| | | model.presentSltSkillID = skillListPass[0];
|
| | | flipScroll.pageCnt = Mathf.CeilToInt((float)skillListPass.Count / SkillModel.PASS_SKILL_NUM);
|
| | | flipScroll.RefreshActive();
|
| | | }
|