﻿using deVoid.Utils;
using UnityEngine;

namespace JasonStorey
{
    public class LogPanel : UiPanel
    {
        [Header("Dependencies")] 
        [SerializeField]
        LogMessageEntry _template;
        
        void OnEnable() => Signals.Get<ActionMessageSignal>().AddListener(OnMessage);
        
        
        void OnMessage(string message)
        {
            if (!IsShowing)
            {
                Show();
            }
            var newEntry = GameObject.Instantiate(_template, transform);
            newEntry.Initialize(this,message);
        }

        public void MessageClosed(LogMessageEntry entry)
        {
            if(transform.childCount <= 1) Hide();
        }

        void OnDisable() => Signals.Get<ActionMessageSignal>().RemoveListener(OnMessage);
    }
}