87 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
	
using System;
 | 
						|
using System.Collections;
 | 
						|
using System.Runtime.InteropServices;
 | 
						|
using UnityEngine;
 | 
						|
namespace AmazonAds {
 | 
						|
    public abstract class IAdRequest : IDisposable {
 | 
						|
        protected int refreshTime = 60;
 | 
						|
        protected string autoRefreshID = "0"; //FetchManageerUniqueID
 | 
						|
        protected bool isAutoRefreshAdMob = false;
 | 
						|
        protected bool isAutoRefreshMoPub = false;
 | 
						|
        protected bool requestHasBeenUsed = false;
 | 
						|
        protected IFetchManager fetchManager;
 | 
						|
 | 
						|
        public abstract void PutCustomTarget (string key, string value);
 | 
						|
        public abstract void SetSizes (IAdSize sizes);
 | 
						|
        public abstract void SetSizes (IInterstitialAdSize sizes);
 | 
						|
        public abstract void SetSizes (IVideo sizes);
 | 
						|
        public abstract void SetSlotGroup (string slotGroupName);
 | 
						|
        public abstract void LoadAd (Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success);
 | 
						|
        public abstract void LoadAd (Amazon.OnFailureWithErrorDelegate failure, Amazon.OnSuccessDelegate success);
 | 
						|
        public abstract void LoadSmartBanner (Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success);
 | 
						|
        public abstract void LoadSmartBanner (Amazon.OnFailureWithErrorDelegate failure, Amazon.OnSuccessDelegate success);
 | 
						|
        public abstract void SetAutoRefreshAdMob (bool flag, bool isSmartBanner = false);
 | 
						|
        public abstract void SetAutoRefreshMoPub (bool flag);
 | 
						|
        public abstract void SetAutoRefreshMoPub (bool flag, int refreshTime);
 | 
						|
        public abstract void SetAutoRefresh();
 | 
						|
        public abstract void SetAutoRefresh(int secs);
 | 
						|
        public abstract void ResumeAutoRefresh();
 | 
						|
        public abstract void StopAutoRefresh();
 | 
						|
        public abstract void PauseAutoRefresh();
 | 
						|
        public bool IsAutoRefreshAdMob (){ return isAutoRefreshAdMob;}
 | 
						|
        public bool IsAutoRefreshMoPub (){ return isAutoRefreshMoPub;}
 | 
						|
        public string AutoRefreshID (){return autoRefreshID.ToString ();}
 | 
						|
        public abstract void DisposeAd ();
 | 
						|
        public abstract void CreateFetchManager (bool isSmartBanner = false);
 | 
						|
        public abstract void DestroyFetchManager ();
 | 
						|
        public abstract void StopFetchManager();
 | 
						|
        public abstract void StartFetchManager();
 | 
						|
        public abstract void SetRefreshFlag(bool flag);
 | 
						|
 | 
						|
        public void Dispose() {
 | 
						|
        }
 | 
						|
 | 
						|
        protected static class Schedule {
 | 
						|
            private class Runner : MonoBehaviour { }
 | 
						|
            private static Runner _backer;
 | 
						|
            private static Runner Backer {
 | 
						|
                get {
 | 
						|
                    if (_backer == null) {
 | 
						|
                        var go = new GameObject ("Scheduler");
 | 
						|
                        GameObject.DontDestroyOnLoad (go);
 | 
						|
                        _backer = go.AddComponent<Runner> ();
 | 
						|
                    }
 | 
						|
                    return _backer;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            private static float expiration = 5f;
 | 
						|
 | 
						|
            public static void WaitForAdResponce (IFetchManager fetchManager, Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success) {
 | 
						|
                Schedule.Backer.StartCoroutine (WaitForAdResponceCoroutine (fetchManager, failure, success));
 | 
						|
            }
 | 
						|
 | 
						|
            static IEnumerator WaitForAdResponceCoroutine (IFetchManager fetchManager, Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success) {
 | 
						|
                float timerExp = 0;
 | 
						|
                bool flagResp = true;
 | 
						|
                while (fetchManager.isEmpty()) {
 | 
						|
                    timerExp += Time.deltaTime;
 | 
						|
                    if (timerExp > expiration) {
 | 
						|
                        flagResp = false;
 | 
						|
                        failure ("no ads from fetchManager");
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                    yield return null;
 | 
						|
                }
 | 
						|
 | 
						|
                if (flagResp) {
 | 
						|
                    success( fetchManager.peek () );
 | 
						|
                }
 | 
						|
                Schedule.Clear ();
 | 
						|
            }
 | 
						|
 | 
						|
            public static void Clear () {
 | 
						|
                GameObject.Destroy (Backer);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |