﻿using AsmodeeDigital.Common.Plugin.Domain.Data;
using AsmodeeDigital.Common.Plugin.Manager.Event;
using AsmodeeDigital.Common.Plugin.Manager.Scene;
using AsmodeeDigital.Common.Plugin.Network;
using AsmodeeDigital.CrossPromo.Plugin.Domain;
using System;
using UnityEngine;

namespace AsmodeeDigital.CrossPromo.Plugin.Manager
{
    /// <summary>
    /// Manager of the Cross Promo plugin
    /// </summary>
    public class CrossPromoManager : MonoBehaviour
    {
        public event Action<CrossPromoAnalyticsItem> CrossPromoAnalyticsEvent;

        /// <summary>
        /// Singleton
        /// </summary>
        public static CrossPromoManager Instance;

        /// <summary>
        /// Instance of the REST API component
        /// </summary>
        public RestAPI RestAPI;

        /// <summary>
        /// Parameters of the connection with DoW server
        /// </summary>
        public DoWNetworkParameters NetworkParameters;
        public CrossPromoParameters CrossPromoParameters;

        private void OnEnable()
        {
            if (Instance == null)
            {
                Instance = this;

                RestAPI = new RestAPI(NetworkParameters, CrossPromoParameters);

                //--- Initialize all none MonoBehaviours managers
                SceneManager.Init(new SceneManagerUnity());
                //---
            }
        }

        private void OnApplicationQuit()
        {
        }

        public void RaiseCrossPromoEvent(CrossPromoAnalyticsItem crossPromoAnalyticsItem)
        {
            if(CrossPromoAnalyticsEvent != null)
            {
                EventManager.Instance.QueueEvent<CrossPromoAnalyticsItem>(CrossPromoAnalyticsEvent, crossPromoAnalyticsItem);
            }
        }
    }
}
