using System; using System.Collections.Generic; using UnityEditor; using UnityEngine; public abstract class PanelController<T> : MonoBehaviour, PanelControllerInterface<T> { [Header("Panel Information")] [SerializeField] protected GameObject _panelContent; //[SerializeField] private TaskBox TaskBoxTemplate; [SerializeField] protected GameObject ChildBoxTemplate; [SerializeField] protected List<GameObject> ChildBoxList; /// <summary> /// Fetch reference to static instance of UiManager script /// </summary> private static UIBaseManager<T> _uiManager; protected UIBaseManager<T> UiManager { get { if (_uiManager == null) { return FetchUiManager(); } return null; } } // TODO decide whick method use and where bind object with itself // public abstract void Bind(ManagerInterfac<T>e manager); protected abstract UIBaseManager<T> FetchUiManager(); public virtual void SetUp(List<T> elements) { BuildPanelSlots(); BuildPanelContent(elements); } public virtual void BuildPanelContent(List<T> elements) { if (_panelContent == null) throw new Exception("Panel content is not attaches"); } public abstract void BuildPanelSlots(); public abstract GameObject BuildSlot(int key, GameObject _parent); public abstract void ClearSlots(); }