using System;
using Cysharp.Threading.Tasks;
using JNGame.Util;
using Plugins.JNGame.System;

namespace JNGame
{
    public class JNetGame : SingletonScene<JNetGame>
    {
        private SystemBase[] _systems;
        public async UniTask Init(SystemBase[] systems)
        {
            _systems = systems;
            foreach (var system in _systems)
            {
                if (system is not null)
                {
                    await system.OnInit();
                }
            }
        }

        public void Close()
        {
            if (_systems is not null)
            {
                foreach (var system in _systems)
                {
                    system?.OnClose();
                }
            }
        }

        private void OnApplicationQuit()
        {
            Close();
        }

        protected override void OnDispose()
        {
            Close();
        }
    }
}