//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, February 20, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class TreasurePotentialLevelUpWin : Window { [SerializeField] Image m_SkillIcon; [SerializeField] Text m_SkillName; [SerializeField] Text m_SkillLevel; [SerializeField] Text m_FightPower; [SerializeField] Transform m_ContainerNow; [SerializeField] Text m_SkillDescNow; [SerializeField] Transform m_ContainerNext; [SerializeField] Text m_SkillDescNext; [SerializeField] Transform m_ContainerLevelUp; [SerializeField] Text m_PreSkillCondition; [SerializeField] ItemBehaviour m_Item; [SerializeField] Transform m_ContainerMax; [SerializeField] Button m_Learn; [SerializeField] Button m_LevelUp; [SerializeField] Button m_GetWay; [SerializeField] Button m_Close; [SerializeField] UIEffect m_LevelUpEffect; public static int selectPotentialId = 0; TreasureSkillModel model { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_LevelUp.AddListener(LevelUp); m_Learn.AddListener(LevelUp); m_Close.AddListener(CloseClick); m_GetWay.AddListener(GetWay); } protected override void OnPreOpen() { Display(); model.skillLevelUpRefresh += SkillLevelUpRefresh; packModel.refreshItemCountEvent += RefreshItemCountEvent; } protected override void OnAfterOpen() { } protected override void OnPreClose() { model.skillLevelUpRefresh -= SkillLevelUpRefresh; packModel.refreshItemCountEvent -= RefreshItemCountEvent; } protected override void OnAfterClose() { } #endregion private void SkillLevelUpRefresh(int id) { if (selectPotentialId == id) { Display(); m_LevelUpEffect.Play(); } } public void Display() { TreasurePotential potential; if (model.TryGetPotential(selectPotentialId, out potential)) { var config = potential.GetSkillConfig(potential.level); m_SkillIcon.SetSprite(config.IconName); m_SkillName.text = config.SkillName; m_SkillLevel.text = StringUtility.Contact("LV", potential.level); m_FightPower.text = StringUtility.Contact("+", config.FightPower); var isMax = potential.level >= potential.maxLevel; m_ContainerNext.gameObject.SetActive(!isMax); if (potential.level == 0) { m_SkillDescNow.text = Language.Get("TreasurePotentialNowEffect", Language.Get("TreasurePotentialUnLearn")); } else { m_SkillDescNow.text = Language.Get("TreasurePotentialNowEffect", config.Description); } if (!isMax) { var nextConfig = potential.GetSkillConfig(potential.level + 1); m_SkillDescNext.text = Language.Get("TreasurePotentialNextEffect", nextConfig.Description); var preSkill = config.LearnSkillReq; m_PreSkillCondition.gameObject.SetActive(preSkill != 0 && config.LearnSkillLV > 0); if (preSkill != 0 && config.LearnSkillLV > 0) { TreasurePotential prePotential; var satisfyLevel = false; var preSkillLevel = 0; if (model.TryGetPotential(preSkill, out prePotential)) { preSkillLevel = prePotential.level; satisfyLevel = preSkillLevel >= config.LearnSkillLV; } var preSkillConfig = SkillConfig.Get(preSkill); var displayLevel = StringUtility.Contact( UIHelper.AppendColor(satisfyLevel ? TextColType.Green : TextColType.Red, preSkillLevel.ToString()) , "/", config.LearnSkillLV); m_PreSkillCondition.text = Language.Get("PotentialPreSkillCondition", preSkillConfig.SkillName, displayLevel); } } m_ContainerLevelUp.gameObject.SetActive(!isMax); m_ContainerMax.gameObject.SetActive(isMax); m_GetWay.gameObject.SetActive(!isMax); if (!isMax) { var nextConfig = potential.GetSkillConfig(potential.level + 1); m_Item.SetItem(nextConfig.ExAttr4, nextConfig.ExAttr5); } } var potentialLevel = 0; if (potential != null) { potentialLevel = potential.level; } var error = 0; bool satisfyLevelUp = model.TryLevelUpPotential(selectPotentialId, out error); m_LevelUp.gameObject.SetActive(satisfyLevelUp && potentialLevel > 0); m_Learn.gameObject.SetActive(satisfyLevelUp && potentialLevel == 0); } private void GetWay() { TreasurePotential potential; if (model.TryGetPotential(selectPotentialId, out potential)) { var upConfig = potential.GetSkillConfig(potential.level + 1); ModelCenter.Instance.GetModel().SetChinItemModel(upConfig.ExAttr4); } } private void LevelUp() { var error = 0; if (model.TryLevelUpPotential(selectPotentialId, out error)) { var pak = new C0304_tagCAddSkillPoint(); pak.SkillID = (ushort)selectPotentialId; GameNetSystem.Instance.SendInfo(pak); } else { model.DisplayLevelUpError(error); } } private void RefreshItemCountEvent(PackType packType, int arg2, int itemId) { if (packType == PackType.Item && model.skillLevelUpItems.Contains(itemId)) { Display(); } } } }