using UnityEngine;
using UnityEngine.Events;

namespace Obvious.Soap
{
    [AddComponentMenu("Soap/EventListeners/EventListener#TYPE#")]
    public class EventListener#TYPE# : EventListenerGeneric<#TYPE#>
    {
        [SerializeField] private EventResponse[] _eventResponses = null;
        protected override EventResponse<#TYPE#>[] EventResponses => _eventResponses;

        [System.Serializable]
        public class EventResponse : EventResponse<#TYPE#>
        {
            [SerializeField] private ScriptableEvent#TYPE# _scriptableEvent = null;
            public override ScriptableEvent<#TYPE#> ScriptableEvent => _scriptableEvent;

            [SerializeField] private #TYPE#UnityEvent _response = null;
            public override UnityEvent<#TYPE#> Response => _response;
        }

        [System.Serializable]
        public class #TYPE#UnityEvent : UnityEvent<#TYPE#>
        {
            
        }
    }
}