﻿using System.Collections.Generic;
using UnityEngine;

namespace JLGames.RocketDriver.Actions.Wait
{
    internal class WaitCalls
    {
        internal readonly List<WaitCall> List = new List<WaitCall>();
        internal Coroutine Coroutine;

        internal int Count => List.Count;

        internal void AddWaitCall(WaitCall call)
        {
            if (null == call) return;
            List.Add(call);
        }

        internal void Sort()
        {
            List.Sort((o1, o2) => o1.Weight.CompareTo(o2.Weight));
        }

        internal void Invoke()
        {
            if (List.Count == 0) return;

            for (var index = 0; index < List.Count; index++)
            {
                List[index]?.Invoke();
            }

            List.Clear();
            Coroutine = null;
        }
    }
}