using System.Collections; using System.Collections.Generic; using UnityEngine; using GoogleMobileAds.Api; using GoogleMobileAds; using GoogleMobileAds.Common; //using UnityEngine.Events; //using UnityEngine.EventSystems; using UnityEngine.SceneManagement; using System; public class AdManager : MonoBehaviour { private InterstitialAd interstitial; private BannerView banner; private RewardedAd rewarded_Start_level; private RewardedAd rewarded_fill_wine; private RewardedAd rewarded_Continue_Level; // private string appID = "ca-app-pub-3112371908624031/9163388317"; string bannerAdId = "ca-app-pub-3940256099942544/6300978111"; string interstitialAdId = "ca-app-pub-3940256099942544/1033173712"; string rewardedAdId = "ca-app-pub-3940256099942544/5224354917"; public static AdManager instance; public bool interstitial_Not_Ready = false; private void Awake() { if(instance == null) { instance = this; }else { Destroy(gameObject); } DontDestroyOnLoad(gameObject); } // Start is called before the first frame update void Start() { MobileAds.Initialize(initStatus => { }); this.reqBannerAd(); this.ReqInterstitialAd(); interstitial_Not_Ready = true; rewarded_fill_wine = CreateAndLoadRewardedAd(Fill_Wine); rewarded_Start_level = CreateAndLoadRewardedAd(Start_Level); rewarded_Continue_Level = CreateAndLoadRewardedAd(Continue_Level); } // Update is called once per frame void Update() { if (!(this.interstitial.IsLoaded())) { interstitial_Not_Ready = true; }else if(this.interstitial.IsLoaded()) { interstitial_Not_Ready = false; } } public RewardedAd CreateAndLoadRewardedAd(EventHandler rewardCallback) { RewardedAd rewardedAd = new RewardedAd(rewardedAdId); rewardedAd.OnAdLoaded += HandleRewardedAdLoaded; //rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad; rewardedAd.OnAdOpening += HandleRewardedAdOpening; rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow; rewardedAd.OnUserEarnedReward += rewardCallback; rewardedAd.OnAdClosed += HandleRewardedAdClosed; // Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // Load the rewarded ad with the request. rewardedAd.LoadAd(request); return rewardedAd; } public void reqBannerAd() { this.banner = new BannerView(bannerAdId, AdSize.Banner, AdPosition.Bottom); // Called when an ad request has successfully loaded. this.banner.OnAdLoaded += this.HandleOnAdLoaded; // Called when an ad request failed to load. // Called when an ad is clicked. this.banner.OnAdOpening += this.HandleOnAdOpening; // Called when the user returned from the app after an ad click. this.banner.OnAdClosed += this.HandleOnAdClosed; // Called when the ad click caused the user to leave the application. AdRequest request = new AdRequest.Builder().Build(); this.banner.LoadAd(request); } public void ReqInterstitialAd() { this.interstitial = new InterstitialAd(interstitialAdId); // Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // Load the interstitial with the request. this.interstitial.LoadAd(request); this.interstitial.OnAdLoaded += HandleOnAdLoaded; this.interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad; this.interstitial.OnAdOpening += HandleOnAdOpening; this.interstitial.OnAdClosed += HandleOnAdClosed; } public event EventHandler OnAdLoaded; public event EventHandler OnAdFailedToLoad; public event EventHandler OnAdOpening; public event EventHandler OnAdStarted; public event EventHandler OnAdClosed; public event EventHandler Handle; public event EventHandler OnAdLeavingApplication; public event EventHandler OnAdCompleted; public void HandleRewardedAdLoaded(object sender, EventArgs args) { Debug.Log("Video Loaded"); } public void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) { Debug.Log("Video not loaded"); } public void HandleRewardedAdOpening(object sender, EventArgs args) { Debug.Log("Video Loading"); } public void HandleRewardedAdFailedToShow(object sender, AdErrorEventArgs args) { Debug.Log("Video Loading failed"); } public void HandleRewardedAdClosed(object sender, EventArgs args) { Debug.Log("Video Loading failed"); rewarded_fill_wine = CreateAndLoadRewardedAd(Fill_Wine); rewarded_Start_level = CreateAndLoadRewardedAd(Start_Level); rewarded_Continue_Level = CreateAndLoadRewardedAd(Continue_Level); } public void Start_Level(object sender, Reward args) { SceneManager.LoadScene(1); } public void Continue_Level(object sender, Reward args) { FindObjectOfType().time = 20f; FindObjectOfType().endMenu.SetActive(false); } public void Fill_Wine(object sender, Reward args) { FindObjectOfType().EmptyWineGlass(); } public void HandleOnRewardAdleavingApp(object sender, EventArgs args) { Debug.Log("when user clicks the video and open a new window"); } public void hideBanner() { this.banner.Hide(); } public void HandleOnAdLoaded(object sender, EventArgs args) { MonoBehaviour.print("HandleAdLoaded event received"); } public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) { SceneManager.LoadScene(0); } public void HandleOnAdOpening(object sender, EventArgs args) { MonoBehaviour.print("HandleAdOpened event received"); } public void HandleOnAdClosed(object sender, EventArgs args) { MonoBehaviour.print("HandleAdClosed event received"); SceneManager.LoadScene(0); this.ReqInterstitialAd(); } public void ShowInterstitial() { if (this.interstitial.IsLoaded()) { this.interstitial.Show(); interstitial_Not_Ready = true; } } public void Show_Rewarded_Fill_Glass() { if(this.rewarded_fill_wine.IsLoaded()) { this.rewarded_fill_wine.Show(); } } public void Show_Rewarded_Start() { if(this.rewarded_Start_level.IsLoaded()) { this.rewarded_Start_level.Show(); } } public void Show_Rewarded_Continue() { if(this.rewarded_Continue_Level.IsLoaded()) { this.rewarded_Continue_Level.Show(); } } }