using System; using System.Collections.Generic; using UnityEngine.Advertisements.Events; using UnityEngine.Advertisements.Utilities; namespace UnityEngine.Advertisements.Platform { internal class Platform : IPlatform { public IBanner Banner { get; } public IUnityLifecycleManager UnityLifecycleManager { get; } public INativePlatform NativePlatform { get; } public bool IsInitialized => NativePlatform?.IsInitialized() ?? false; public bool IsShowing { get; private set; } public string Version => NativePlatform?.GetVersion() ?? "UnknownVersion"; public bool DebugMode { get => NativePlatform?.GetDebugMode() ?? false; set => NativePlatform?.SetDebugMode(value); } public Platform(INativePlatform nativePlatform, IBanner banner, IUnityLifecycleManager unityLifecycleManager) { NativePlatform = nativePlatform; Banner = banner; UnityLifecycleManager = unityLifecycleManager; NativePlatform.SetupPlatform(this); } public void Initialize(string gameId, bool testMode, IUnityAdsInitializationListener initializationListener) { if (!IsInitialized) { var framework = new MetaData("framework"); framework.Set("name", "Unity"); framework.Set("version", Application.unityVersion); SetMetaData(framework); var adapter = new MetaData("adapter"); #if ASSET_STORE adapter.Set("name", "AssetStore"); #else adapter.Set("name", "Packman"); #endif adapter.Set("version", Version); SetMetaData(adapter); NativePlatform.Initialize(gameId, testMode, initializationListener); } } public void Load(string placementId) { Load(placementId, null); } public void Load(string placementId, IUnityAdsLoadListener loadListener) { if (string.IsNullOrEmpty(placementId)) { Debug.LogError("placementId cannot be nil or empty"); return; } NativePlatform.Load(placementId, loadListener); } public void Show(string placementId, ShowOptions showOptions, IUnityAdsShowListener showListener) { if (IsShowing) return; if (showOptions != null) { if (!string.IsNullOrEmpty(showOptions.gamerSid)) { var player = new MetaData("player"); player.Set("server_id", showOptions.gamerSid); SetMetaData(player); } } NativePlatform.Show(string.IsNullOrEmpty(placementId) ? null : placementId, showListener); } public void SetMetaData(MetaData metaData) { NativePlatform.SetMetaData(metaData); } public void OnUnityAdsShowFailure(string placementId, UnityAdsShowError error, string message) { IsShowing = false; } public void OnUnityAdsShowStart(string placementId) { IsShowing = true; } public void OnUnityAdsShowClick(string placementId) { } public void OnUnityAdsShowComplete(string placementId, UnityAdsShowCompletionState completionState) { IsShowing = false; } } }