From 90d6578412b713ec00f31a9e5a1a1d865e484803 Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期三, 06 三月 2019 15:45:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into Auction
---
Core/GameEngine/Model/Player/Skill/PlayerSkillDatas.cs | 112 +++++++++++++++++++++++++++++++++++--------------------
1 files changed, 71 insertions(+), 41 deletions(-)
diff --git a/Core/GameEngine/Model/Player/Skill/PlayerSkillDatas.cs b/Core/GameEngine/Model/Player/Skill/PlayerSkillDatas.cs
index 8b1ede8..dde9857 100644
--- a/Core/GameEngine/Model/Player/Skill/PlayerSkillDatas.cs
+++ b/Core/GameEngine/Model/Player/Skill/PlayerSkillDatas.cs
@@ -9,13 +9,15 @@
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;
@@ -38,30 +40,32 @@
}
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;
}
@@ -85,10 +89,10 @@
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++)
{
@@ -100,6 +104,11 @@
{
continue;
}
+ var config = SkillConfig.Get(id);
+ if (config == null)
+ {
+ continue;
+ }
PlayerSkillData data = GetSKillById(id);
if (data == null)
{
@@ -107,7 +116,7 @@
}
if (!GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(data.id))
{
- _quickSkills[i] = data;
+ m_QuickSkills[i] = data;
}
}
}
@@ -129,7 +138,10 @@
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)
{
@@ -169,20 +181,20 @@
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)
@@ -201,17 +213,16 @@
{
return;
}
- if (data.skillCfg == null || PlayerDatas.Instance.baseData.LV < data.skillCfg.LearnLVReq
- || data.skillCfg.FuncType != SkillModel.ACT_SKILL_TYPE)
+ if (data.skillCfg == null || data.skillCfg.FuncType != SkillModel.ACT_SKILL_TYPE)
{
ServerTipDetails.DisplayNormalTip(Language.Get("L1009"));
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;
@@ -223,21 +234,21 @@
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);
@@ -257,15 +268,34 @@
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;
}
@@ -296,7 +326,7 @@
public PlayerSkillData GetSkillBySkillTypeID(int typeID)
{
- foreach (var skill in _playerSkills.Values)
+ foreach (var skill in m_PlayerSkills.Values)
{
if (skill.typeID == typeID)
return skill;
@@ -307,7 +337,7 @@
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)
{
@@ -319,8 +349,8 @@
public void ClearSkillData()
{
- _quickSkills.Clear();
- _playerSkills.Clear();
+ m_QuickSkills.Clear();
+ m_PlayerSkills.Clear();
}
}
--
Gitblit v1.8.0