using System.Collections; using System.Collections.Generic; using UnityEngine; public interface ISDUIPresentModel { int ElementCount { get; } Vector2 ElementSize { get; } bool IsAnimating { get; set; } void Push (ISDUIElement element); ISDUIElement Pop (); ISDUIElement ElementAt (int index); } public class SDUIPresentModel : ISDUIPresentModel { public int ElementCount { get { return m_Elements.Count; } } Vector2 m_ElementSize = Vector2.zero; public Vector2 ElementSize { get { return m_ElementSize; } } bool m_IsAnimating; public bool IsAnimating { get { return m_IsAnimating; } set { m_IsAnimating = value; } } List<ISDUIElement> m_Elements = new List<ISDUIElement> (); #region Factory public static SDUIPresentModel Create (Vector2 elementSize) { return new SDUIPresentModel (elementSize); } #endregion private SDUIPresentModel (Vector2 elementSize) { m_ElementSize = elementSize; } public void Push (ISDUIElement element) { m_Elements.Insert (0, element); } public ISDUIElement Pop () { if (m_Elements.Count == 0) return null; var top = ElementAt (0); m_Elements.RemoveAt (0); return top; } public ISDUIElement ElementAt (int index) { return m_Elements.Count > index ? m_Elements[index] : null; } }