From 6fcd076e11f1ec6a6ba5427acfa0d739e2c2ea4f Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期三, 26 九月 2018 21:33:44 +0800
Subject: [PATCH] 3687 天赋功能

---
 System/Skill/TalentSeriesBehaviour.cs                                                             |   10 +++
 System/Skill/TalentModel.cs                                                                       |   43 +++++++++++--
 Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA550_tagCMResetMasterSkill.cs      |   16 +++++
 System/Skill/TalentWin.cs                                                                         |   64 ++++++++++++---------
 Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA550_tagCMResetMasterSkill.cs.meta |   12 ++++
 5 files changed, 110 insertions(+), 35 deletions(-)

diff --git a/Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA550_tagCMResetMasterSkill.cs b/Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA550_tagCMResetMasterSkill.cs
new file mode 100644
index 0000000..2b5b6eb
--- /dev/null
+++ b/Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA550_tagCMResetMasterSkill.cs
@@ -0,0 +1,16 @@
+using UnityEngine;
+using System.Collections;
+
+// A5 50 重置大师天赋技能 #tagCMResetMasterSkill

+

+public class CA550_tagCMResetMasterSkill : GameNetPackBasic {

+

+    public CA550_tagCMResetMasterSkill () {

+        combineCmd = (ushort)0x03FE;

+        _cmd = (ushort)0xA550;

+    }

+

+    public override void WriteToBytes () {

+    }

+

+}

diff --git a/Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA550_tagCMResetMasterSkill.cs.meta b/Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA550_tagCMResetMasterSkill.cs.meta
new file mode 100644
index 0000000..4e8f22a
--- /dev/null
+++ b/Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA550_tagCMResetMasterSkill.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 34385181537277e42aecb5e9c8fbcb67
+timeCreated: 1537966668
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/Skill/TalentModel.cs b/System/Skill/TalentModel.cs
index 644b254..6d9c44d 100644
--- a/System/Skill/TalentModel.cs
+++ b/System/Skill/TalentModel.cs
@@ -3,6 +3,7 @@
 using UnityEngine;
 using TableConfig;
 using System;
+using System.Linq;
 
 namespace Snxxz.UI
 {
@@ -99,7 +100,8 @@
         }
 
         public int talentResetBook { get; private set; }
-        public int storeId { get; private set; }
+        public int talentResetBookCost { get; private set; }
+        Dictionary<int, List<int>> jobTalentTypeDict = new Dictionary<int, List<int>>();
         void ParseConfig()
         {
             var configs = Config.Instance.GetAllValues<TalentConfig>();
@@ -121,22 +123,47 @@
                         talentTreeDict.Add(skillConfig.UseType, talentTree);
                     }
                     talentTree.Add(configs[i], skillConfig.SkillTypeID);
+
+                    List<int> list = null;
+                    if (!jobTalentTypeDict.TryGetValue(skillConfig.UseType, out list))
+                    {
+                        list = new List<int>();
+                        jobTalentTypeDict.Add(skillConfig.UseType, list);
+                    }
+                    if (!list.Contains(configs[i].type))
+                    {
+                        list.Add(configs[i].type);
+                    }
                 }
             }
+            var jobs = jobTalentTypeDict.Keys.ToList();
+            for (int i = 0; i < jobs.Count; i++)
+            {
+                var list = jobTalentTypeDict[jobs[i]];
+                list.Sort((x, y) =>
+                {
+                    return x.CompareTo(y);
+                });
+            }
+
+
             var config = Config.Instance.Get<FuncConfigConfig>("");
             if (config != null)
             {
                 talentResetBook = int.Parse(config.Numerical1);
+                talentResetBookCost = int.Parse(config.Numerical2);
             }
-            var storeConfigs = Config.Instance.GetAllValues<StoreConfig>();
-            for (int i = 0; i < storeConfigs.Count; i++)
+        }
+
+        public int GetTalentType(int index)
+        {
+            var job = (int)Math.Pow(2, PlayerDatas.Instance.baseData.Job);
+            if (jobTalentTypeDict.ContainsKey(job))
             {
-                if (storeConfigs[i].ItemID == talentResetBook)
-                {
-                    storeId = storeConfigs[i].ID;
-                    break;
-                }
+                var list = jobTalentTypeDict[job];
+                return index < list.Count ? list[index] : list[0];
             }
+            return 1;
         }
 
         public bool TryGetTalents(int job, int talentType, int talentSeries, out List<int> talents)
diff --git a/System/Skill/TalentSeriesBehaviour.cs b/System/Skill/TalentSeriesBehaviour.cs
index 4e2be8e..71ff779 100644
--- a/System/Skill/TalentSeriesBehaviour.cs
+++ b/System/Skill/TalentSeriesBehaviour.cs
@@ -32,12 +32,16 @@
         public void Display()
         {
             m_Button.image.SetSprite(talentSeries == model.selectSeries ? "Title_TabRight" : "Title_TabDark");
+            m_TalentType.text = Language.Get(StringUtility.Contact("TalentBtnSeries_", talentSeries));
+
             DisplayTalentPoint();
 
             model.selectSeriesEvent -= OnSelectSeriesEvent;
             model.selectSeriesEvent += OnSelectSeriesEvent;
             model.selectTalentTypeEvnet -= OnSelectTalentTypeEvnet;
             model.selectTalentTypeEvnet += OnSelectTalentTypeEvnet;
+            model.talentSkillUpdate -= TalentSkillUpdate;
+            model.talentSkillUpdate += TalentSkillUpdate;
         }
 
         void DisplayTalentPoint()
@@ -50,6 +54,12 @@
         {
             model.selectSeriesEvent -= OnSelectSeriesEvent;
             model.selectTalentTypeEvnet -= OnSelectTalentTypeEvnet;
+            model.talentSkillUpdate -= TalentSkillUpdate;
+        }
+
+        private void TalentSkillUpdate(int skillId)
+        {
+            DisplayTalentPoint();
         }
 
         private void OnSelectSeriesEvent()
diff --git a/System/Skill/TalentWin.cs b/System/Skill/TalentWin.cs
index cd290fc..7863003 100644
--- a/System/Skill/TalentWin.cs
+++ b/System/Skill/TalentWin.cs
@@ -68,7 +68,7 @@
         protected override void OnPreOpen()
         {
             model.selectSeries = 1;
-            model.selectTalentType = 1;
+            model.selectTalentType = model.GetTalentType(0);
             Display();
             model.selectTalentTypeEvnet += OnSelectTalentTypeEvnet;
             model.selectSeriesEvent += OnSelectSeriesEvent;
@@ -177,15 +177,19 @@
                     m_TalentSkills[i].gameObject.SetActive(false);
                 }
             }
+
+            var talentTypeDisplay = Language.Get(StringUtility.Contact("TalentType_", model.selectTalentType));
+            var seriesDisplay = Language.Get(StringUtility.Contact("TalentSeries_", model.selectSeries));
+            m_TalentTitle.text = StringUtility.Contact(talentTypeDisplay, "路", seriesDisplay);
         }
 
         void DisplayTalentType()
         {
-            var point = model.GetTalentTypePoint(model.selectTalentType == 1 ? 2 : 1);
+            var unselectTalentType = model.selectTalentType == model.GetTalentType(0) ? model.GetTalentType(1) : model.GetTalentType(0);
+            var point = model.GetTalentTypePoint(unselectTalentType);
             var job = PlayerDatas.Instance.baseData.Job;
-            var talentTypeDisplay = Language.Get(StringUtility.Contact("TalentType_", job, "_", model.selectTalentType == 1 ? 2 : 1));
+            var talentTypeDisplay = Language.Get(StringUtility.Contact("TalentBtnType_", unselectTalentType));
             m_TalentType.text = StringUtility.Contact(talentTypeDisplay, "锛�", point, "锛�");
-            m_TalentTitle.text = Language.Get(StringUtility.Contact("TalentTitle_", job, "_", model.selectTalentType));
         }
 
         void DisplaySelectSkill()
@@ -209,8 +213,13 @@
                     if (requireSeriesPoint != 0 && index < m_SelectConditions.Length)
                     {
                         m_SelectConditions[index].gameObject.SetActive(true);
-                        m_SelectConditions[index].text = StringUtility.Contact(model.GetSeriesPoint(talentConfig.type,
-                            skillConfig.RequireSeries()), "/", requireSeriesPoint);
+                        var requireSeries = skillConfig.RequireSeries();
+                        var point = model.GetSeriesPoint(talentConfig.type, requireSeries);
+                        var requireDisplay = StringUtility.Contact(point, "/", requireSeriesPoint);
+                        requireDisplay = UIHelper.GetTextColorByItemColor(point >= requireSeriesPoint ?
+                            TextColType.Green : TextColType.Red, requireDisplay);
+                        var seriesDisplay = Language.Get("TalentSeriesCondition", Language.Get(StringUtility.Contact("TalentSeries_", requireSeries)));
+                        m_SelectConditions[index].text = StringUtility.Contact(seriesDisplay, requireDisplay);
                         index++;
                     }
                 }
@@ -221,10 +230,10 @@
                     {
                         var learnSkillConfig = Config.Instance.Get<SkillConfig>(skillConfig.LearnSkillReq);
                         m_SelectConditions[index].gameObject.SetActive(true);
-                        m_SelectConditions[index].text = StringUtility.Contact(
-                            "鍓嶇疆澶╄祴锛� ", learnSkillConfig.SkillName, " ",
-                            learnTalent.level, "/", learnSkillConfig.LearnSkillLV
-                            );
+                        var requireDisplay = StringUtility.Contact(learnSkillConfig.SkillName, " ", learnTalent.level, "/", skillConfig.LearnSkillLV);
+                        requireDisplay = UIHelper.GetTextColorByItemColor(learnTalent.level >= skillConfig.LearnSkillLV ?
+                            TextColType.Green : TextColType.Red, requireDisplay);
+                        m_SelectConditions[index].text = StringUtility.Contact(Language.Get("TalentPreSkillCondition"), requireDisplay);
                         index++;
                     }
                 }
@@ -328,7 +337,8 @@
 
         private void SelectTalentType()
         {
-            model.selectTalentType = model.selectTalentType == 1 ? 2 : 1;
+            model.selectTalentType = model.selectTalentType == model.GetTalentType(0) ?
+                model.GetTalentType(1) : model.GetTalentType(0);
         }
 
         private void DisplayLevelUp()
@@ -336,7 +346,7 @@
             TalentSkill talent;
             if (model.TryGetTalent(model.selectSkill, out talent))
             {
-                m_AddPointBtnText.text = talent.level >= talent.maxLevel ? "宸叉弧绾�" : "鍔犵偣";
+                m_AddPointBtnText.text = talent.level >= talent.maxLevel ? Language.Get("TalentHighestLevel") : Language.Get("TalentLevelUp");
             }
         }
 
@@ -363,26 +373,26 @@
         private void ResetPoint()
         {
             var count = pack.GetItemCountByID(PackType.rptItem, model.talentResetBook);
+            var config = Config.Instance.Get<ItemConfig>(model.talentResetBook);
             if (count > 0)
             {
-                ConfirmCancel.ShowItemConfirm(Language.Get(""), model.talentResetBook, 1, () =>
-                   {
-
-                   });
+                ConfirmCancel.ShowItemConfirm(Language.Get("TalentResetRequire", config.ItemName), model.talentResetBook, 1, () =>
+                    {
+                        CA550_tagCMResetMasterSkill pak = new CA550_tagCMResetMasterSkill();
+                        GameNetSystem.Instance.SendInfo(pak);
+                    });
             }
             else
             {
-                if (model.storeId != 0)
-                {
-                    var storeConfig = Config.Instance.Get<StoreConfig>(model.storeId);
-                    ConfirmCancel.ShowPopConfirm(Language.Get(""), Language.Get("", storeConfig.MoneyNumber), (bool isOk) =>
-                       {
-                           if (isOk)
-                           {
-                               ModelCenter.Instance.GetModel<StoreModel>().SendBuyShopItem(storeConfig, 1);
-                           }
-                       });
-                }
+                ConfirmCancel.ShowPopConfirm(Language.Get(Language.Get("Mail101")), Language.Get("LackTalentBook",
+                    config.ItemName, model.talentResetBookCost), (bool isOk) =>
+                    {
+                        if (isOk)
+                        {
+                            CA550_tagCMResetMasterSkill pak = new CA550_tagCMResetMasterSkill();
+                            GameNetSystem.Instance.SendInfo(pak);
+                        }
+                    });
             }
         }
 

--
Gitblit v1.8.0