From 36a67fa54ddfa8638c3488d00bbcd2d87a076041 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期四, 20 九月 2018 17:29:16 +0800
Subject: [PATCH] 1871天赋功能

---
 System/Skill/TalentTreeBehaviourPattern1.cs      |   24 ++++++
 System/Skill/TalentTreeBehaviour.cs              |   92 +++++++++++++++++++---
 System/Skill/TalentWin.cs                        |   67 ++++------------
 System/Skill/TalentTreeBehaviourPattern1.cs.meta |   12 +++
 4 files changed, 130 insertions(+), 65 deletions(-)

diff --git a/System/Skill/TalentTreeBehaviour.cs b/System/Skill/TalentTreeBehaviour.cs
index 857aca8..7d624ba 100644
--- a/System/Skill/TalentTreeBehaviour.cs
+++ b/System/Skill/TalentTreeBehaviour.cs
@@ -2,33 +2,97 @@
 using System.Collections.Generic;
 using UnityEngine;
 using System;
+using TableConfig;
+using UnityEngine.UI;
+
 namespace Snxxz.UI
 {
     public class TalentTreeBehaviour : MonoBehaviour
     {
-        [SerializeField] TalentTree[] talentTrees;
+        [SerializeField] TalentTree m_TalentTree;
+        [SerializeField] TalentSkillBehaviour[] m_TalentSkills;
+        [SerializeField] ScrollRect m_Scroller;
+        TalentModel model
+        {
+            get { return ModelCenter.Instance.GetModel<TalentModel>(); }
+        }
+
+        public int series { get; private set; }
+        public int talentType { get; private set; }
+
+        public virtual void Display(int series, int type)
+        {
+            this.series = series;
+            talentType = type;
+            DisplaySkills();
+            m_Scroller.verticalNormalizedPosition = 1;
+        }
+
+        void DisplaySkills()
+        {
+            var job = PlayerDatas.Instance.baseData.Job;
+            List<int> talentSkills;
+            model.TryGetTalents(job, series, talentType, out talentSkills);
+            for (int i = 0; i < m_TalentSkills.Length; i++)
+            {
+                m_TalentSkills[i].Dispose();
+                if (talentSkills != null && i < talentSkills.Count)
+                {
+                    m_TalentSkills[i].gameObject.SetActive(true);
+                    m_TalentSkills[i].Display(talentSkills[i]);
+                }
+                else
+                {
+                    m_TalentSkills[i].gameObject.SetActive(false);
+                }
+            }
+
+            model.selectSkill = talentSkills != null ? talentSkills[0] : 0;
+        }
+
+        public virtual void Dispose()
+        {
+
+        }
 
         public bool BelongToTalentTree(int job, int series, int type)
         {
-            for (int i = 0; i < talentTrees.Length; i++)
-            {
-                var talentTree = talentTrees[i];
-                if (talentTree.job == job && talentTree.series == series
-                    && talentTree.type == type)
-                {
-                    return true;
-                }
-            }
-            return false;
+            return m_TalentTree.BelongToTalentTree(job, series, type);
         }
     }
 
     [Serializable]
     public struct TalentTree
     {
-        public int job;
-        public int series;
-        public int type;
+        public int[] jobs;
+        public int[] series;
+        public int[] types;
+
+        public bool BelongToTalentTree(int job, int series, int type)
+        {
+            for (int i = 0; i < jobs.Length; i++)
+            {
+                if (jobs[i] != job)
+                {
+                    continue;
+                }
+                for (int k = 0; k < this.series.Length; k++)
+                {
+                    if (this.series[k] != series)
+                    {
+                        continue;
+                    }
+                    for (int q = 0; q < types.Length; q++)
+                    {
+                        if (types[q] == type)
+                        {
+                            return true;
+                        }
+                    }
+                }
+            }
+            return false;
+        }
     }
 }
 
diff --git a/System/Skill/TalentTreeBehaviourPattern1.cs b/System/Skill/TalentTreeBehaviourPattern1.cs
new file mode 100644
index 0000000..c96971e
--- /dev/null
+++ b/System/Skill/TalentTreeBehaviourPattern1.cs
@@ -0,0 +1,24 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+namespace Snxxz.UI
+{
+    public class TalentTreeBehaviourPattern1 : TalentTreeBehaviour
+    {
+        public override void Display(int series, int type)
+        {
+            base.Display(series, type);
+        }
+
+        public override void Dispose()
+        {
+            base.Dispose();
+        }
+
+        void DisplaySkills()
+        {
+
+        }
+    }
+}
+
diff --git a/System/Skill/TalentTreeBehaviourPattern1.cs.meta b/System/Skill/TalentTreeBehaviourPattern1.cs.meta
new file mode 100644
index 0000000..c07c66c
--- /dev/null
+++ b/System/Skill/TalentTreeBehaviourPattern1.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 5b3a062129a040a4f803e705f36a0298
+timeCreated: 1537433496
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/Skill/TalentWin.cs b/System/Skill/TalentWin.cs
index addb72e..df1b291 100644
--- a/System/Skill/TalentWin.cs
+++ b/System/Skill/TalentWin.cs
@@ -16,15 +16,9 @@
     {
         [SerializeField] TalentButtonBehaviour[] m_TalentButtons;
         [SerializeField] TalentTreeBehaviour[] m_TalentTrees;
-
         [SerializeField] RectTransform m_ContainerSelect;
-
         [SerializeField] Button m_TalentSeriesSelect;
         [SerializeField] Text m_TalentSeries;
-
-        [SerializeField] ScrollRect m_SkillScroller;
-        [SerializeField] TalentSkillBehaviour[] m_SkillBehaviours;
-
         [SerializeField] RectTransform m_ContainerSelectSkill;
         [SerializeField] Image m_SelectSkillIcon;
         [SerializeField] Text m_SelectSkillLevel;
@@ -81,10 +75,9 @@
             {
                 m_TalentButtons[i].Dispose();
             }
-
-            for (int i = 0; i < m_SkillBehaviours.Length; i++)
+            for (int i = 0; i < m_TalentTrees.Length; i++)
             {
-                m_SkillBehaviours[i].Dispose();
+                m_TalentTrees[i].Dispose();
             }
         }
 
@@ -108,29 +101,20 @@
 
         void DisplaySkills()
         {
-            //var job = PlayerDatas.Instance.baseData.Job;
-            //List<int> talentSkills;
-            //model.TryGetTalents(job, model.selectSeries, model.selectTalentType, out talentSkills);
-            //var config = model.selectTalentType == 1 ? m_TalentAtkConfig : model.selectTalentType == 2 ?
-            //    m_TalentDefConfig : m_TalentGeneralConfig;
-            //m_SkillScroller.verticalNormalizedPosition = 1;
-            //for (int i = 0; i < m_SkillBehaviours.Length; i++)
-            //{
-            //    if (talentSkills != null && i < talentSkills.Count)
-            //    {
-            //        m_SkillBehaviours[i].gameObject.SetActive(true);
-            //        var position = config == null ? Vector3.zero : config.GetSkillPosition(i);
-            //        m_SkillBehaviours[i].transform.localPosition = position;
-            //        m_SkillBehaviours[i].Display(talentSkills[i]);
-            //    }
-            //    else
-            //    {
-            //        m_SkillBehaviours[i].Dispose();
-            //        m_SkillBehaviours[i].gameObject.SetActive(false);
-            //    }
-            //}
-            //
-            //model.selectSkill = talentSkills != null ? talentSkills[0] : 0;
+            var job = PlayerDatas.Instance.baseData.Job;
+            for (int i = 0; i < m_TalentTrees.Length; i++)
+            {
+                m_TalentTrees[i].Dispose();
+                if (m_TalentTrees[i].BelongToTalentTree(job, model.selectSeries, model.selectTalentType))
+                {
+                    m_TalentTrees[i].gameObject.SetActive(true);
+                    m_TalentTrees[i].Display(model.selectSeries, model.selectTalentType);
+                }
+                else
+                {
+                    m_TalentTrees[i].gameObject.SetActive(false);
+                }
+            }
         }
 
         void DisplaySeries()
@@ -145,25 +129,6 @@
         void DisplaySelectSkill()
         {
             m_ContainerSelect.gameObject.SetActive(false);
-            var job = PlayerDatas.Instance.baseData.Job;
-            List<int> talentSkills;
-            model.TryGetTalents(job, model.selectSeries, model.selectTalentType, out talentSkills);
-            if (talentSkills != null)
-            {
-                var index = talentSkills.FindIndex((x) =>
-                {
-                    return x == model.selectSkill;
-                });
-                if (index != -1)
-                {
-                    if (index < m_SkillBehaviours.Length)
-                    {
-                        m_ContainerSelect.gameObject.SetActive(true);
-                        m_ContainerSelect.SetParent(m_SkillBehaviours[index].transform);
-                        m_ContainerSelect.localPosition = Vector3.zero;
-                    }
-                }
-            }
 
             DisplaySkillInfo();
             DisplayConditions();

--
Gitblit v1.8.0