summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/GoogleMobileAds
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assembly-CSharp/GoogleMobileAds')
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/AdErrorEventArgs.cs9
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/AdFailedToLoadEventArgs.cs9
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/AdLoader.cs93
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/AdPosition.cs15
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/AdRequest.cs113
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/AdSize.cs88
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/AdapterState.cs10
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/AdapterStatus.cs20
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/BannerView.cs121
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/CustomNativeEventArgs.cs9
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/CustomNativeTemplateAd.cs52
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/Gender.cs11
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/InterstitialAd.cs88
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/Mediation/MediationExtras.cs19
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/MobileAds.cs37
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/NativeAdType.cs9
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/Reward.cs11
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/RewardBasedVideoAd.cs125
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/RewardedAd.cs97
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Api/ServerSideVerificationOptions.cs41
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Common/DummyClient.cs185
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Common/IAdLoaderClient.cs14
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Common/IBannerClient.cs40
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Common/ICustomNativeTemplateClient.cs20
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Common/IInterstitialClient.cs30
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Common/IMobileAdsClient.cs15
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Common/IRewardBasedVideoAdClient.cs36
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Common/IRewardedAdClient.cs32
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Common/MobileAdsEventExecutor.cs72
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Common/RewardedAdDummyClient.cs59
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/Common/Utils.cs27
-rw-r--r--Client/Assembly-CSharp/GoogleMobileAds/GoogleMobileAdsClientFactory.cs39
32 files changed, 1546 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/AdErrorEventArgs.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdErrorEventArgs.cs
new file mode 100644
index 0000000..ab105d0
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdErrorEventArgs.cs
@@ -0,0 +1,9 @@
+using System;
+
+namespace GoogleMobileAds.Api
+{
+ public class AdErrorEventArgs : EventArgs
+ {
+ public string Message { get; set; }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/AdFailedToLoadEventArgs.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdFailedToLoadEventArgs.cs
new file mode 100644
index 0000000..42389fc
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdFailedToLoadEventArgs.cs
@@ -0,0 +1,9 @@
+using System;
+
+namespace GoogleMobileAds.Api
+{
+ public class AdFailedToLoadEventArgs : EventArgs
+ {
+ public string Message { get; set; }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/AdLoader.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdLoader.cs
new file mode 100644
index 0000000..3116a90
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdLoader.cs
@@ -0,0 +1,93 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using GoogleMobileAds.Common;
+
+namespace GoogleMobileAds.Api
+{
+ public class AdLoader
+ {
+ public Dictionary<string, Action<CustomNativeTemplateAd, string>> CustomNativeTemplateClickHandlers { get; private set; }
+
+ public string AdUnitId { get; private set; }
+
+ public HashSet<NativeAdType> AdTypes { get; private set; }
+
+ public HashSet<string> TemplateIds { get; private set; }
+
+ public event EventHandler<AdFailedToLoadEventArgs> OnAdFailedToLoad;
+
+ public event EventHandler<CustomNativeEventArgs> OnCustomNativeTemplateAdLoaded;
+
+ private IAdLoaderClient adLoaderClient;
+
+ public class Builder
+ {
+ internal string AdUnitId { get; private set; }
+
+ internal HashSet<NativeAdType> AdTypes { get; private set; }
+
+ internal HashSet<string> TemplateIds { get; private set; }
+
+ internal Dictionary<string, Action<CustomNativeTemplateAd, string>> CustomNativeTemplateClickHandlers { get; private set; }
+
+ public Builder(string adUnitId)
+ {
+ this.AdUnitId = adUnitId;
+ this.AdTypes = new HashSet<NativeAdType>();
+ this.TemplateIds = new HashSet<string>();
+ this.CustomNativeTemplateClickHandlers = new Dictionary<string, Action<CustomNativeTemplateAd, string>>();
+ }
+
+ public AdLoader.Builder ForCustomNativeAd(string templateId)
+ {
+ this.TemplateIds.Add(templateId);
+ this.AdTypes.Add(NativeAdType.CustomTemplate);
+ return this;
+ }
+
+ public AdLoader.Builder ForCustomNativeAd(string templateId, Action<CustomNativeTemplateAd, string> callback)
+ {
+ this.TemplateIds.Add(templateId);
+ this.CustomNativeTemplateClickHandlers[templateId] = callback;
+ this.AdTypes.Add(NativeAdType.CustomTemplate);
+ return this;
+ }
+
+ public AdLoader Build()
+ {
+ return new AdLoader(this);
+ }
+ }
+
+ private AdLoader(AdLoader.Builder builder)
+ {
+ this.AdUnitId = string.Copy(builder.AdUnitId);
+ this.CustomNativeTemplateClickHandlers = new Dictionary<string, Action<CustomNativeTemplateAd, string>>(builder.CustomNativeTemplateClickHandlers);
+ this.TemplateIds = new HashSet<string>(builder.TemplateIds);
+ this.AdTypes = new HashSet<NativeAdType>(builder.AdTypes);
+ MethodInfo method = Type.GetType("GoogleMobileAds.GoogleMobileAdsClientFactory,Assembly-CSharp").GetMethod("BuildAdLoaderClient", BindingFlags.Static | BindingFlags.Public);
+ this.adLoaderClient = (IAdLoaderClient)method.Invoke(null, new object[]
+ {
+ this
+ });
+ Utils.CheckInitialization();
+ this.adLoaderClient.OnCustomNativeTemplateAdLoaded += delegate(object sender, CustomNativeEventArgs args)
+ {
+ this.OnCustomNativeTemplateAdLoaded(this, args);
+ };
+ this.adLoaderClient.OnAdFailedToLoad += delegate(object sender, AdFailedToLoadEventArgs args)
+ {
+ if (this.OnAdFailedToLoad != null)
+ {
+ this.OnAdFailedToLoad(this, args);
+ }
+ };
+ }
+
+ public void LoadAd(AdRequest request)
+ {
+ this.adLoaderClient.LoadAd(request);
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/AdPosition.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdPosition.cs
new file mode 100644
index 0000000..6bc2a49
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdPosition.cs
@@ -0,0 +1,15 @@
+using System;
+
+namespace GoogleMobileAds.Api
+{
+ public enum AdPosition
+ {
+ Top,
+ Bottom,
+ TopLeft,
+ TopRight,
+ BottomLeft,
+ BottomRight,
+ Center
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/AdRequest.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdRequest.cs
new file mode 100644
index 0000000..a303ea9
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdRequest.cs
@@ -0,0 +1,113 @@
+using System;
+using System.Collections.Generic;
+using GoogleMobileAds.Api.Mediation;
+
+namespace GoogleMobileAds.Api
+{
+ public class AdRequest
+ {
+ public List<string> TestDevices { get; private set; }
+
+ public HashSet<string> Keywords { get; private set; }
+
+ public DateTime? Birthday { get; private set; }
+
+ public Gender? Gender { get; private set; }
+
+ public bool? TagForChildDirectedTreatment { get; private set; }
+
+ public Dictionary<string, string> Extras { get; private set; }
+
+ public List<MediationExtras> MediationExtras { get; private set; }
+
+ public const string Version = "3.17.0";
+
+ public const string TestDeviceSimulator = "SIMULATOR";
+
+ public class Builder
+ {
+ internal List<string> TestDevices { get; private set; }
+
+ internal HashSet<string> Keywords { get; private set; }
+
+ internal DateTime? Birthday { get; private set; }
+
+ internal Gender? Gender { get; private set; }
+
+ internal bool? ChildDirectedTreatmentTag { get; private set; }
+
+ internal Dictionary<string, string> Extras { get; private set; }
+
+ internal List<MediationExtras> MediationExtras { get; private set; }
+
+ public Builder()
+ {
+ this.TestDevices = new List<string>();
+ this.Keywords = new HashSet<string>();
+ this.Birthday = null;
+ this.Gender = null;
+ this.ChildDirectedTreatmentTag = null;
+ this.Extras = new Dictionary<string, string>();
+ this.MediationExtras = new List<MediationExtras>();
+ }
+
+ public AdRequest.Builder AddKeyword(string keyword)
+ {
+ this.Keywords.Add(keyword);
+ return this;
+ }
+
+ public AdRequest.Builder AddTestDevice(string deviceId)
+ {
+ this.TestDevices.Add(deviceId);
+ return this;
+ }
+
+ public AdRequest Build()
+ {
+ return new AdRequest(this);
+ }
+
+ public AdRequest.Builder SetBirthday(DateTime birthday)
+ {
+ this.Birthday = new DateTime?(birthday);
+ return this;
+ }
+
+ public AdRequest.Builder SetGender(Gender gender)
+ {
+ this.Gender = new Gender?(gender);
+ return this;
+ }
+
+ public AdRequest.Builder AddMediationExtras(MediationExtras extras)
+ {
+ this.MediationExtras.Add(extras);
+ return this;
+ }
+
+ public AdRequest.Builder TagForChildDirectedTreatment(bool tagForChildDirectedTreatment)
+ {
+ this.ChildDirectedTreatmentTag = new bool?(tagForChildDirectedTreatment);
+ return this;
+ }
+
+ public AdRequest.Builder AddExtra(string key, string value)
+ {
+ this.Extras.Add(key, value);
+ return this;
+ }
+ }
+
+ private AdRequest(AdRequest.Builder builder)
+ {
+ this.TestDevices = new List<string>(builder.TestDevices);
+ this.Keywords = new HashSet<string>(builder.Keywords);
+ this.Birthday = builder.Birthday;
+ this.Gender = builder.Gender;
+ this.TagForChildDirectedTreatment = builder.ChildDirectedTreatmentTag;
+ this.Extras = new Dictionary<string, string>(builder.Extras);
+ this.MediationExtras = builder.MediationExtras;
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/AdSize.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdSize.cs
new file mode 100644
index 0000000..ec5f3f1
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdSize.cs
@@ -0,0 +1,88 @@
+using System;
+
+namespace GoogleMobileAds.Api
+{
+ public class AdSize
+ {
+ public int Width
+ {
+ get
+ {
+ return this.width;
+ }
+ }
+
+ public int Height
+ {
+ get
+ {
+ return this.height;
+ }
+ }
+
+ public bool IsSmartBanner
+ {
+ get
+ {
+ return this.isSmartBanner;
+ }
+ }
+
+ private bool isSmartBanner;
+
+ private int width;
+
+ private int height;
+
+ public static readonly AdSize Banner = new AdSize(320, 50);
+
+ public static readonly AdSize MediumRectangle = new AdSize(300, 250);
+
+ public static readonly AdSize IABBanner = new AdSize(468, 60);
+
+ public static readonly AdSize Leaderboard = new AdSize(728, 90);
+
+ public static readonly AdSize SmartBanner = new AdSize(true);
+
+ public static readonly int FullWidth = -1;
+
+ public AdSize(int width, int height)
+ {
+ this.isSmartBanner = false;
+ this.width = width;
+ this.height = height;
+ }
+
+ private AdSize(bool isSmartBanner) : this(0, 0)
+ {
+ this.isSmartBanner = isSmartBanner;
+ }
+
+ public override bool Equals(object obj)
+ {
+ if (obj == null || base.GetType() != obj.GetType())
+ {
+ return false;
+ }
+ AdSize adSize = (AdSize)obj;
+ return this.width == adSize.width && this.height == adSize.height && this.isSmartBanner == adSize.isSmartBanner;
+ }
+
+ public static bool operator ==(AdSize a, AdSize b)
+ {
+ return a.Equals(b);
+ }
+
+ public static bool operator !=(AdSize a, AdSize b)
+ {
+ return !a.Equals(b);
+ }
+
+ public override int GetHashCode()
+ {
+ int num = 71;
+ int num2 = 11;
+ return ((num * num2 ^ this.width.GetHashCode()) * num2 ^ this.height.GetHashCode()) * num2 ^ this.isSmartBanner.GetHashCode();
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/AdapterState.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdapterState.cs
new file mode 100644
index 0000000..471e180
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdapterState.cs
@@ -0,0 +1,10 @@
+using System;
+
+namespace GoogleMobileAds.Api
+{
+ public enum AdapterState
+ {
+ NotReady,
+ Ready
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/AdapterStatus.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdapterStatus.cs
new file mode 100644
index 0000000..31451e3
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/AdapterStatus.cs
@@ -0,0 +1,20 @@
+using System;
+
+namespace GoogleMobileAds.Api
+{
+ public class AdapterStatus
+ {
+ public AdapterState InitializationState { get; private set; }
+
+ public string Description { get; private set; }
+
+ public int Latency { get; private set; }
+
+ internal AdapterStatus(AdapterState state, string description, int latency)
+ {
+ this.InitializationState = state;
+ this.Description = description;
+ this.Latency = latency;
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/BannerView.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/BannerView.cs
new file mode 100644
index 0000000..7ad2724
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/BannerView.cs
@@ -0,0 +1,121 @@
+using System;
+using System.Reflection;
+using GoogleMobileAds.Common;
+
+namespace GoogleMobileAds.Api
+{
+ public class BannerView
+ {
+ public event EventHandler<EventArgs> OnAdLoaded;
+
+ public event EventHandler<AdFailedToLoadEventArgs> OnAdFailedToLoad;
+
+ public event EventHandler<EventArgs> OnAdOpening;
+
+ public event EventHandler<EventArgs> OnAdClosed;
+
+ public event EventHandler<EventArgs> OnAdLeavingApplication;
+
+ private IBannerClient client;
+
+ public BannerView(string adUnitId, AdSize adSize, AdPosition position)
+ {
+ MethodInfo method = Type.GetType("GoogleMobileAds.GoogleMobileAdsClientFactory,Assembly-CSharp").GetMethod("BuildBannerClient", BindingFlags.Static | BindingFlags.Public);
+ this.client = (IBannerClient)method.Invoke(null, null);
+ this.client.CreateBannerView(adUnitId, adSize, position);
+ this.ConfigureBannerEvents();
+ }
+
+ public BannerView(string adUnitId, AdSize adSize, int x, int y)
+ {
+ MethodInfo method = Type.GetType("GoogleMobileAds.GoogleMobileAdsClientFactory,Assembly-CSharp").GetMethod("BuildBannerClient", BindingFlags.Static | BindingFlags.Public);
+ this.client = (IBannerClient)method.Invoke(null, null);
+ this.client.CreateBannerView(adUnitId, adSize, x, y);
+ this.ConfigureBannerEvents();
+ }
+
+ public void LoadAd(AdRequest request)
+ {
+ this.client.LoadAd(request);
+ }
+
+ public void Hide()
+ {
+ this.client.HideBannerView();
+ }
+
+ public void Show()
+ {
+ this.client.ShowBannerView();
+ }
+
+ public void Destroy()
+ {
+ this.client.DestroyBannerView();
+ }
+
+ public float GetHeightInPixels()
+ {
+ return this.client.GetHeightInPixels();
+ }
+
+ public float GetWidthInPixels()
+ {
+ return this.client.GetWidthInPixels();
+ }
+
+ public void SetPosition(AdPosition adPosition)
+ {
+ this.client.SetPosition(adPosition);
+ }
+
+ public void SetPosition(int x, int y)
+ {
+ this.client.SetPosition(x, y);
+ }
+
+ private void ConfigureBannerEvents()
+ {
+ this.client.OnAdLoaded += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdLoaded != null)
+ {
+ this.OnAdLoaded(this, args);
+ }
+ };
+ this.client.OnAdFailedToLoad += delegate(object sender, AdFailedToLoadEventArgs args)
+ {
+ if (this.OnAdFailedToLoad != null)
+ {
+ this.OnAdFailedToLoad(this, args);
+ }
+ };
+ this.client.OnAdOpening += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdOpening != null)
+ {
+ this.OnAdOpening(this, args);
+ }
+ };
+ this.client.OnAdClosed += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdClosed != null)
+ {
+ this.OnAdClosed(this, args);
+ }
+ };
+ this.client.OnAdLeavingApplication += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdLeavingApplication != null)
+ {
+ this.OnAdLeavingApplication(this, args);
+ }
+ };
+ }
+
+ public string MediationAdapterClassName()
+ {
+ return this.client.MediationAdapterClassName();
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/CustomNativeEventArgs.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/CustomNativeEventArgs.cs
new file mode 100644
index 0000000..692b54b
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/CustomNativeEventArgs.cs
@@ -0,0 +1,9 @@
+using System;
+
+namespace GoogleMobileAds.Api
+{
+ public class CustomNativeEventArgs : EventArgs
+ {
+ public CustomNativeTemplateAd nativeAd { get; set; }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/CustomNativeTemplateAd.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/CustomNativeTemplateAd.cs
new file mode 100644
index 0000000..159341b
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/CustomNativeTemplateAd.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+using GoogleMobileAds.Common;
+using UnityEngine;
+
+namespace GoogleMobileAds.Api
+{
+ public class CustomNativeTemplateAd
+ {
+ private ICustomNativeTemplateClient client;
+
+ internal CustomNativeTemplateAd(ICustomNativeTemplateClient client)
+ {
+ this.client = client;
+ }
+
+ public List<string> GetAvailableAssetNames()
+ {
+ return this.client.GetAvailableAssetNames();
+ }
+
+ public string GetCustomTemplateId()
+ {
+ return this.client.GetTemplateId();
+ }
+
+ public Texture2D GetTexture2D(string key)
+ {
+ byte[] imageByteArray = this.client.GetImageByteArray(key);
+ if (imageByteArray == null)
+ {
+ return null;
+ }
+ return Utils.GetTexture2DFromByteArray(imageByteArray);
+ }
+
+ public string GetText(string key)
+ {
+ return this.client.GetText(key);
+ }
+
+ public void PerformClick(string assetName)
+ {
+ this.client.PerformClick(assetName);
+ }
+
+ public void RecordImpression()
+ {
+ this.client.RecordImpression();
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/Gender.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/Gender.cs
new file mode 100644
index 0000000..afdd035
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/Gender.cs
@@ -0,0 +1,11 @@
+using System;
+
+namespace GoogleMobileAds.Api
+{
+ public enum Gender
+ {
+ Unknown,
+ Male,
+ Female
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/InterstitialAd.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/InterstitialAd.cs
new file mode 100644
index 0000000..e9817bb
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/InterstitialAd.cs
@@ -0,0 +1,88 @@
+using System;
+using System.Reflection;
+using GoogleMobileAds.Common;
+
+namespace GoogleMobileAds.Api
+{
+ public class InterstitialAd
+ {
+ public event EventHandler<EventArgs> OnAdLoaded;
+
+ public event EventHandler<AdFailedToLoadEventArgs> OnAdFailedToLoad;
+
+ public event EventHandler<EventArgs> OnAdOpening;
+
+ public event EventHandler<EventArgs> OnAdClosed;
+
+ public event EventHandler<EventArgs> OnAdLeavingApplication;
+
+ private IInterstitialClient client;
+
+ public InterstitialAd(string adUnitId)
+ {
+ MethodInfo method = Type.GetType("GoogleMobileAds.GoogleMobileAdsClientFactory,Assembly-CSharp").GetMethod("BuildInterstitialClient", BindingFlags.Static | BindingFlags.Public);
+ this.client = (IInterstitialClient)method.Invoke(null, null);
+ this.client.CreateInterstitialAd(adUnitId);
+ this.client.OnAdLoaded += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdLoaded != null)
+ {
+ this.OnAdLoaded(this, args);
+ }
+ };
+ this.client.OnAdFailedToLoad += delegate(object sender, AdFailedToLoadEventArgs args)
+ {
+ if (this.OnAdFailedToLoad != null)
+ {
+ this.OnAdFailedToLoad(this, args);
+ }
+ };
+ this.client.OnAdOpening += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdOpening != null)
+ {
+ this.OnAdOpening(this, args);
+ }
+ };
+ this.client.OnAdClosed += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdClosed != null)
+ {
+ this.OnAdClosed(this, args);
+ }
+ };
+ this.client.OnAdLeavingApplication += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdLeavingApplication != null)
+ {
+ this.OnAdLeavingApplication(this, args);
+ }
+ };
+ }
+
+ public void LoadAd(AdRequest request)
+ {
+ this.client.LoadAd(request);
+ }
+
+ public bool IsLoaded()
+ {
+ return this.client.IsLoaded();
+ }
+
+ public void Show()
+ {
+ this.client.ShowInterstitial();
+ }
+
+ public void Destroy()
+ {
+ this.client.DestroyInterstitial();
+ }
+
+ public string MediationAdapterClassName()
+ {
+ return this.client.MediationAdapterClassName();
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/Mediation/MediationExtras.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/Mediation/MediationExtras.cs
new file mode 100644
index 0000000..1604ec7
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/Mediation/MediationExtras.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+
+namespace GoogleMobileAds.Api.Mediation
+{
+ public abstract class MediationExtras
+ {
+ public Dictionary<string, string> Extras { get; protected set; }
+
+ public abstract string AndroidMediationExtraBuilderClassName { get; }
+
+ public abstract string IOSMediationExtraBuilderClassName { get; }
+
+ public MediationExtras()
+ {
+ this.Extras = new Dictionary<string, string>();
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/MobileAds.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/MobileAds.cs
new file mode 100644
index 0000000..38199b3
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/MobileAds.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Reflection;
+using GoogleMobileAds.Common;
+
+namespace GoogleMobileAds.Api
+{
+ public class MobileAds
+ {
+ private static readonly IMobileAdsClient client = MobileAds.GetMobileAdsClient();
+
+ public static void Initialize(string appId)
+ {
+ MobileAds.client.Initialize(appId);
+ MobileAdsEventExecutor.Initialize();
+ }
+
+ public static void SetApplicationMuted(bool muted)
+ {
+ MobileAds.client.SetApplicationMuted(muted);
+ }
+
+ public static void SetApplicationVolume(float volume)
+ {
+ MobileAds.client.SetApplicationVolume(volume);
+ }
+
+ public static void SetiOSAppPauseOnBackground(bool pause)
+ {
+ MobileAds.client.SetiOSAppPauseOnBackground(pause);
+ }
+
+ private static IMobileAdsClient GetMobileAdsClient()
+ {
+ return (IMobileAdsClient)Type.GetType("GoogleMobileAds.GoogleMobileAdsClientFactory,Assembly-CSharp").GetMethod("MobileAdsInstance", BindingFlags.Static | BindingFlags.Public).Invoke(null, null);
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/NativeAdType.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/NativeAdType.cs
new file mode 100644
index 0000000..98c1e39
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/NativeAdType.cs
@@ -0,0 +1,9 @@
+using System;
+
+namespace GoogleMobileAds.Api
+{
+ public enum NativeAdType
+ {
+ CustomTemplate
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/Reward.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/Reward.cs
new file mode 100644
index 0000000..1e0beda
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/Reward.cs
@@ -0,0 +1,11 @@
+using System;
+
+namespace GoogleMobileAds.Api
+{
+ public class Reward : EventArgs
+ {
+ public string Type { get; set; }
+
+ public double Amount { get; set; }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/RewardBasedVideoAd.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/RewardBasedVideoAd.cs
new file mode 100644
index 0000000..90f069a
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/RewardBasedVideoAd.cs
@@ -0,0 +1,125 @@
+using System;
+using System.Reflection;
+using GoogleMobileAds.Common;
+
+namespace GoogleMobileAds.Api
+{
+ public class RewardBasedVideoAd
+ {
+ public static RewardBasedVideoAd Instance
+ {
+ get
+ {
+ return RewardBasedVideoAd.instance;
+ }
+ }
+
+ public event EventHandler<EventArgs> OnAdLoaded;
+
+ public event EventHandler<AdFailedToLoadEventArgs> OnAdFailedToLoad;
+
+ public event EventHandler<EventArgs> OnAdOpening;
+
+ public event EventHandler<EventArgs> OnAdStarted;
+
+ public event EventHandler<EventArgs> OnAdClosed;
+
+ public event EventHandler<Reward> OnAdRewarded;
+
+ public event EventHandler<EventArgs> OnAdLeavingApplication;
+
+ public event EventHandler<EventArgs> OnAdCompleted;
+
+ private IRewardBasedVideoAdClient client;
+
+ private static readonly RewardBasedVideoAd instance = new RewardBasedVideoAd();
+
+ private RewardBasedVideoAd()
+ {
+ MethodInfo method = Type.GetType("GoogleMobileAds.GoogleMobileAdsClientFactory,Assembly-CSharp").GetMethod("BuildRewardBasedVideoAdClient", BindingFlags.Static | BindingFlags.Public);
+ this.client = (IRewardBasedVideoAdClient)method.Invoke(null, null);
+ this.client.CreateRewardBasedVideoAd();
+ this.client.OnAdLoaded += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdLoaded != null)
+ {
+ this.OnAdLoaded(this, args);
+ }
+ };
+ this.client.OnAdFailedToLoad += delegate(object sender, AdFailedToLoadEventArgs args)
+ {
+ if (this.OnAdFailedToLoad != null)
+ {
+ this.OnAdFailedToLoad(this, args);
+ }
+ };
+ this.client.OnAdOpening += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdOpening != null)
+ {
+ this.OnAdOpening(this, args);
+ }
+ };
+ this.client.OnAdStarted += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdStarted != null)
+ {
+ this.OnAdStarted(this, args);
+ }
+ };
+ this.client.OnAdClosed += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdClosed != null)
+ {
+ this.OnAdClosed(this, args);
+ }
+ };
+ this.client.OnAdLeavingApplication += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdLeavingApplication != null)
+ {
+ this.OnAdLeavingApplication(this, args);
+ }
+ };
+ this.client.OnAdRewarded += delegate(object sender, Reward args)
+ {
+ if (this.OnAdRewarded != null)
+ {
+ this.OnAdRewarded(this, args);
+ }
+ };
+ this.client.OnAdCompleted += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdCompleted != null)
+ {
+ this.OnAdCompleted(this, args);
+ }
+ };
+ }
+
+ public void LoadAd(AdRequest request, string adUnitId)
+ {
+ this.client.LoadAd(request, adUnitId);
+ }
+
+ public bool IsLoaded()
+ {
+ return this.client.IsLoaded();
+ }
+
+ public void Show()
+ {
+ this.client.ShowRewardBasedVideoAd();
+ }
+
+ public void SetUserId(string userId)
+ {
+ this.client.SetUserId(userId);
+ }
+
+ public string MediationAdapterClassName()
+ {
+ return this.client.MediationAdapterClassName();
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/RewardedAd.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/RewardedAd.cs
new file mode 100644
index 0000000..48a43ff
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/RewardedAd.cs
@@ -0,0 +1,97 @@
+using System;
+using System.Reflection;
+using GoogleMobileAds.Common;
+
+namespace GoogleMobileAds.Api
+{
+ public class RewardedAd
+ {
+ public event EventHandler<EventArgs> OnAdLoaded;
+
+ public event EventHandler<AdErrorEventArgs> OnAdFailedToLoad;
+
+ public event EventHandler<AdErrorEventArgs> OnAdFailedToShow;
+
+ public event EventHandler<EventArgs> OnAdOpening;
+
+ public event EventHandler<EventArgs> OnAdClosed;
+
+ public event EventHandler<Reward> OnUserEarnedReward;
+
+ private IRewardedAdClient client;
+
+ public RewardedAd(string adUnitId)
+ {
+ MethodInfo method = Type.GetType("GoogleMobileAds.GoogleMobileAdsClientFactory,Assembly-CSharp").GetMethod("BuildRewardedAdClient", BindingFlags.Static | BindingFlags.Public);
+ this.client = (IRewardedAdClient)method.Invoke(null, null);
+ this.client.CreateRewardedAd(adUnitId);
+ this.client.OnAdLoaded += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdLoaded != null)
+ {
+ this.OnAdLoaded(this, args);
+ }
+ };
+ this.client.OnAdFailedToLoad += delegate(object sender, AdErrorEventArgs args)
+ {
+ if (this.OnAdFailedToLoad != null)
+ {
+ this.OnAdFailedToLoad(this, args);
+ }
+ };
+ this.client.OnAdFailedToShow += delegate(object sender, AdErrorEventArgs args)
+ {
+ if (this.OnAdFailedToShow != null)
+ {
+ this.OnAdFailedToShow(this, args);
+ }
+ };
+ this.client.OnAdOpening += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdOpening != null)
+ {
+ this.OnAdOpening(this, args);
+ }
+ };
+ this.client.OnAdClosed += delegate(object sender, EventArgs args)
+ {
+ if (this.OnAdClosed != null)
+ {
+ this.OnAdClosed(this, args);
+ }
+ };
+ this.client.OnUserEarnedReward += delegate(object sender, Reward args)
+ {
+ if (this.OnUserEarnedReward != null)
+ {
+ this.OnUserEarnedReward(this, args);
+ }
+ };
+ }
+
+ public void LoadAd(AdRequest request)
+ {
+ this.client.LoadAd(request);
+ }
+
+ public bool IsLoaded()
+ {
+ return this.client.IsLoaded();
+ }
+
+ public void Show()
+ {
+ this.client.Show();
+ }
+
+ public void SetServerSideVerificationOptions(ServerSideVerificationOptions serverSideVerificationOptions)
+ {
+ this.client.SetServerSideVerificationOptions(serverSideVerificationOptions);
+ }
+
+ public string MediationAdapterClassName()
+ {
+ return this.client.MediationAdapterClassName();
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Api/ServerSideVerificationOptions.cs b/Client/Assembly-CSharp/GoogleMobileAds/Api/ServerSideVerificationOptions.cs
new file mode 100644
index 0000000..6f0e920
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Api/ServerSideVerificationOptions.cs
@@ -0,0 +1,41 @@
+using System;
+
+namespace GoogleMobileAds.Api
+{
+ public class ServerSideVerificationOptions
+ {
+ public string UserId { get; private set; }
+
+ public string CustomData { get; private set; }
+
+ public class Builder
+ {
+ internal string UserId { get; private set; }
+
+ internal string CustomData { get; private set; }
+
+ public ServerSideVerificationOptions.Builder SetUserId(string userId)
+ {
+ this.UserId = userId;
+ return this;
+ }
+
+ public ServerSideVerificationOptions.Builder SetCustomData(string customData)
+ {
+ this.CustomData = customData;
+ return this;
+ }
+
+ public ServerSideVerificationOptions Build()
+ {
+ return new ServerSideVerificationOptions(this);
+ }
+ }
+
+ private ServerSideVerificationOptions(ServerSideVerificationOptions.Builder builder)
+ {
+ this.UserId = builder.UserId;
+ this.CustomData = builder.CustomData;
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Common/DummyClient.cs b/Client/Assembly-CSharp/GoogleMobileAds/Common/DummyClient.cs
new file mode 100644
index 0000000..91587cc
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Common/DummyClient.cs
@@ -0,0 +1,185 @@
+using System;
+using System.Reflection;
+using GoogleMobileAds.Api;
+using UnityEngine;
+
+namespace GoogleMobileAds.Common
+{
+ public class DummyClient : IBannerClient, IInterstitialClient, IRewardBasedVideoAdClient, IAdLoaderClient, IMobileAdsClient
+ {
+ public string UserId
+ {
+ get
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ return "UserId";
+ }
+ set
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+ }
+
+ public event EventHandler<EventArgs> OnAdLoaded;
+
+ public event EventHandler<AdFailedToLoadEventArgs> OnAdFailedToLoad;
+
+ public event EventHandler<EventArgs> OnAdOpening;
+
+ public event EventHandler<EventArgs> OnAdStarted;
+
+ public event EventHandler<EventArgs> OnAdClosed;
+
+ public event EventHandler<Reward> OnAdRewarded;
+
+ public event EventHandler<EventArgs> OnAdLeavingApplication;
+
+ public event EventHandler<EventArgs> OnAdCompleted;
+
+ public event EventHandler<CustomNativeEventArgs> OnCustomNativeTemplateAdLoaded;
+
+ public DummyClient()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void Initialize(string appId)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void SetApplicationMuted(bool muted)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void SetApplicationVolume(float volume)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void SetiOSAppPauseOnBackground(bool pause)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void CreateBannerView(string adUnitId, AdSize adSize, AdPosition position)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void CreateBannerView(string adUnitId, AdSize adSize, int positionX, int positionY)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void LoadAd(AdRequest request)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void ShowBannerView()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void HideBannerView()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void DestroyBannerView()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public float GetHeightInPixels()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ return 0f;
+ }
+
+ public float GetWidthInPixels()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ return 0f;
+ }
+
+ public void SetPosition(AdPosition adPosition)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void SetPosition(int x, int y)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void CreateInterstitialAd(string adUnitId)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public bool IsLoaded()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ return true;
+ }
+
+ public void ShowInterstitial()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void DestroyInterstitial()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void CreateRewardBasedVideoAd()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void SetUserId(string userId)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void LoadAd(AdRequest request, string adUnitId)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void DestroyRewardBasedVideoAd()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void ShowRewardBasedVideoAd()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void CreateAdLoader(AdLoader.Builder builder)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void Load(AdRequest request)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void SetAdSize(AdSize adSize)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public string MediationAdapterClassName()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ return null;
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Common/IAdLoaderClient.cs b/Client/Assembly-CSharp/GoogleMobileAds/Common/IAdLoaderClient.cs
new file mode 100644
index 0000000..4f9f332
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Common/IAdLoaderClient.cs
@@ -0,0 +1,14 @@
+using System;
+using GoogleMobileAds.Api;
+
+namespace GoogleMobileAds.Common
+{
+ public interface IAdLoaderClient
+ {
+ event EventHandler<AdFailedToLoadEventArgs> OnAdFailedToLoad;
+
+ event EventHandler<CustomNativeEventArgs> OnCustomNativeTemplateAdLoaded;
+
+ void LoadAd(AdRequest request);
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Common/IBannerClient.cs b/Client/Assembly-CSharp/GoogleMobileAds/Common/IBannerClient.cs
new file mode 100644
index 0000000..96f2d37
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Common/IBannerClient.cs
@@ -0,0 +1,40 @@
+using System;
+using GoogleMobileAds.Api;
+
+namespace GoogleMobileAds.Common
+{
+ public interface IBannerClient
+ {
+ event EventHandler<EventArgs> OnAdLoaded;
+
+ event EventHandler<AdFailedToLoadEventArgs> OnAdFailedToLoad;
+
+ event EventHandler<EventArgs> OnAdOpening;
+
+ event EventHandler<EventArgs> OnAdClosed;
+
+ event EventHandler<EventArgs> OnAdLeavingApplication;
+
+ void CreateBannerView(string adUnitId, AdSize adSize, AdPosition position);
+
+ void CreateBannerView(string adUnitId, AdSize adSize, int x, int y);
+
+ void LoadAd(AdRequest request);
+
+ void ShowBannerView();
+
+ void HideBannerView();
+
+ void DestroyBannerView();
+
+ float GetHeightInPixels();
+
+ float GetWidthInPixels();
+
+ void SetPosition(AdPosition adPosition);
+
+ void SetPosition(int x, int y);
+
+ string MediationAdapterClassName();
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Common/ICustomNativeTemplateClient.cs b/Client/Assembly-CSharp/GoogleMobileAds/Common/ICustomNativeTemplateClient.cs
new file mode 100644
index 0000000..8c5ae57
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Common/ICustomNativeTemplateClient.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+
+namespace GoogleMobileAds.Common
+{
+ public interface ICustomNativeTemplateClient
+ {
+ string GetTemplateId();
+
+ byte[] GetImageByteArray(string key);
+
+ List<string> GetAvailableAssetNames();
+
+ string GetText(string key);
+
+ void PerformClick(string assetName);
+
+ void RecordImpression();
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Common/IInterstitialClient.cs b/Client/Assembly-CSharp/GoogleMobileAds/Common/IInterstitialClient.cs
new file mode 100644
index 0000000..cd4e35a
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Common/IInterstitialClient.cs
@@ -0,0 +1,30 @@
+using System;
+using GoogleMobileAds.Api;
+
+namespace GoogleMobileAds.Common
+{
+ public interface IInterstitialClient
+ {
+ event EventHandler<EventArgs> OnAdLoaded;
+
+ event EventHandler<AdFailedToLoadEventArgs> OnAdFailedToLoad;
+
+ event EventHandler<EventArgs> OnAdOpening;
+
+ event EventHandler<EventArgs> OnAdClosed;
+
+ event EventHandler<EventArgs> OnAdLeavingApplication;
+
+ void CreateInterstitialAd(string adUnitId);
+
+ void LoadAd(AdRequest request);
+
+ bool IsLoaded();
+
+ void ShowInterstitial();
+
+ void DestroyInterstitial();
+
+ string MediationAdapterClassName();
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Common/IMobileAdsClient.cs b/Client/Assembly-CSharp/GoogleMobileAds/Common/IMobileAdsClient.cs
new file mode 100644
index 0000000..a7735f2
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Common/IMobileAdsClient.cs
@@ -0,0 +1,15 @@
+using System;
+
+namespace GoogleMobileAds.Common
+{
+ public interface IMobileAdsClient
+ {
+ void Initialize(string appId);
+
+ void SetApplicationVolume(float volume);
+
+ void SetApplicationMuted(bool muted);
+
+ void SetiOSAppPauseOnBackground(bool pause);
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Common/IRewardBasedVideoAdClient.cs b/Client/Assembly-CSharp/GoogleMobileAds/Common/IRewardBasedVideoAdClient.cs
new file mode 100644
index 0000000..2e4589d
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Common/IRewardBasedVideoAdClient.cs
@@ -0,0 +1,36 @@
+using System;
+using GoogleMobileAds.Api;
+
+namespace GoogleMobileAds.Common
+{
+ public interface IRewardBasedVideoAdClient
+ {
+ event EventHandler<EventArgs> OnAdLoaded;
+
+ event EventHandler<AdFailedToLoadEventArgs> OnAdFailedToLoad;
+
+ event EventHandler<EventArgs> OnAdOpening;
+
+ event EventHandler<EventArgs> OnAdStarted;
+
+ event EventHandler<Reward> OnAdRewarded;
+
+ event EventHandler<EventArgs> OnAdClosed;
+
+ event EventHandler<EventArgs> OnAdLeavingApplication;
+
+ event EventHandler<EventArgs> OnAdCompleted;
+
+ void CreateRewardBasedVideoAd();
+
+ void LoadAd(AdRequest request, string adUnitId);
+
+ bool IsLoaded();
+
+ string MediationAdapterClassName();
+
+ void ShowRewardBasedVideoAd();
+
+ void SetUserId(string userId);
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Common/IRewardedAdClient.cs b/Client/Assembly-CSharp/GoogleMobileAds/Common/IRewardedAdClient.cs
new file mode 100644
index 0000000..10a8a6c
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Common/IRewardedAdClient.cs
@@ -0,0 +1,32 @@
+using System;
+using GoogleMobileAds.Api;
+
+namespace GoogleMobileAds.Common
+{
+ public interface IRewardedAdClient
+ {
+ event EventHandler<EventArgs> OnAdLoaded;
+
+ event EventHandler<AdErrorEventArgs> OnAdFailedToLoad;
+
+ event EventHandler<AdErrorEventArgs> OnAdFailedToShow;
+
+ event EventHandler<EventArgs> OnAdOpening;
+
+ event EventHandler<Reward> OnUserEarnedReward;
+
+ event EventHandler<EventArgs> OnAdClosed;
+
+ void CreateRewardedAd(string adUnitId);
+
+ void LoadAd(AdRequest request);
+
+ bool IsLoaded();
+
+ string MediationAdapterClassName();
+
+ void Show();
+
+ void SetServerSideVerificationOptions(ServerSideVerificationOptions serverSideVerificationOptions);
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Common/MobileAdsEventExecutor.cs b/Client/Assembly-CSharp/GoogleMobileAds/Common/MobileAdsEventExecutor.cs
new file mode 100644
index 0000000..8afa69c
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Common/MobileAdsEventExecutor.cs
@@ -0,0 +1,72 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace GoogleMobileAds.Common
+{
+ public class MobileAdsEventExecutor : MonoBehaviour
+ {
+ public static MobileAdsEventExecutor instance = null;
+
+ private static List<Action> adEventsQueue = new List<Action>();
+
+ private static volatile bool adEventsQueueEmpty = true;
+
+ public static void Initialize()
+ {
+ if (MobileAdsEventExecutor.IsActive())
+ {
+ return;
+ }
+ GameObject gameObject = new GameObject("MobileAdsMainThreadExecuter");
+ gameObject.hideFlags = HideFlags.HideAndDontSave;
+ UnityEngine.Object.DontDestroyOnLoad(gameObject);
+ MobileAdsEventExecutor.instance = gameObject.AddComponent<MobileAdsEventExecutor>();
+ }
+
+ public static bool IsActive()
+ {
+ return MobileAdsEventExecutor.instance != null;
+ }
+
+ public void Awake()
+ {
+ UnityEngine.Object.DontDestroyOnLoad(base.gameObject);
+ }
+
+ public static void ExecuteInUpdate(Action action)
+ {
+ List<Action> obj = MobileAdsEventExecutor.adEventsQueue;
+ lock (obj)
+ {
+ MobileAdsEventExecutor.adEventsQueue.Add(action);
+ MobileAdsEventExecutor.adEventsQueueEmpty = false;
+ }
+ }
+
+ public void Update()
+ {
+ if (MobileAdsEventExecutor.adEventsQueueEmpty)
+ {
+ return;
+ }
+ List<Action> list = new List<Action>();
+ List<Action> obj = MobileAdsEventExecutor.adEventsQueue;
+ lock (obj)
+ {
+ list.AddRange(MobileAdsEventExecutor.adEventsQueue);
+ MobileAdsEventExecutor.adEventsQueue.Clear();
+ MobileAdsEventExecutor.adEventsQueueEmpty = true;
+ }
+ foreach (Action action in list)
+ {
+ action();
+ }
+ }
+
+ public void OnDisable()
+ {
+ MobileAdsEventExecutor.instance = null;
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Common/RewardedAdDummyClient.cs b/Client/Assembly-CSharp/GoogleMobileAds/Common/RewardedAdDummyClient.cs
new file mode 100644
index 0000000..1271c6d
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Common/RewardedAdDummyClient.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Reflection;
+using GoogleMobileAds.Api;
+using UnityEngine;
+
+namespace GoogleMobileAds.Common
+{
+ public class RewardedAdDummyClient : IRewardedAdClient
+ {
+ public event EventHandler<EventArgs> OnAdLoaded;
+
+ public event EventHandler<AdErrorEventArgs> OnAdFailedToLoad;
+
+ public event EventHandler<AdErrorEventArgs> OnAdFailedToShow;
+
+ public event EventHandler<EventArgs> OnAdOpening;
+
+ public event EventHandler<EventArgs> OnAdClosed;
+
+ public event EventHandler<Reward> OnUserEarnedReward;
+
+ public RewardedAdDummyClient()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void CreateRewardedAd(string adUnitId)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public void LoadAd(AdRequest request)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public bool IsLoaded()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ return true;
+ }
+
+ public void Show()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+
+ public string MediationAdapterClassName()
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ return null;
+ }
+
+ public void SetServerSideVerificationOptions(ServerSideVerificationOptions serverSideVerificationOptions)
+ {
+ Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/Common/Utils.cs b/Client/Assembly-CSharp/GoogleMobileAds/Common/Utils.cs
new file mode 100644
index 0000000..cd20f95
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/Common/Utils.cs
@@ -0,0 +1,27 @@
+using System;
+using UnityEngine;
+
+namespace GoogleMobileAds.Common
+{
+ internal class Utils
+ {
+ public static void CheckInitialization()
+ {
+ if (!MobileAdsEventExecutor.IsActive())
+ {
+ Debug.Log("You intitialized an ad object but have not yet called MobileAds.Initialize(). We highly recommend you call MobileAds.Initialize() before interacting with the Google Mobile Ads SDK.");
+ }
+ MobileAdsEventExecutor.Initialize();
+ }
+
+ public static Texture2D GetTexture2DFromByteArray(byte[] img)
+ {
+ Texture2D texture2D = new Texture2D(1, 1);
+ if (!texture2D.LoadImage(img))
+ {
+ throw new InvalidOperationException("Could not load custom native template\n image asset as texture");
+ }
+ return texture2D;
+ }
+ }
+}
diff --git a/Client/Assembly-CSharp/GoogleMobileAds/GoogleMobileAdsClientFactory.cs b/Client/Assembly-CSharp/GoogleMobileAds/GoogleMobileAdsClientFactory.cs
new file mode 100644
index 0000000..1e5fcaa
--- /dev/null
+++ b/Client/Assembly-CSharp/GoogleMobileAds/GoogleMobileAdsClientFactory.cs
@@ -0,0 +1,39 @@
+using System;
+using GoogleMobileAds.Api;
+using GoogleMobileAds.Common;
+
+namespace GoogleMobileAds
+{
+ public class GoogleMobileAdsClientFactory
+ {
+ public static IBannerClient BuildBannerClient()
+ {
+ return new DummyClient();
+ }
+
+ public static IInterstitialClient BuildInterstitialClient()
+ {
+ return new DummyClient();
+ }
+
+ public static IRewardBasedVideoAdClient BuildRewardBasedVideoAdClient()
+ {
+ return new DummyClient();
+ }
+
+ public static IRewardedAdClient BuildRewardedAdClient()
+ {
+ return new RewardedAdDummyClient();
+ }
+
+ public static IAdLoaderClient BuildAdLoaderClient(AdLoader adLoader)
+ {
+ return new DummyClient();
+ }
+
+ public static IMobileAdsClient MobileAdsInstance()
+ {
+ return new DummyClient();
+ }
+ }
+}