//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, May 13, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class ReikiRootQualityPromoteWin : Window { [SerializeField] RawImage m_RawRole; [SerializeField] ScrollRect m_Scroller; [SerializeField] VerticalLayoutGroup m_Layout; [SerializeField] ReikiRootPromoteBehaviour[] m_ReikiRootBehaviours; [SerializeField] Text m_CloseTip; [SerializeField] Button m_Close; DateTime openTime = DateTime.Now; ReikiRootModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Close.AddListener(OnClose); } protected override void OnPreOpen() { m_CloseTip.SetActive(false); openTime = DateTime.Now; } protected override void OnActived() { base.OnActived(); Display(); } protected override void OnAfterOpen() { DisplayPlayer(); PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent; } protected override void OnPreClose() { PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent; UI3DModelExhibition.Instance.StopShow(); } protected override void OnAfterClose() { } protected override void LateUpdate() { base.LateUpdate(); if ((DateTime.Now - openTime).TotalSeconds > 2f && !m_CloseTip.gameObject.activeSelf) { m_CloseTip.SetActive(true); } } #endregion private void PlayerDataRefreshEvent(PlayerDataType dataType) { if (dataType == PlayerDataType.EquipShowSwitch) { DisplayPlayer(); } } void Display() { List displayIds = new List(); foreach (var id in model.lastReikiRootPoints.Keys) { if (model.GetReikiRootQuality(id, model.lastReikiRootPoints[id]) < model.GetReikiRootQuality(id, model.afterReikiRootPoints[id])) { displayIds.Add(id); } } for (int i = 0; i < m_ReikiRootBehaviours.Length; i++) { if (i < displayIds.Count) { m_ReikiRootBehaviours[i].SetActive(true); m_ReikiRootBehaviours[i].Display(displayIds[i], model.lastReikiRootPoints[displayIds[i]] , model.afterReikiRootPoints[displayIds[i]], i == displayIds.Count - 1); } else { m_ReikiRootBehaviours[i].SetActive(false); } } m_Scroller.verticalNormalizedPosition = 1f; m_Scroller.enabled = displayIds.Count > 1; m_Layout.childAlignment = displayIds.Count > 1 ? TextAnchor.UpperLeft : TextAnchor.MiddleLeft; if (displayIds.Count <= 1) { m_Layout.transform.localPosition = m_Layout.transform.localPosition.SetY(0); } } void DisplayPlayer() { m_RawRole.SetActive(true); UI3DModelExhibition.Instance.ShowPlayer(m_RawRole, PlayerDatas.Instance.baseData.Job); } private void OnClose() { if ((DateTime.Now - openTime).TotalSeconds < 2f) { return; } CloseClick(); } } }