| | |
| | |
|
| | | public class PlayerSkillDatas
|
| | | {
|
| | | private Dictionary<int, PlayerSkillData> _playerSkills = new Dictionary<int, PlayerSkillData>();
|
| | | private Dictionary<int, PlayerSkillData> _quickSkills = new Dictionary<int, PlayerSkillData>();
|
| | | public static event Action OnQuickSkillRefresh;
|
| | | public static event Action OnRefreshSkill;
|
| | | private Dictionary<int, PlayerSkillData> m_PlayerSkills = new Dictionary<int, PlayerSkillData>();
|
| | | private Dictionary<int, PlayerSkillData> m_QuickSkills = new Dictionary<int, PlayerSkillData>();
|
| | | private Dictionary<int, List<int>> filterPlayerSkillDic = new Dictionary<int, List<int>>();
|
| | | private Dictionary<int, int> filterQuickSkillDic = new Dictionary<int, int>();
|
| | |
|
| | | public static event Action OnQuickSkillRefresh;
|
| | | public static event Action OnRefreshSkill;
|
| | | private bool hasInitQuickSkill = false;
|
| | |
|
| | | private bool isServerPrepare = false;
|
| | |
|
| | | SkillModel m_Model;
|
| | |
| | | }
|
| | |
|
| | | PlayerSkillData data = null;
|
| | | _playerSkills.TryGetValue(vNetData.NewSkillID, out data);
|
| | | m_PlayerSkills.TryGetValue(vNetData.NewSkillID, out data);
|
| | | if (data == null)
|
| | | {
|
| | | data = new PlayerSkillData(vNetData.NewSkillID, 1);
|
| | | _playerSkills.Add(data.id, data);
|
| | | m_PlayerSkills.Add(data.id, data);
|
| | | }
|
| | |
|
| | | model.CheckEquipPassSkill(data);
|
| | |
|
| | | bool fitter = GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(data.id);
|
| | |
|
| | | |
| | | if (hasInitQuickSkill)
|
| | | {
|
| | | int pos = ContainsQuickSkillType(data.id);
|
| | | if (pos != -1)
|
| | | {
|
| | | SetQuickSkill(pos, data.id);
|
| | | }
|
| | | }
|
| | |
|
| | | PlayerSkillData olddata = null;
|
| | | _playerSkills.TryGetValue(vNetData.OldSkillID, out olddata);
|
| | | m_PlayerSkills.TryGetValue(vNetData.OldSkillID, out olddata);
|
| | | if (olddata != null)
|
| | | {
|
| | | if (hasInitQuickSkill)
|
| | | {
|
| | | int pos = ContainsQuickSkill(olddata.id);
|
| | | if (pos != -1 && !fitter)
|
| | | {
|
| | | SetQuickSkill(pos, data.id);
|
| | | }
|
| | | }
|
| | | _playerSkills.Remove(vNetData.OldSkillID);
|
| | | m_PlayerSkills.Remove(vNetData.OldSkillID);
|
| | | olddata = null;
|
| | |
|
| | | var oldConfig = SkillConfig.Get(vNetData.OldSkillID);
|
| | | if (oldConfig.SkillTypeID == data.skillCfg.SkillTypeID)
|
| | | {
|
| | | var pos = ContainsQuickSkill(vNetData.OldSkillID);
|
| | | if (pos != -1)
|
| | | {
|
| | | SetQuickSkill(pos, vNetData.NewSkillID);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | UpdateQuickSkill(data);
|
| | |
| | |
|
| | | public void SetQuickSkills()
|
| | | {
|
| | | _quickSkills.Clear();
|
| | | m_QuickSkills.Clear();
|
| | | for (int i = 0; i < SkillModel.QUICK_SKILL_COUNT; i++)
|
| | | {
|
| | | _quickSkills.Add(i, null);
|
| | | m_QuickSkills.Add(i, null);
|
| | | }
|
| | | for (int i = 0; i <= SkillModel.QUICK_SKILL_COUNT; i++)
|
| | | {
|
| | |
| | | }
|
| | | if (!GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(data.id))
|
| | | {
|
| | | _quickSkills[i] = data;
|
| | | m_QuickSkills[i] = data;
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | |
|
| | | public void UpdateQuickSkill(PlayerSkillData data)
|
| | | {
|
| | | if (!hasInitQuickSkill) return;
|
| | | if (!hasInitQuickSkill)
|
| | | {
|
| | | return;
|
| | | }
|
| | | bool fitter = GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(data.id);
|
| | | if (fitter || data.skillCfg.FuncType != SkillModel.ACT_SKILL_TYPE)
|
| | | {
|
| | |
| | | public PlayerSkillData GetQuickSkillByPos(int pos)
|
| | | {
|
| | | PlayerSkillData data = null;
|
| | | _quickSkills.TryGetValue(pos, out data);
|
| | | m_QuickSkills.TryGetValue(pos, out data);
|
| | | return data;
|
| | | }
|
| | |
|
| | | public PlayerSkillData GetSKillById(int id)
|
| | | {
|
| | | PlayerSkillData data = null;
|
| | | _playerSkills.TryGetValue(id, out data);
|
| | | m_PlayerSkills.TryGetValue(id, out data);
|
| | | return data;
|
| | | }
|
| | |
|
| | | public Dictionary<int, PlayerSkillData> GetQuickSkills()
|
| | | {
|
| | | return _quickSkills;
|
| | | return m_QuickSkills;
|
| | | }
|
| | |
|
| | | public void SetQuickSkill(int pos, int id)
|
| | |
| | | return;
|
| | | }
|
| | | bool change = false;
|
| | | for (int i = 0; i < _quickSkills.Count; i++)
|
| | | for (int i = 0; i < m_QuickSkills.Count; i++)
|
| | | {
|
| | | PlayerSkillData skill = null;
|
| | | _quickSkills.TryGetValue(i, out skill);
|
| | | m_QuickSkills.TryGetValue(i, out skill);
|
| | | if (skill == null)
|
| | | {
|
| | | continue;
|
| | |
| | | else if (skill.id == id)
|
| | | {
|
| | | change = true;
|
| | | PlayerSkillData temp = _quickSkills[pos];
|
| | | _quickSkills[pos] = skill;
|
| | | _quickSkills[i] = temp;
|
| | | PlayerSkillData temp = m_QuickSkills[pos];
|
| | | m_QuickSkills[pos] = skill;
|
| | | m_QuickSkills[i] = temp;
|
| | | break;
|
| | | }
|
| | | }
|
| | | if (!change)
|
| | | {
|
| | | _quickSkills[pos] = data;
|
| | | m_QuickSkills[pos] = data;
|
| | | }
|
| | |
|
| | | for (int i = 0; i < _quickSkills.Count; i++)
|
| | | for (int i = 0; i < m_QuickSkills.Count; i++)
|
| | | {
|
| | | PlayerSkillData skill = null;
|
| | | _quickSkills.TryGetValue(i, out skill);
|
| | | m_QuickSkills.TryGetValue(i, out skill);
|
| | | if (skill != null)
|
| | | {
|
| | | string val = MathUtils.Convert10To64(skill.id);
|
| | |
| | |
|
| | | public Dictionary<int, PlayerSkillData> GetAllSkill()
|
| | | {
|
| | | return _playerSkills;
|
| | | return m_PlayerSkills;
|
| | | }
|
| | |
|
| | | public int ContainsQuickSkill(int id)
|
| | | {
|
| | | foreach (int pos in _quickSkills.Keys)
|
| | | foreach (int pos in m_QuickSkills.Keys)
|
| | | {
|
| | | if (_quickSkills[pos] == null) continue;
|
| | | if (_quickSkills[pos].id == id) return pos;
|
| | | if (m_QuickSkills[pos] == null) continue;
|
| | | if (m_QuickSkills[pos].id == id) return pos;
|
| | | }
|
| | | return -1;
|
| | | }
|
| | |
|
| | | public int ContainsQuickSkillType(int id)
|
| | | {
|
| | | foreach (int pos in m_QuickSkills.Keys)
|
| | | {
|
| | | if (m_QuickSkills[pos] == null)
|
| | | {
|
| | | continue;
|
| | | }
|
| | | var quickSkillConfig = SkillConfig.Get(m_QuickSkills[pos].id);
|
| | | var skillConfig = SkillConfig.Get(id);
|
| | | if (quickSkillConfig != null && skillConfig != null
|
| | | && quickSkillConfig.SkillTypeID == skillConfig.SkillTypeID)
|
| | | {
|
| | | return pos;
|
| | | }
|
| | | }
|
| | | return -1;
|
| | | }
|
| | |
| | |
|
| | | public PlayerSkillData GetSkillBySkillTypeID(int typeID)
|
| | | {
|
| | | foreach (var skill in _playerSkills.Values)
|
| | | foreach (var skill in m_PlayerSkills.Values)
|
| | | {
|
| | | if (skill.typeID == typeID)
|
| | | return skill;
|
| | |
| | | public int GetSkillCountByType(int _type)
|
| | | {
|
| | | var count = 0;
|
| | | foreach (var _skill in _playerSkills.Values)
|
| | | foreach (var _skill in m_PlayerSkills.Values)
|
| | | {
|
| | | if (_skill.skillCfg.FuncType == _type)
|
| | | {
|
| | |
| | |
|
| | | public void ClearSkillData()
|
| | | {
|
| | | _quickSkills.Clear();
|
| | | _playerSkills.Clear();
|
| | | m_QuickSkills.Clear();
|
| | | m_PlayerSkills.Clear();
|
| | | }
|
| | | }
|
| | |
|