| 
									
										
										
										
											2023-12-26 03:47:44 +00:00
										 |  |  |  | using System; | 
					
						
							|  |  |  |  | using System.Collections; | 
					
						
							|  |  |  |  | using System.Runtime.InteropServices; | 
					
						
							|  |  |  |  | using UnityEngine; | 
					
						
							|  |  |  |  | namespace AmazonAds { | 
					
						
							| 
									
										
										
										
											2024-06-24 01:28:57 +00:00
										 |  |  |  |     public abstract class IAdRequest : IDisposable { | 
					
						
							| 
									
										
										
										
											2023-12-26 03:47:44 +00:00
										 |  |  |  |         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); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-24 01:28:57 +00:00
										 |  |  |  |         public void Dispose() { | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-26 03:47:44 +00:00
										 |  |  |  |         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); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |