seefood_diet / Assets / Scripts / SDUIPresentModel.cs
SDUIPresentModel.cs
Raw
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;
    }
}