From 8ebdcb8980b7a630beb6a1ff82381baa0ab2ddb5 Mon Sep 17 00:00:00 2001
From: client_Lhy <995049470@qq.com>
Date: 星期四, 04 七月 2019 13:58:27 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into LuaOrgan
---
System/Skill/SkillModel.cs | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 104 insertions(+), 0 deletions(-)
diff --git a/System/Skill/SkillModel.cs b/System/Skill/SkillModel.cs
index 8de9ba2..400b259 100644
--- a/System/Skill/SkillModel.cs
+++ b/System/Skill/SkillModel.cs
@@ -57,7 +57,18 @@
public int minTaskHole { get; private set; }
public int maxTaskHole { get; private set; }
+ public bool skillMatchRedpointable
+ {
+ get { return LocalSave.GetBool("SkillMatchRedpointable_" + PlayerDatas.Instance.baseData.PlayerID); }
+ set
+ {
+ LocalSave.SetBool("SkillMatchRedpointable_" + PlayerDatas.Instance.baseData.PlayerID, value);
+ UpdateSkillMatchRedpoint();
+ }
+ }
+
public readonly Redpoint redpoint = new Redpoint(103, 10301);
+ public readonly Redpoint skillMatchRedpoint = new Redpoint(10301, 1030101);
void ParseConfig()
{
@@ -193,6 +204,92 @@
return skill.GetSkillConfig(skill.level).SkillID;
}
return skillID;
+ }
+
+ public bool IsXpSkill(int skillId)
+ {
+ var config = SkillConfig.Get(skillId);
+ if (config != null)
+ {
+ var job = PlayerDatas.Instance.baseData.Job;
+ if (xpSkillsDic.ContainsKey(job))
+ {
+ return xpSkillsDic[job] == config.SkillTypeID;
+ }
+ }
+ return false;
+ }
+
+ void VerifyQuickSkillExistXp()
+ {
+ var quickSkills = PlayerDatas.Instance.skill.GetQuickSkills();
+ var existXp = false;
+ var lastIndex = 0;
+ foreach (var index in quickSkills.Keys)
+ {
+ if (quickSkills[index] != null)
+ {
+ if (IsXpSkill(quickSkills[index].id))
+ {
+ existXp = true;
+ QuickSetting.Instance.SetQuickSetting(QuickSetting.QuickSettingType.Skill, "***", index);
+ continue;
+ }
+ if (existXp)
+ {
+ var temp = QuickSetting.Instance.GetQuickSetting(QuickSetting.QuickSettingType.Skill, index);
+ QuickSetting.Instance.SetQuickSetting(QuickSetting.QuickSettingType.Skill, temp, index - 1);
+ QuickSetting.Instance.SetQuickSetting(QuickSetting.QuickSettingType.Skill, "***", index);
+ }
+ lastIndex = index;
+ }
+ }
+ if (existXp)
+ {
+ if (lastIndex == QUICK_SKILL_COUNT - 1)
+ {
+ var skills = GetActSkills();
+ for (int i = 0; i < skills.Count; i++)
+ {
+ if (PlayerDatas.Instance.skill.GetSKillById(skills[i]) != null
+ && !IsXpSkill(skills[i]) && PlayerDatas.Instance.skill.ContainsQuickSkill(skills[i]) == -1)
+ {
+ string value = MathUtils.Convert10To64(skills[i]);
+ QuickSetting.Instance.SetQuickSetting(QuickSetting.QuickSettingType.Skill, value, lastIndex);
+ break;
+ }
+ }
+ }
+
+ QuickSetting.Instance.SendPackage();
+ PlayerDatas.Instance.skill.SetQuickSkills();
+ }
+ }
+
+ List<int> GetActSkills()
+ {
+ List<int> skills = new List<int>();
+ var skillType = (int)Math.Pow(2, PlayerDatas.Instance.baseData.Job);
+ Dictionary<int, List<int>> dict = skillActDict[skillType];
+ foreach (int key in dict.Keys)
+ {
+ List<int> list = dict[key];
+ var skillId = list[0];
+ foreach (var id in list)
+ {
+ if (PlayerDatas.Instance.skill.GetSKillById(id) != null)
+ {
+ skillId = id;
+ break;
+ }
+ }
+ if (PlayerDatas.Instance.skill.GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(skillId))
+ {
+ continue;
+ }
+ skills.Add(skillId);
+ }
+ return skills;
}
#endregion
@@ -545,6 +642,8 @@
}
playerLoginOk = true;
UpdateRedpoint();
+ VerifyQuickSkillExistXp();
+ UpdateSkillMatchRedpoint();
//UpdateTaskHoleRedpoint();
}
@@ -659,6 +758,11 @@
}
}
+ void UpdateSkillMatchRedpoint()
+ {
+ skillMatchRedpoint.state = skillMatchRedpointable ? RedPointState.Simple : RedPointState.None;
+ }
+
public void SetDayRemind()
{
DayRemind.Instance.SetDayRemind(DayRemind.PASS_SKILL_REDPOINT, true);
--
Gitblit v1.8.0