少年修仙传客户端代码仓库
client_linchunjie
2018-09-26 0ced6b94425308d2a672fb93e9d245906d1d4879
3687 天赋功能
7个文件已修改
265 ■■■■ 已修改文件
Core/GameEngine/Model/ConfigManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/TalentModel.cs 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/TalentSeriesBehaviour.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/TalentSkillBehaviour.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/TalentTreeScriptable.cs 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/TalentWin.cs 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs
@@ -192,6 +192,7 @@
        AddAsyncTask<DungeonSpecialStateTimeConfig>();
        AddAsyncTask<DailyQuestSpecialOpenTimeConfig>();
        AddAsyncTask<WHYJRewardConfig>();
        AddAsyncTask<TalentConfig>();
        while (!AllCompleted())
        {
            var completedCount = 0;
System/Skill/TalentModel.cs
@@ -62,7 +62,7 @@
        public override void Init()
        {
            //ParseConfig();
            ParseConfig();
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
        }
@@ -134,12 +134,22 @@
            return talentSkills.TryGetValue(talentId, out talent);
        }
        public int GetTalentTypeTotalPoint(int series, int talentType)
        public int GetTalentTypePoint(int talentType)
        {
            var point = 0;
            for (int i = 1; i <= 3; i++)
            {
                point += GetSeriesPoint(talentType, i);
            }
            return point;
        }
        public int GetSeriesPoint(int talentType,int talentSeries)
        {
            var job = (int)Math.Pow(PlayerDatas.Instance.baseData.Job, 2);
            List<int> list;
            var point = 0;
            if (TryGetTalents(job, series, talentType, out list))
            if (TryGetTalents(job, talentType, talentSeries, out list))
            {
                for (int i = 0; i < list.Count; i++)
                {
@@ -169,16 +179,16 @@
                    error = 2;
                    return false;
                }
                var talentConfig = Config.Instance.Get<TalentConfig>(talent.skillId + talent.level);
                var talentConfig = talent.GetTalentConfig(talent.level + 1);
                if (talentConfig.requireSeriesPoint != 0)
                {
                    if (GetTalentTypeTotalPoint(talentConfig.requireSeries, talentConfig.type) < talentConfig.requireSeriesPoint)
                    if (GetSeriesPoint(talentConfig.type, talentConfig.requireSeries) < talentConfig.requireSeriesPoint)
                    {
                        error = 4;
                        return false;
                    }
                }
                var skillConfig = Config.Instance.Get<SkillConfig>(talent.skillId + talent.level);
                var skillConfig = talent.GetSkillConfig(talent.level + 1);
                if (skillConfig.LearnSkillReq != 0)
                {
                    TalentSkill learnTalent;
@@ -238,6 +248,30 @@
            this.skillId = skillId;
            this.maxLevel = maxLevel;
        }
        public SkillConfig GetSkillConfig(int level = 0)
        {
            if (level > 0)
            {
                return Config.Instance.Get<SkillConfig>(skillId + level - 1);
            }
            else
            {
                return Config.Instance.Get<SkillConfig>(skillId + level);
            }
        }
        public TalentConfig GetTalentConfig(int level = 0)
        {
            if (level > 0)
            {
                return Config.Instance.Get<TalentConfig>(skillId + level - 1);
            }
            else
            {
                return Config.Instance.Get<TalentConfig>(skillId + level);
            }
        }
    }
    public class TalentSeries
System/Skill/TalentSeriesBehaviour.cs
@@ -8,15 +8,13 @@
{
    public class TalentSeriesBehaviour : MonoBehaviour
    {
        [SerializeField] int talentSeries;
        [SerializeField] int talentSeries = 0;
        [SerializeField] Button m_Button;
        [SerializeField] Image m_Icon;
        [SerializeField] Text m_TalentType;
        [SerializeField] Text m_TalentPoint;
        TalentModel model { get { return ModelCenter.Instance.GetModel<TalentModel>(); } }
        int series = 0;
        private void Awake()
        {
@@ -31,22 +29,22 @@
            }
        }
        public void Display(int _series)
        public void Display()
        {
            series = _series;
            OnSelectTalentTypeEvnet();
            model.OnSelectTalentTypeEvnet -= OnSelectTalentTypeEvnet;
            model.OnSelectTalentTypeEvnet += OnSelectTalentTypeEvnet;
            m_Button.image.SetSprite(talentSeries == model.selectSeries ? "Title_TabRight" : "Title_TabDark");
            model.OnSelectSeriesEvent -= OnSelectSeriesEvent;
            model.OnSelectSeriesEvent += OnSelectSeriesEvent;
        }
        public void Dispose()
        {
            model.OnSelectTalentTypeEvnet -= OnSelectTalentTypeEvnet;
            model.OnSelectSeriesEvent -= OnSelectSeriesEvent;
        }
        private void OnSelectTalentTypeEvnet()
        private void OnSelectSeriesEvent()
        {
            m_Button.image.SetSprite(talentSeries == model.selectTalentType ? "Title_TabRight" : "Title_TabDark");
            m_Button.image.SetSprite(talentSeries == model.selectSeries ? "Title_TabRight" : "Title_TabDark");
        }
    }
}
System/Skill/TalentSkillBehaviour.cs
@@ -28,6 +28,8 @@
            skillId = _skillId;
            model.talentSkillUpdate -= TalentSkillUpdate;
            model.talentSkillUpdate += TalentSkillUpdate;
            model.OnSelectSkillEvent -= OnSelectSkillEvent;
            model.OnSelectSkillEvent += OnSelectSkillEvent;
            Display();
        }
@@ -43,6 +45,7 @@
                }
                m_Level.text = StringUtility.Contact(talent.level, "/", talent.maxLevel);
                m_Icon.material = talent.level > 0 ? MaterialUtility.GetUIDefaultGraphicMaterial() : MaterialUtility.GetDefaultSpriteGrayMaterial();
                m_ContainerSelect.gameObject.SetActive(skillId == model.selectSkill);
            }
        }
@@ -54,9 +57,15 @@
            }
        }
        private void OnSelectSkillEvent()
        {
            m_ContainerSelect.gameObject.SetActive(skillId == model.selectSkill);
        }
        public void Dispose()
        {
            model.talentSkillUpdate -= TalentSkillUpdate;
            model.OnSelectSkillEvent -= OnSelectSkillEvent;
        }
        private void SelectSkill()
System/Skill/TalentTreeScriptable.cs
@@ -9,10 +9,10 @@
{
    public class TalentTreeScriptable : ScriptableObject
    {
        [SerializeField] TalentTree[] talentTrees;
        [SerializeField] TalentTree talentTrees;
        [SerializeField] Vector2 m_ContentSizeDelta;
        [SerializeField] TalentElement[] skillElements;
        [SerializeField] ArrowElement[] arrowElements;
        [SerializeField] List<TalentElement> skillElements;
        [SerializeField] List<ArrowElement> arrowElements;
        public Vector2 contentSizeDelta
        {
@@ -21,35 +21,83 @@
        public TalentElement GetTalentElement(int index)
        {
            if (index < skillElements.Length)
            if (skillElements != null && index < skillElements.Count)
            {
                return skillElements[index];
            }
            return default(TalentElement);
        }
#if UNITY_EDITOR
        public void ApplyTalentElement(int index,Vector3 _position)
        {
            if (index >= skillElements.Count)
            {
                skillElements.Add(new TalentElement()
                {
                    position = _position,
                });
            }
            else
            {
                skillElements[index] = new TalentElement()
                {
                    position = _position,
                };
            }
        }
        public void SyncElementsCount(int count)
        {
            if (count < skillElements.Count)
            {
                skillElements.RemoveRange(count, skillElements.Count - count);
            }
        }
#endif
        public bool Belong(int job, int talentType, int talentSeries)
        {
            for (int i = 0; i < talentTrees.Length; i++)
            {
                if (talentTrees[i].Belong(job, talentType, talentSeries))
                {
                    return true;
                }
            }
            return false;
            return talentTrees.Belong(job, talentType, talentSeries);
        }
        [Serializable]
        public struct TalentTree
        {
            public int job;
            public int talentType;
            public int talentSeries;
            public int[] jobs;
            public int[] talentTypes;
            public int[] talentSeriess;
            public bool Belong(int job, int talentType, int talentSeries)
            {
                return this.job == job && this.talentType == talentType && this.talentSeries == talentSeries;
                bool sameJob = false;
                for (int i = 0; i < jobs.Length; i++)
                {
                    if (jobs[i] == job)
                    {
                        sameJob = true;
                        break;
                    }
                }
                bool sameType = false;
                for (int i = 0; i < talentTypes.Length; i++)
                {
                    if (talentTypes[i] == talentType)
                    {
                        sameType = true;
                        break;
                    }
                }
                bool sameSeries = false;
                for (int i = 0; i < talentSeriess.Length; i++)
                {
                    if (talentSeriess[i] == talentSeries)
                    {
                        sameSeries = true;
                        break;
                    }
                }
                return sameJob && sameType && sameSeries;
            }
        }
System/Skill/TalentWin.cs
@@ -28,10 +28,14 @@
        [SerializeField] Image m_SelectSkillIcon;
        [SerializeField] Text m_SelectSkillLevel;
        [SerializeField] Text m_SelectSkillName;
        [SerializeField] RectTransform m_ContainerUnActive;
        [SerializeField] RectTransform m_ContainerActive;
        [SerializeField] RectTransform m_ContainerBetter;
        [SerializeField] RectTransform m_ContainerMax;
        [SerializeField] Text[] m_SelectConditions;
        [SerializeField] RectTransform m_ContainerSelectEffect;
        [SerializeField] Text m_SelectSkillEffect;
        [SerializeField] RectTransform m_ContainerNextEffect;
        [SerializeField] Text m_SelectNextEffect;
@@ -42,6 +46,7 @@
#if UNITY_EDITOR
        [SerializeField] TalentTreeScriptable m_EditorScriptable;
        [SerializeField] bool m_EditorMode;
#endif
        TalentModel model { get { return ModelCenter.Instance.GetModel<TalentModel>(); } }
@@ -84,6 +89,10 @@
            {
                m_TalentSeries[i].Dispose();
            }
            for (int i = 0; i < m_TalentSkills.Length; i++)
            {
                m_TalentSkills[i].Dispose();
            }
#if UNITY_EDITOR
            if (m_EditorScriptable != null)
@@ -102,7 +111,7 @@
        {
            base.LateUpdate();
#if UNITY_EDITOR
            if (m_EditorScriptable != null)
            if (m_EditorMode && m_EditorScriptable != null)
            {
                DisplayTalentLayout(m_EditorScriptable);
            }
@@ -113,27 +122,54 @@
        {
            for (int i = 0; i < m_TalentSeries.Length; i++)
            {
                m_TalentSeries[i].Display(model.selectSeries);
                m_TalentSeries[i].Display();
            }
            DisplaySkills();
            DisplaySeries();
            DisplayTalentType();
            DisplaySelectSkill();
            DisplayTalentPoint();
        }
        void DisplaySkills()
        {
            var job = PlayerDatas.Instance.baseData.Job;
            List<int> talents = null;
            model.TryGetTalents(job, model.selectTalentType, model.selectSeries, out talents);
            for (int i = 0; i < m_TalentConfigs.Length; i++)
            {
                if (m_TalentConfigs[i].Belong(job, model.selectTalentType, model.selectSeries))
                {
                    DisplayTalentLayout(m_TalentConfigs[i]);
                    break;
                }
            }
            if (talents != null && talents.Count > 0)
            {
                model.selectSkill = talents[0];
            }
            m_Scroller.verticalNormalizedPosition = 1;
            for (int i = 0; i < m_TalentSkills.Length; i++)
            {
                if (talents != null && i < talents.Count)
                {
                    m_TalentSkills[i].gameObject.SetActive(true);
                    m_TalentSkills[i].Display(talents[i]);
                }
                else
                {
                    m_TalentSkills[i].Dispose();
                    m_TalentSkills[i].gameObject.SetActive(false);
                }
            }
        }
        void DisplaySeries()
        void DisplayTalentType()
        {
            var point = 0;
            point += model.GetTalentTypeTotalPoint(model.selectSeries, 1);
            point += model.GetTalentTypeTotalPoint(model.selectSeries, 2);
            point += model.GetTalentTypeTotalPoint(model.selectSeries, 3);
            m_TalentType.text = model.selectSeries == 1 ? string.Format("智力天赋({0})", point) : string.Format("力量天赋({0})", point);
            var point = model.GetTalentTypePoint(model.selectTalentType);
            m_TalentType.text = model.selectTalentType == 1 ? string.Format("智力天赋({0})", point) : string.Format("力量天赋({0})", point);
        }
        void DisplaySelectSkill()
@@ -151,8 +187,8 @@
            var index = 0;
            if (model.TryGetTalent(model.selectSkill, out talent))
            {
                var talentConfig = Config.Instance.Get<TalentConfig>(talent.skillId + talent.level);
                var skillConfig = Config.Instance.Get<SkillConfig>(talent.skillId + talent.level);
                var talentConfig = talent.GetTalentConfig(talent.level + 1);
                var skillConfig = talent.GetSkillConfig(talent.level + 1);
                if (talentConfig != null)
                {
                    if (talentConfig.requireSeriesPoint != 0 && index < m_SelectConditions.Length)
@@ -190,7 +226,7 @@
            if (model.TryGetTalent(model.selectSkill, out talent))
            {
                m_ContainerSelectSkill.gameObject.SetActive(true);
                var config = Config.Instance.Get<SkillConfig>(talent.skillId + talent.level);
                var config = talent.GetSkillConfig(talent.level);
                m_SelectSkillIcon.SetSprite(config.IconName);
                m_SelectSkillLevel.text = StringUtility.Contact(talent.level, "/", talent.maxLevel);
                m_SelectSkillName.text = config.SkillName;
@@ -202,12 +238,19 @@
            TalentSkill talent;
            if (model.TryGetTalent(model.selectSkill, out talent))
            {
                var config = Config.Instance.Get<SkillConfig>(talent.skillId + talent.level);
                m_SelectSkillEffect.text = config.Description;
                m_ContainerNextEffect.gameObject.SetActive(talent.level < talent.maxLevel);
                m_ContainerUnActive.gameObject.SetActive(talent.level == 0);
                m_ContainerActive.gameObject.SetActive(talent.level > 0);
                m_ContainerBetter.gameObject.SetActive(talent.level < talent.maxLevel);
                m_ContainerMax.gameObject.SetActive(talent.level >= talent.maxLevel);
                if (talent.level > 0)
                {
                    var config = talent.GetSkillConfig(talent.level);
                    m_SelectSkillEffect.text = config.Description;
                }
                if (talent.level < talent.maxLevel)
                {
                    var nextConfig = Config.Instance.Get<SkillConfig>(talent.skillId + talent.level + 1);
                    var nextConfig = talent.GetSkillConfig(talent.level + 1);
                    m_SelectNextEffect.text = nextConfig.Description;
                }
            }
@@ -249,13 +292,15 @@
        private void OnSelectTalentTypeEvnet()
        {
            model.selectSeries = 1;
            DisplaySkills();
            DisplaySelectSkill();
        }
        private void OnSelectSeriesEvent()
        {
            model.selectTalentType = 1;
            Display();
            DisplaySkills();
            DisplaySelectSkill();
        }
        private void OnSelectSkillEvent()
@@ -296,6 +341,27 @@
                m_TalentSkills[i].transform.localPosition = element.position;
            }
        }
#if UNITY_EDITOR
        [ContextMenu("应用位置数据")]
        void ApplyPositionToScriptable()
        {
            if (m_EditorScriptable == null)
            {
                return;
            }
            var count = 0;
            for (int i = 0; i < m_TalentSkills.Length; i++)
            {
                if (m_TalentSkills[i].gameObject.activeSelf)
                {
                    m_EditorScriptable.ApplyTalentElement(count, m_TalentSkills[i].transform.localPosition);
                    count++;
                }
            }
            m_EditorScriptable.SyncElementsCount(count);
        }
#endif
    }
}
System/WindowBase/ModelCenter.cs
@@ -195,6 +195,7 @@
            RegisterModel<PrayForDurgModel>();
            RegisterModel<FeatureNoticeModel>();
            RegisterModel<AwardExchangeModel>();
            RegisterModel<TalentModel>();
            inited = true;
        }