| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using Utility;
- namespace ProjectBase.UI
- {
- public class UIViewLayerController : MonoBehaviour
- {
- public UIViewLayer viewLayer;
- private const int viewSortOrderStep = 100;
- private int topSortOrder = 0;
- private List<BaseUIView> uiViews = new List<BaseUIView>();
- public void PushUIView(BaseUIView view)
- {
- if (view == null) return;
- if (view.viewLayerController != null && view.viewLayerController == this)
- {
- if (view.ViewSortOrder == topSortOrder)
- {
- return;
- }
- else
- {
- uiViews.Remove(view);
- uiViews.Add(view);
- topSortOrder += viewSortOrderStep;
- view.ViewSortOrder = topSortOrder;
- }
- }
- else
- {
- uiViews.Add(view);
- view.viewLayerController = this;
- view.transform.SetParent(transform);
- view.GetComponent<RectTransform>().Normalize();
- topSortOrder += viewSortOrderStep;
- view.ViewSortOrder = topSortOrder;
- view.OnPush();
- }
- }
- public void PopupUIView(BaseUIView view)
- {
- if (view == null) return;
- if (uiViews.Contains(view))
- {
- uiViews.Remove(view);
- view.ResetUIView();
- view.OnPopup();
- }
- RefreshTopSortOrder();
- }
- public void RefreshTopSortOrder()
- {
- topSortOrder = uiViews.Count == 0 ? 0 : uiViews[uiViews.Count - 1].ViewSortOrder;
- }
- public bool RefreshView(bool alreadycovered)
- {
- if (alreadycovered)
- {
- for(int i = uiViews.Count - 1; i >= 0; i--)
- {
- if (uiViews[i].uiViewConfig.alwaysUpdate)
- {
- uiViews[i].OnShow();
- }
- else
- {
- uiViews[i].OnHide();
- }
- }
- return true;
- }
- else
- {
- bool covered = false;
- for(int i = uiViews.Count - 1; i >= 0; i--)
- {
- if (uiViews[i].uiViewConfig.alwaysUpdate)
- {
- uiViews[i].OnShow();
- }
- else
- {
- if (covered)
- {
- uiViews[i].OnHide();
- }
- else
- {
- uiViews[i].OnShow();
- }
- }
- if (!covered)
- {
- covered = uiViews[i].uiViewConfig.coverScreen;
- }
- }
- return covered;
- }
- }
- }
- }
|