diff options
Diffstat (limited to 'Client/Assembly-CSharp/AdPlayer.cs')
-rw-r--r-- | Client/Assembly-CSharp/AdPlayer.cs | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/AdPlayer.cs b/Client/Assembly-CSharp/AdPlayer.cs new file mode 100644 index 0000000..92ab040 --- /dev/null +++ b/Client/Assembly-CSharp/AdPlayer.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections; +using GoogleMobileAds.Api; +using InnerNet; +using UnityEngine; + +public static class AdPlayer +{ + private static InterstitialAd interstitial; + + private const string appId = "unexpected_platform"; + + private const string adUnitId = "unexpected_platform"; + + public static void ShowInterstitial(MonoBehaviour parent, bool playAgain) + { + parent.StartCoroutine(AdPlayer.CoShowAd(playAgain)); + } + + private static IEnumerator CoShowAd(bool playAgain) + { + if (playAgain) + { + yield return DestroyableSingleton<EndGameManager>.Instance.CoJoinGame(); + } + else + { + AmongUsClient.Instance.ExitGame(DisconnectReasons.ExitGame); + } + yield break; + } + + public static void RequestInterstitial() + { + try + { + MobileAds.Initialize("unexpected_platform"); + if (AdPlayer.interstitial == null) + { + AdPlayer.interstitial = new InterstitialAd("unexpected_platform"); + AdRequest adRequest = new AdRequest.Builder().Build(); + if (SaveManager.ShowAdsScreen.HasFlag(ShowAdsState.NonPersonalized)) + { + adRequest.Extras.Add("npa", "1"); + } + AdPlayer.interstitial.OnAdLoaded += AdPlayer.Interstitial_OnAdLoaded; + AdPlayer.interstitial.OnAdFailedToLoad += AdPlayer.Interstitial_OnAdFailedToLoad; + AdPlayer.interstitial.OnAdClosed += AdPlayer.Interstitial_OnAdClosed; + AdPlayer.interstitial.OnAdLeavingApplication += AdPlayer.Interstitial_OnAdLeavingApplication; + AdPlayer.interstitial.LoadAd(adRequest); + } + } + catch + { + try + { + if (AdPlayer.interstitial != null) + { + AdPlayer.interstitial.Destroy(); + } + } + catch + { + } + AdPlayer.interstitial = null; + } + } + + private static void Interstitial_OnAdLoaded(object sender, EventArgs e) + { + } + + private static void Interstitial_OnAdLeavingApplication(object sender, EventArgs e) + { + try + { + if (AdPlayer.interstitial != null) + { + AdPlayer.interstitial.Destroy(); + } + } + finally + { + AdPlayer.interstitial = null; + } + } + + private static void Interstitial_OnAdFailedToLoad(object sender, AdFailedToLoadEventArgs e) + { + try + { + if (AdPlayer.interstitial != null) + { + AdPlayer.interstitial.Destroy(); + Debug.LogError("Couldn't load ad: " + (e.Message ?? "No Message")); + } + } + finally + { + AdPlayer.interstitial = null; + } + } + + private static void Interstitial_OnAdClosed(object sender, EventArgs e) + { + try + { + if (AdPlayer.interstitial != null) + { + AdPlayer.interstitial.Destroy(); + } + } + finally + { + AdPlayer.interstitial = null; + } + } +} |