﻿using System.Collections.Generic;
using UnityEngine;

namespace JLGames.RocketDriver.Games.PanelManager
{
    [DisallowMultipleComponent]
    public class PanelManagerRegister : MonoBehaviour
    {
        [SerializeField] private bool m_ShowAfterFrame = true;
        [SerializeField] private List<RegisterLayer> m_Layers;
        [SerializeField] private List<RegisterBackground> m_Backgrounds;
        [SerializeField] private List<RegisterAnim> m_Anims;
        [SerializeField] private GameObject m_PanelContainer;
        [SerializeField] private List<RegisterPanelInfo> m_PanelInfos;

        private void Awake()
        {
            Register();
        }

        private void Register()
        {
            var manager = PanelManagerShared.Manager;
            manager.SetShowMoment(m_ShowAfterFrame);
            var register = manager.Register;

            m_Layers.ForEach(container => register.RegisterLayer(container.Name, container.Container, container.Default));
            m_Backgrounds.ForEach(background => register.RegisterBackground(background.Key, background.Origin, background.Script));
            m_Anims.ForEach(anim => register.RegisterAnimator(anim.Key, anim.Animator));

            register.RegisterPanelContainer(m_PanelContainer);
            m_PanelInfos.ForEach(info =>
            {
                var settings = info.GenPanelSettings(register);
                register.RegisterPanelInfo(info.Id, settings, info.MaxDisplayNum, info.ExtendType);
            });
        }
    }
}