using UnityEngine;

namespace Arkadium.Interop
{
    /// <summary>
    /// Factory for creating the appropriate WebGL interop provider
    /// </summary>
    public static class WebGLInteropFactory
    {
        private static IWebGLInteropProvider _provider;

        /// <summary>
        /// Gets the appropriate interop provider based on the current environment
        /// </summary>
        public static IWebGLInteropProvider GetProvider()
        {
            if (_provider == null)
            {
#if UNITY_EDITOR
                _provider = new MockWebGLInteropProvider();
#else
                _provider = new WebGLInteropProvider();
#endif
            }

            return _provider;
        }

        /// <summary>
        /// Sets a custom provider (useful for testing)
        /// </summary>
        public static void SetProvider(IWebGLInteropProvider provider)
        {
            _provider = provider;
        }

        /// <summary>
        /// Resets the provider to use the default based on environment
        /// </summary>
        public static void ResetProvider()
        {
            _provider = null;
        }
    }
}