using System;
using System.Threading.Tasks;
using UnityEngine;
namespace Unity.Services.Mediation
{
///
/// Mediation API for the Unity Mediation SDK.
///
public static class MediationService
{
internal static IMediationServiceImpl s_Instance;
///
/// Single entry point to all Mediation service features.
///
public static IMediationService Instance
{
get
{
if (s_Instance == null)
{
throw new InvalidOperationException($"MediationService has not been initialized. Please consider calling {nameof(MediationService.Initialize)} before accessing {nameof(Instance)}");
}
return s_Instance;
}
}
///
/// The initialization state of the mediation sdk.
///
public static InitializationState InitializationState => s_Instance?.InitializationState ?? InitializationState.Uninitialized;
internal static Task Initialize(string gameId, string installId)
{
if (s_Instance == null)
{
s_Instance = new MediationServiceImpl();
}
return s_Instance.Initialize(gameId, installId);
}
#if UNITY_EDITOR
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)]
internal static void EditorReset()
{
s_Instance = null;
}
#endif
}
}