Skip to content

Instantly share code, notes, and snippets.

@ricardoalcantara
Last active July 18, 2020 06:41
Show Gist options
  • Save ricardoalcantara/c238cd07286b33d6ffbcecc87adb3684 to your computer and use it in GitHub Desktop.
Save ricardoalcantara/c238cd07286b33d6ffbcecc87adb3684 to your computer and use it in GitHub Desktop.
Interface that depends on Admob.gd
using Godot;
namespace AdmobLib
{
public class AdmobInterface : Node
{
private static AdmobSystem _instance;
public static AdmobSystem Instance => _instance;
[Signal] public delegate void BannerLoaded();
[Signal] public delegate void Banner_failedToLoad(int error_code);
[Signal] public delegate void InterstitialFailedToLoad(int error_code);
[Signal] public delegate void InterstitialLoaded();
[Signal] public delegate void InterstitialClosed();
[Signal] public delegate void Rewarded_video_loaded();
[Signal] public delegate void RewardedVideo_closed();
[Signal] public delegate void Rewarded(string currency, int ammount);
[Signal] public delegate void RewardedVideoLeftApplication();
[Signal] public delegate void RewardedVideoFailedToLoad(int error_code);
[Signal] public delegate void RewardedVideoOpened();
[Signal] public delegate void RewardedVideoStarted();
// If true use your real ad, if false use test ads. Make sure to only set it to true with your published apk, otherwise you can be banned by Google
private bool BannerOnTop { get => (bool)_admob.Get("banner_on_top"); set => _admob.Set("banner_on_top", value); }
private string BannerId { get => (string)_admob.Get("banner_id"); set => _admob.Set("banner_id", value); }
private string InterstitialId { get => (string)_admob.Get("interstitial_id"); set => _admob.Set("interstitial_id", value); }
private string RewardedId { get => (string)_admob.Get("rewarded_id"); set => _admob.Set("rewarded_id", value); }
// If true, set the ads to children directed. If true, max_ad_content_rate will be ignored (your max_ad_content_rate would can not be other than "G")
private bool ChildDirected { get => (bool)_admob.Get("child_directed"); set => _admob.Set("child_directed", value); }
// If ads should be personalized. In the European Economic Area, GDPR requires ad personalization to be opt-in.
private bool IsPersonalized { get => (bool)_admob.Get("is_personalized"); set => _admob.Set("is_personalized", value); }
// Its value must be "G", "PG", "T" or "MA". If the rating of your app in Play Console and your config of max_ad_content_rate in AdMob are not matched, your app can be banned by Google
private string MaxAdContentRate { get => (string)_admob.Get("max_ad_content_rate"); set => _admob.Set("max_ad_content_rate", value); }
private Node _admob = null;
public override void _Ready()
{
_instance = this;
_admob = GetNode("/root/Admob");
// _admob.Set("banner_on_top", banner_on_top);
// _admob.Set("banner_id", banner_id);
// _admob.Set("interstitial_id", interstitial_id);
// _admob.Set("rewarded_id", rewarded_id);
// _admob.Set("child_directed", child_directed);
// _admob.Set("is_personalized", is_personalized);
// _admob.Set("max_ad_content_rate", max_ad_content_rate);
BannerOnTop = true;
BannerId = "ca-app-pub-3940256099942544/6300978111";
InterstitialId = "ca-app-pub-3940256099942544/1033173712";
RewardedId = "ca-app-pub-3940256099942544/1033173712";
ChildDirected = false;
IsPersonalized = true;
MaxAdContentRate = "G";
_admob.Connect("banner_loaded", this, nameof(banner_loaded));
_admob.Connect("banner_failed_to_load", this, nameof(banner_failed_to_load));
_admob.Connect("interstitial_failed_to_load", this, nameof(interstitial_failed_to_load));
_admob.Connect("interstitial_loaded", this, nameof(interstitial_loaded));
_admob.Connect("interstitial_closed", this, nameof(interstitial_closed));
_admob.Connect("rewarded_video_loaded", this, nameof(rewarded_video_loaded));
_admob.Connect("rewarded_video_closed", this, nameof(rewarded_video_closed));
_admob.Connect("rewarded", this, nameof(rewarded));
_admob.Connect("rewarded_video_left_application", this, nameof(rewarded_video_left_application));
_admob.Connect("rewarded_video_failed_to_load", this, nameof(rewarded_video_failed_to_load));
_admob.Connect("rewarded_video_opened", this, nameof(rewarded_video_opened));
_admob.Connect("rewarded_video_started", this, nameof(rewarded_video_started));
_admob.Call("init");
}
public void LoadBanner()
{
_admob.Call("load_banner");
}
public void LoadBanner(bool onTop)
{
BannerOnTop = onTop;
_admob.Call("load_banner");
}
public void LoadInterstitial()
{
_admob.Call("load_interstitial");
}
public bool IsInterstitialLoaded()
{
return (bool)_admob.Call("is_interstitial_loaded");
}
public void LoadRewardedVideo()
{
_admob.Call("load_rewarded_video");
}
public bool IsRewardedVideoLoaded()
{
return (bool)_admob.Call("is_rewarded_video_loaded");
}
// show / hide
public void ShowBanner()
{
_admob.Call("show_banner");
}
public void HideBanner()
{
_admob.Call("hide_banner");
}
public void ShowInterstitial()
{
_admob.Call("show_interstitial");
}
public void ShowRewardedVideo()
{
_admob.Call("show_rewarded_video");
}
private void banner_loaded() => EmitSignal(nameof(BannerLoaded));
private void banner_failed_to_load(int error_code) => EmitSignal(nameof(Banner_failedToLoad), error_code);
private void interstitial_failed_to_load(int error_code) => EmitSignal(nameof(InterstitialFailedToLoad), error_code);
private void interstitial_loaded() => EmitSignal(nameof(InterstitialLoaded));
private void interstitial_closed() => EmitSignal(nameof(InterstitialClosed));
private void rewarded_video_loaded() => EmitSignal(nameof(Rewarded_video_loaded));
private void rewarded_video_closed() => EmitSignal(nameof(RewardedVideo_closed));
private void rewarded(string currency, int ammount) => EmitSignal(nameof(Rewarded), currency, ammount);
private void rewarded_video_left_application() => EmitSignal(nameof(RewardedVideoLeftApplication));
private void rewarded_video_failed_to_load(int error_code) => EmitSignal(nameof(RewardedVideoFailedToLoad), error_code);
private void rewarded_video_opened() => EmitSignal(nameof(RewardedVideoOpened));
private void rewarded_video_started() => EmitSignal(nameof(RewardedVideoStarted));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment