Skip to content
Snippets Groups Projects
ListLoader.cs 1.39 KiB
Newer Older
  • Learn to ignore specific revisions
  • using System.Collections.Generic;
    using UnityEngine;
    
    
    Marco Zimmer's avatar
    Marco Zimmer committed
    /// <summary>
    /// Allowes for Pages of <see cref="MenueLoader"/> to contain Lists.
    /// </summary>
    /// <typeparam name="T">Type to list</typeparam>
    
    public abstract class ListLoader<T> : MenueLoader
    {
    
    Marco Zimmer's avatar
    Marco Zimmer committed
        /// <summary> <see cref="GameObject"/> to which new <see cref="EntryHeader"/> entries are being added. </summary>
    
        public GameObject List;
    
    Marco Zimmer's avatar
    Marco Zimmer committed
        /// <summary> Template for new entries to be added to <see cref="List"/> </summary>
    
        protected void OnEnable()
        {
    
            // To measure correct timings, uncomment
            //StartCoroutine(_Init());
    
            //System.Collections.IEnumerator _Init()
            //{
            //    yield return new WaitForFixedUpdate();
    
    MaZiFAU's avatar
    MaZiFAU committed
    
    
    MaZiFAU's avatar
    MaZiFAU committed
                Clear();
                Init();
    
        }
    
        protected void OnDisable()
        {
            Clear();
        }
    
    
    Marco Zimmer's avatar
    Marco Zimmer committed
        /// <summary> Creates listing </summary>
    
        public abstract void Init();
    
    
    Marco Zimmer's avatar
    Marco Zimmer committed
        /// <summary> Removes all list-entries</summary>
    
        protected virtual void Clear()
        {
    
            List.DestroyAllChildren();
    
    Marco Zimmer's avatar
    Marco Zimmer committed
        /// <summary> Creates a Default listing.</summary>
    
        protected abstract void Default();
    
        public virtual void ListButtons(List<T> list)
        {
            if (list.Count == 0)
                Default();
            else
                ListButtonsWrapped(list);
        }
    
        protected abstract void ListButtonsWrapped(List<T> list);