//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, May 07, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class TreasureStageTipWin : Window { [SerializeField] RectTransform m_ContainerDisplay; [SerializeField] RectTransform m_ContainerSkill; [SerializeField] RectTransform m_ContainerFuncSoul; [SerializeField] Image m_SkillIcon; [SerializeField] Text m_SkillName; [SerializeField] Text m_SkillCD; [SerializeField] Text m_SkillDescription; [SerializeField] Image m_Icon; [SerializeField] Text m_StageName; [SerializeField] Text m_Description; TreasureModel m_Model; TreasureModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } Treasure m_Treasure; TreasureStage m_TreasureStage; private float ratio = 1.0f; static Vector2 targetPosition = Vector2.zero; public static int selectStage = 0; #region Built-in protected override void BindController() { var _canva = WindowCenter.Instance.uiRoot.modalCanvas.GetComponentInChildren(); if (_canva != null) { ratio = _canva.scaleFactor; } } protected override void AddListeners() { } protected override void OnPreOpen() { Display(); } protected override void OnActived() { base.OnActived(); m_ContainerDisplay.localPosition = targetPosition; CheckPlayerDetailPosition(m_ContainerDisplay.sizeDelta.y / 2); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } #endregion void Display() { model.TryGetTreasure(model.selectedTreasure, out m_Treasure); m_TreasureStage = m_Treasure.treasureStages.Find((x) => { return x.stage == selectStage; }); if (m_TreasureStage == null) { return; } m_ContainerSkill.gameObject.SetActive(false); m_ContainerFuncSoul.gameObject.SetActive(false); switch (m_TreasureStage.unlockType) { case TreasureStageUnlock.Skill: m_ContainerSkill.gameObject.SetActive(true); var _job = PlayerDatas.Instance.baseData.Job; var _skillId = m_TreasureStage.skillDict.ContainsKey(_job) ? m_TreasureStage.skillDict[_job] : 0; if (_skillId > 0) { var skillConfig = SkillConfig.Get(_skillId); m_SkillIcon.SetSprite(skillConfig.IconName); m_SkillName.text = skillConfig.SkillName; m_SkillCD.text = skillConfig.CoolDownTime == 0 ? string.Empty : Language.Get("L1065", skillConfig.CoolDownTime / 1000); m_SkillDescription.text = skillConfig.Description; } break; case TreasureStageUnlock.Func: m_ContainerFuncSoul.gameObject.SetActive(true); var funcConfig = FuncOpenLVConfig.Get(m_TreasureStage.func); m_Icon.SetSprite(funcConfig.Icon); m_StageName.text = funcConfig.Remark; var funcPreview = FunctionForecastConfig.Get(m_TreasureStage.func); if (funcPreview != null) { m_Description.text = UIHelper.ReplaceNewLine(funcPreview.DetailDescribe); } else { m_Description.text = string.Empty; } break; case TreasureStageUnlock.Treasure: m_ContainerFuncSoul.gameObject.SetActive(true); var treasureConfig = TreasureConfig.Get(m_TreasureStage.treasure); m_Icon.SetSprite(treasureConfig.Icon); m_StageName.text = treasureConfig.Name; m_Description.text = UIHelper.ReplaceNewLine(treasureConfig.Verse.Length > 0 ? treasureConfig.Verse[0] : string.Empty); break; case TreasureStageUnlock.TreasureSoul: m_ContainerFuncSoul.gameObject.SetActive(true); var treasureSoulConfig = TreasurePrivilegeConfig.Get(m_TreasureStage.treasureSoul); m_Icon.SetSprite(treasureSoulConfig.Icon); m_StageName.text = treasureSoulConfig.Name; m_Description.text = UIHelper.ReplaceNewLine(treasureSoulConfig.Description); break; } } private void CheckPlayerDetailPosition(float _height) { _height = _height * ratio; Vector3 pos = m_ContainerDisplay.localPosition; if (Mathf.Abs(pos.y - _height) > Screen.height / 2) { pos.y = (_height - Screen.height / 2) / ratio; } else if (Mathf.Abs(pos.y + _height) > Screen.height / 2) { pos.y = (Screen.height / 2 - _height) / ratio; } m_ContainerDisplay.localPosition = pos; } public static void SetTargetPosition(RectTransform _target) { var _worldpos = _target.TransformPoint(Vector2.zero + Vector2.right * _target.sizeDelta.x / 2); var _localpos = WindowCenter.Instance.uiRoot.modalCanvas.InverseTransformPoint(_worldpos); targetPosition = _localpos; } } }