using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class TreasureDemonBehaviour : MonoBehaviour { [SerializeField] Text m_TreasureDescription; [SerializeField] RectTransform m_ContainerFightPower; [SerializeField] Text m_FightPower; [SerializeField] Text m_RecommondPower; [SerializeField] RectTransform m_ContainerLimit; [SerializeField] Text m_Limit; [SerializeField] RectTransform m_ContainerSkill; [SerializeField] Image m_SkillIcon; [SerializeField] Text m_SkillName; [SerializeField] Text m_SkillEffect; [SerializeField] Text m_SkillDescrition; [SerializeField] Button m_GetBtn; [SerializeField] PositionTween m_DescriptionTween; [SerializeField] PositionTween m_SkillTween; TreasureModel m_Model; TreasureModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } Treasure m_Treasure; private void Awake() { m_GetBtn.onClick.AddListener(OnTreasureGet); } private void OnEnable() { model.treasureStateChangeEvent += treasureStateChangeEvent; } private void treasureStateChangeEvent(int _id) { if (_id == m_Treasure.id) { m_Limit.gameObject.SetActive(m_Treasure.state != TreasureState.Collected); m_GetBtn.gameObject.SetActive(m_Treasure.state == TreasureState.Collecting); } } private void OnDisable() { model.treasureStateChangeEvent -= treasureStateChangeEvent; } public void Display(int _id, bool _tween = false) { model.TryGetTreasure(_id, out m_Treasure); if (m_Treasure == null) { return; } if (_tween) { m_DescriptionTween.SetStartState(); m_SkillTween.SetStartState(); m_DescriptionTween.Play(); m_SkillTween.Play(); } else { m_DescriptionTween.SetEndState(); m_SkillTween.SetEndState(); } var config = Config.Instance.Get(_id); m_TreasureDescription.text = config.Story; var demonRecommondCfg = Config.Instance.Get(_id); var myPower = PlayerDatas.Instance.baseData.FightPoint; m_RecommondPower.text = Language.Get("TreasureRecommendAttr", StringUtility.Contact(myPower, "/", demonRecommondCfg.RecommendPower)); m_RecommondPower.color = UIHelper.GetUIColor(myPower >= demonRecommondCfg.RecommendPower ? TextColType.Green : TextColType.Red, true); m_ContainerLimit.gameObject.SetActive(m_Treasure.state == TreasureState.Locked); m_GetBtn.gameObject.SetActive(m_Treasure.state == TreasureState.Collecting); m_RecommondPower.gameObject.SetActive(m_Treasure.state != TreasureState.Collected); m_ContainerFightPower.gameObject.SetActive(m_Treasure.state == TreasureState.Collected); if (m_Treasure.state == TreasureState.Locked) { if (config.PreTreasure == 0) { var levelLimitHint = UIHelper.GetTextColorByItemColor( PlayerDatas.Instance.baseData.LV >= config.ChallengeLevel ? TextColType.Green : TextColType.Red, config.ChallengeLevel.ToString(), true); m_Limit.text = Language.Get("TreasureLevelLimit", levelLimitHint); } else { var levelLimitHint = UIHelper.GetTextColorByItemColor( PlayerDatas.Instance.baseData.LV >= config.ChallengeLevel ? TextColType.Green : TextColType.Red, config.ChallengeLevel.ToString(), true); var preTreasureConfig = Config.Instance.Get(config.PreTreasure); var treasureLimitHint = UIHelper.GetTextColorByItemColor( m_Treasure.state == TreasureState.Collecting ? TextColType.Green : TextColType.Red, preTreasureConfig.Name, true); m_Limit.text = Language.Get("TreasureLvLimit", levelLimitHint, treasureLimitHint); } } var skillConfig = Config.Instance.Get(m_Treasure.unLockSkill); m_ContainerSkill.gameObject.SetActive(skillConfig != null); if (skillConfig != null) { m_SkillIcon.SetSprite(skillConfig.IconName); m_SkillName.text = skillConfig.SkillName; m_SkillDescrition.text = skillConfig.Description; m_SkillEffect.text = skillConfig.HurtType == 1 ? "PVP" : skillConfig.HurtType == 2 ? "PVE" : string.Empty; m_FightPower.text = skillConfig.FightPower.ToString(); } else { m_FightPower.text = string.Empty; } if (m_Treasure.id == 201 && m_Treasure.state == TreasureState.Collecting && !NewBieCenter.Instance.completeGuidesBuf.Contains(88)) { NewBieCenter.Instance.StartNewBieGuide(88); } } private void OnTreasureGet() { var _cfg = Config.Instance.Get(model.selectedTreasure); if (_cfg != null) { model.collectingDemon = model.selectedTreasure; ModelCenter.Instance.GetModel().SingleChallenge(TreasureModel.TREASURE_DATAMAPID, _cfg.LineId); } } } }