You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

171 lines
4.9 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using CIG.Extensions;
  5. using SUISS.Core;
  6. using SUISSEngine;
  7. using UnityEngine;
  8. namespace CIG
  9. {
  10. public sealed class AdColonyVideoAdsProvider : Singleton<AdColonyVideoAdsProvider>, IAdProvider
  11. {
  12. public AdColonyVideoAdsProvider()
  13. {
  14. GameObject gameObject = new GameObject("AdColonyVideoAdsProvider");
  15. UnityEngine.Object.DontDestroyOnLoad(gameObject);
  16. gameObject.hideFlags = HideFlags.HideAndDontSave;
  17. this._providerMonoBehaviour = gameObject.AddComponent<AdProviderMonoBehaviour>();
  18. }
  19. //[DebuggerBrowsable(DebuggerBrowsableState.Never)]
  20. public event AdAvailabilityChangedEventHandler AvailabilityChangedEvent;
  21. private void FireAvailabilityChangedEvent()
  22. {
  23. if (this.AvailabilityChangedEvent != null)
  24. {
  25. this.AvailabilityChangedEvent(this);
  26. }
  27. }
  28. public void StartCaching()
  29. {
  30. AdProviderState providerState = this._providerState;
  31. if (providerState != AdProviderState.None)
  32. {
  33. if (providerState == AdProviderState.Initialized)
  34. {
  35. AdState adState = this._adState;
  36. if (adState == AdState.None)
  37. {
  38. if (SingletonMonobehaviour<CIGWebService>.IsAvailable)
  39. {
  40. this.RequestAd();
  41. }
  42. else
  43. {
  44. this.TrySchedulingDelayedCachingRoutine(false);
  45. }
  46. }
  47. }
  48. }
  49. else
  50. {
  51. this._providerState = AdProviderState.Initializing;
  52. }
  53. }
  54. public bool ShowAd(Action<bool, bool> callback)
  55. {
  56. if (this.IsReady)
  57. {
  58. this._callback = callback;
  59. this._adState = AdState.Showing;
  60. SingletonMonobehaviour<CIGGameStats>.Instance.AddScreenViewed("video_adcolony");
  61. this.FireAvailabilityChangedEvent();
  62. return true;
  63. }
  64. return false;
  65. }
  66. public bool IsReady
  67. {
  68. get
  69. {
  70. return true;
  71. }
  72. }
  73. public AdType AdType
  74. {
  75. get
  76. {
  77. return AdType.Video;
  78. }
  79. }
  80. public AdProviderType AdProviderType
  81. {
  82. get
  83. {
  84. return AdProviderType.AdColony;
  85. }
  86. }
  87. private void RequestAd()
  88. {
  89. if (this._adState == AdState.None)
  90. {
  91. this._adState = AdState.Requesting;
  92. }
  93. }
  94. private void TrySchedulingDelayedCachingRoutine(bool applyBackOff)
  95. {
  96. if (this._providerMonoBehaviour.IsInvoking(new Action(this.StartCaching)))
  97. {
  98. return;
  99. }
  100. float num = 5f;
  101. if (applyBackOff)
  102. {
  103. this._backOffSeconds = Mathf.Min(this._backOffSeconds + 5f, 120f);
  104. num += this._backOffSeconds;
  105. }
  106. this._providerMonoBehaviour.InvokeOnMainThread(new Action(this.StartCaching), num);
  107. UnityEngine.Debug.LogWarningFormat("[AdColonyVideoAdsProvider] Ad Failed To Load. Retrying in {0} seconds", new object[]
  108. {
  109. num
  110. });
  111. }
  112. private void OnInterstitialRequestFailed(string zoneId)
  113. {
  114. this._adState = AdState.None;
  115. this.FireAvailabilityChangedEvent();
  116. this.TrySchedulingDelayedCachingRoutine(true);
  117. }
  118. private string AppId
  119. {
  120. get
  121. {
  122. return "appd8e9f08158fe4a8699";
  123. }
  124. }
  125. private string ZoneId
  126. {
  127. get
  128. {
  129. return "vz029f1a6cf9c6441da3";
  130. }
  131. }
  132. private const string PlaystoreAppId = "appd8e9f08158fe4a8699";
  133. private const string PlaystoreZoneId = "vz029f1a6cf9c6441da3";
  134. private const string iOSAppId = "app59433fd945004fe589";
  135. private const string iOSZoneId = "vz47742197eb404046af";
  136. private const string AmazonAppId = "app8bd11f9f7d3b4770ba";
  137. private const string AmazonZoneId = "vzf1bbc5c82e50491b89";
  138. private const float MaxBackOffSeconds = 120f;
  139. private AdProviderState _providerState;
  140. private AdState _adState;
  141. private Action<bool, bool> _callback;
  142. private float _backOffSeconds;
  143. private AdProviderMonoBehaviour _providerMonoBehaviour;
  144. }
  145. }