using System;
using System.Collections;
using UnityEngine;

namespace MJGameSDK
{
    /// <summary>
    /// SDK 生命周期 Runner，负责 Steam 回调轮询。
    /// </summary>
    public class MJGameSDKRunner : MonoBehaviour
    {
        private static MJGameSDKRunner _instance;
        public static MJGameSDKRunner Instance => _instance;

        private Action _steamCallback;

        private void Awake()
        {
            if (_instance != null && _instance != this)
            {
                Destroy(gameObject);
                return;
            }
            _instance = this;
            DontDestroyOnLoad(gameObject);
        }

        public void SetSteamCallback(Action callback)
        {
            _steamCallback = callback;
        }

        private void Update()
        {
            _steamCallback?.Invoke();
        }

        public Coroutine RunCoroutine(IEnumerator routine)
        {
            return StartCoroutine(routine);
        }
    }
}
