您不能選擇超過 %s 個話題 話題必須以字母或數字為開頭,可包含連接號 ('-') 且最長為 35 個字
 
 
 

120 行
3.4 KiB

  1. using System;
  2. using System.Diagnostics;
  3. using SUISS.Core;
  4. using SUISSEngine;
  5. using UnityEngine;
  6. namespace CIG
  7. {
  8. public sealed class ChartboostVideoAdsProvider : Singleton<ChartboostVideoAdsProvider>, IAdProvider
  9. {
  10. public ChartboostVideoAdsProvider()
  11. {
  12. GameObject gameObject = new GameObject("ChartBoostVideoAdsProvider");
  13. UnityEngine.Object.DontDestroyOnLoad(gameObject);
  14. gameObject.hideFlags = HideFlags.HideAndDontSave;
  15. this._providerMonoBehaviour = gameObject.AddComponent<AdProviderMonoBehaviour>();
  16. }
  17. //[DebuggerBrowsable(DebuggerBrowsableState.Never)]
  18. public event AdAvailabilityChangedEventHandler AvailabilityChangedEvent;
  19. private void FireAvailabilityChangedEvent()
  20. {
  21. if (this.AvailabilityChangedEvent != null)
  22. {
  23. this.AvailabilityChangedEvent(this);
  24. }
  25. }
  26. public void StartCaching()
  27. {
  28. AdProviderState providerState = this._providerState;
  29. if (providerState != AdProviderState.None)
  30. {
  31. if (providerState == AdProviderState.Initialized)
  32. {
  33. AdState adState = this._adState;
  34. if (adState == AdState.None)
  35. {
  36. this.RequestAd();
  37. }
  38. }
  39. }
  40. else
  41. {
  42. try
  43. {
  44. this._providerState = AdProviderState.Initializing;
  45. this._providerState = AdProviderState.Initialized;
  46. this.StartCaching();
  47. }
  48. catch (Exception ex)
  49. {
  50. this._providerState = AdProviderState.None;
  51. UnityEngine.Debug.LogErrorFormat("[ChartboostVideoAdsProvider] Failed to Initialize Chartboost. Error: {1}\r\nStacktrace:\r\n{2}", new object[]
  52. {
  53. ex.Message,
  54. ex.StackTrace
  55. });
  56. }
  57. }
  58. }
  59. public bool ShowAd(Action<bool, bool> callback)
  60. {
  61. if (this.IsReady)
  62. {
  63. this._adState = AdState.Showing;
  64. this._callback = callback;
  65. SingletonMonobehaviour<CIGGameStats>.Instance.AddScreenViewed("video_chartboost");
  66. this.FireAvailabilityChangedEvent();
  67. return true;
  68. }
  69. return false;
  70. }
  71. public bool IsReady
  72. {
  73. get
  74. {
  75. return true;
  76. }
  77. }
  78. public AdType AdType
  79. {
  80. get
  81. {
  82. return AdType.Video;
  83. }
  84. }
  85. public AdProviderType AdProviderType
  86. {
  87. get
  88. {
  89. return AdProviderType.Chartboost;
  90. }
  91. }
  92. private void RequestAd()
  93. {
  94. this._adState = AdState.Requesting;
  95. }
  96. private const float MaxBackOffSeconds = 120f;
  97. private AdProviderState _providerState;
  98. private AdState _adState;
  99. private Action<bool, bool> _callback;
  100. private float _backOffSeconds;
  101. private AdProviderMonoBehaviour _providerMonoBehaviour;
  102. }
  103. }