| | |
| | | [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;
|
| | |
|
| | |
|
| | |
| | |
|
| | | #if UNITY_EDITOR
|
| | | [SerializeField] TalentTreeScriptable m_EditorScriptable;
|
| | | [SerializeField] bool m_EditorMode;
|
| | | #endif
|
| | |
|
| | | TalentModel model { get { return ModelCenter.Instance.GetModel<TalentModel>(); } }
|
| | |
| | | {
|
| | | m_TalentSeries[i].Dispose();
|
| | | }
|
| | | for (int i = 0; i < m_TalentSkills.Length; i++)
|
| | | {
|
| | | m_TalentSkills[i].Dispose();
|
| | | }
|
| | |
|
| | | #if UNITY_EDITOR
|
| | | if (m_EditorScriptable != null)
|
| | |
| | | {
|
| | | base.LateUpdate();
|
| | | #if UNITY_EDITOR
|
| | | if (m_EditorScriptable != null)
|
| | | if (m_EditorMode && m_EditorScriptable != null)
|
| | | {
|
| | | DisplayTalentLayout(m_EditorScriptable);
|
| | | }
|
| | |
| | | {
|
| | | 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()
|
| | |
| | | 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)
|
| | |
| | | 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;
|
| | |
| | | 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;
|
| | | }
|
| | | }
|
| | |
| | |
|
| | | private void OnSelectTalentTypeEvnet()
|
| | | {
|
| | | model.selectSeries = 1;
|
| | | DisplaySkills();
|
| | | DisplaySelectSkill();
|
| | | }
|
| | |
|
| | | private void OnSelectSeriesEvent()
|
| | | {
|
| | | model.selectTalentType = 1;
|
| | | Display();
|
| | | DisplaySkills();
|
| | | DisplaySelectSkill();
|
| | | }
|
| | |
|
| | | private void OnSelectSkillEvent()
|
| | |
| | | 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
|
| | | }
|
| | | }
|
| | |
|