Last active
May 18, 2022 12:33
-
-
Save ricardoalcantara/6dddf96f35f26d168a66757f8ab1109f to your computer and use it in GitHub Desktop.
Godot-Android-Admob-Plugin admon.gd to C#
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Godot; | |
namespace AdmobLib | |
{ | |
public class Admob : Node | |
{ | |
[Signal] public delegate void banner_loaded(); | |
[Signal] public delegate void banner_failed_to_load(int error_code); | |
[Signal] public delegate void interstitial_failed_to_load(int error_code); | |
[Signal] public delegate void interstitial_loaded(); | |
[Signal] public delegate void interstitial_closed(); | |
[Signal] public delegate void rewarded_video_loaded(); | |
[Signal] public delegate void rewarded_video_closed(); | |
[Signal] public delegate void rewarded(string currency, int ammount); | |
[Signal] public delegate void rewarded_video_left_application(); | |
[Signal] public delegate void rewarded_video_failed_to_load(int error_code); | |
[Signal] public delegate void rewarded_video_opened(); | |
[Signal] public delegate void rewarded_video_started(); | |
private bool _is_real; | |
[Export] | |
public bool is_real | |
{ | |
get => _is_real; | |
set | |
{ | |
_is_real = value; | |
init(); | |
} | |
} | |
[Export] public bool banner_on_top = true; | |
[Export] public string banner_id; | |
[Export] public string interstitial_id; | |
[Export] public string rewarded_id; | |
[Export] public bool child_directed = false; | |
[Export] public bool is_personalized = true; | |
[Export(PropertyHint.Enum, "G,PG,T,MA")] string max_ad_content_rate; | |
// "private" properties | |
// private Object _admob_singleton = null; | |
private Object _admob_singleton = null; | |
private bool _is_interstitial_loaded = false; | |
private bool _is_rewarded_video_loaded = false; | |
public override void _EnterTree() | |
{ | |
GD.Print("Enter Tree"); | |
if (!init()) | |
GD.Print("AdMob Java Singleton not found"); | |
} | |
// initialization | |
private bool init() | |
{ | |
if (Engine.HasSingleton("GodotAdMob")) | |
{ | |
GD.Print("GetInstanceId() ", GetInstanceId()); | |
_admob_singleton = Engine.GetSingleton("GodotAdMob"); | |
_admob_singleton.Call( | |
"initWithContentRating", | |
is_real, | |
GetInstanceId(), | |
child_directed, | |
is_personalized, | |
max_ad_content_rate | |
); | |
return true; | |
} | |
return false; | |
} | |
// load | |
public void load_banner() | |
{ | |
if (_admob_singleton != null) | |
_admob_singleton.Call( | |
"loadBanner", | |
banner_id, banner_on_top); | |
} | |
public void load_interstitial() | |
{ | |
if (_admob_singleton != null) | |
_admob_singleton.Call( | |
"loadInterstitial", | |
interstitial_id); | |
} | |
public bool is_interstitial_loaded() | |
{ | |
if (_admob_singleton != null) | |
return _is_interstitial_loaded; | |
return false; | |
} | |
public void load_rewarded_video() | |
{ | |
if (_admob_singleton != null) | |
_admob_singleton.Call( | |
"loadRewardedVideo", | |
rewarded_id); | |
} | |
public bool is_rewarded_video_loaded() | |
{ | |
if (_admob_singleton != null) | |
return _is_rewarded_video_loaded; | |
return false; | |
} | |
// show / hide | |
public void show_banner() | |
{ | |
if (_admob_singleton != null) | |
_admob_singleton.Call("showBanner"); | |
} | |
public void hide_banner() | |
{ | |
if (_admob_singleton != null) | |
_admob_singleton.Call("hideBanner"); | |
} | |
public void show_interstitial() | |
{ | |
if (_admob_singleton != null) | |
{ | |
_admob_singleton.Call("showInterstitial"); | |
_is_interstitial_loaded = false; | |
} | |
} | |
public void show_rewarded_video() | |
{ | |
if (_admob_singleton != null) | |
{ | |
_admob_singleton.Call("showRewardedVideo"); | |
_is_rewarded_video_loaded = false; | |
} | |
} | |
// resize | |
public void banner_resize() | |
{ | |
if (_admob_singleton != null) | |
{ | |
_admob_singleton.Call("resize"); | |
} | |
} | |
// dimension | |
public Vector2 get_banner_dimension() | |
{ | |
if (_admob_singleton != null) | |
{ | |
var width = (float)_admob_singleton.Call("getBannerWidth"); | |
var height = (float)_admob_singleton.Call("getBannerHeight"); | |
return new Vector2(width, height); | |
} | |
return new Vector2(); | |
} | |
// callbacks | |
public void _on_admob_ad_loaded() | |
{ | |
GD.Print("banner_loaded"); | |
EmitSignal("banner_loaded"); | |
} | |
public void _on_admob_banner_failed_to_load(int error_code) | |
{ | |
GD.Print("banner_failed_to_load ", error_code); | |
EmitSignal("banner_failed_to_load", error_code); | |
} | |
public void _on_interstitial_failed_to_load(int error_code) | |
{ | |
_is_interstitial_loaded = false; | |
GD.Print("interstitial_failed_to_load ", error_code); | |
EmitSignal("interstitial_failed_to_load", error_code); | |
} | |
public void _on_interstitial_loaded() | |
{ | |
_is_interstitial_loaded = true; | |
GD.Print("interstitial_loaded"); | |
EmitSignal("interstitial_loaded"); | |
} | |
public void _on_interstitial_close() | |
{ | |
GD.Print("interstitial_closed"); | |
EmitSignal("interstitial_closed"); | |
} | |
public void _on_rewarded_video_ad_loaded() | |
{ | |
_is_rewarded_video_loaded = true; | |
GD.Print("rewarded_video_loaded"); | |
EmitSignal("rewarded_video_loaded"); | |
} | |
public void _on_rewarded_video_ad_closed() | |
{ | |
GD.Print("rewarded_video_closed"); | |
EmitSignal("rewarded_video_closed"); | |
} | |
public void _on_rewarded(string currency, int amount) | |
{ | |
GD.Print("rewarded ", currency, " ", amount); | |
EmitSignal("rewarded", currency, amount); | |
} | |
public void _on_rewarded_video_ad_left_application() | |
{ | |
GD.Print("rewarded_video_left_application"); | |
EmitSignal("rewarded_video_left_application"); | |
} | |
public void _on_rewarded_video_ad_failed_to_load(int error_code) | |
{ | |
_is_rewarded_video_loaded = false; | |
GD.Print("rewarded_video_failed_to_load ", error_code); | |
EmitSignal("rewarded_video_failed_to_load", error_code); | |
} | |
public void _on_rewarded_video_ad_opened() | |
{ | |
GD.Print("rewarded_video_opened"); | |
EmitSignal("rewarded_video_opened"); | |
} | |
public void _on_rewarded_video_started() | |
{ | |
GD.Print("rewarded_video_started"); | |
EmitSignal("rewarded_video_started"); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I have a problem with this, the signals doesn't appear to be emitting so i added this function
and called it on

init()
just like in the gdscript version