using Godot; using System; using System.Collections; public class Example : Control { private Node MobileAds; IDictionary config; private Button EnableBanner; private Button DisableBanner; private Button ShowBanner; private Button HideBanner; private Button Interstitial; private Button Rewarded; private Button RewardedInterstitial; private Button RequestUserConsent; private Button ResetConsentState; private RichTextLabel Advice; private AudioStreamPlayer Music; private CheckBox BannerPosition; private ItemList BannerSizes; private void GetAllNodes() { MobileAds = (Node) GetNode("/root/MobileAds"); config = (IDictionary) MobileAds.Get("config"); EnableBanner = (Button) GetNode("Background/TabContainer/AdFormats/VBoxContainer/Banner/EnableBanner"); DisableBanner = (Button) GetNode("Background/TabContainer/AdFormats/VBoxContainer/Banner/DisableBanner"); ShowBanner = (Button) GetNode("Background/TabContainer/AdFormats/VBoxContainer/Banner2/ShowBanner"); HideBanner = (Button) GetNode("Background/TabContainer/AdFormats/VBoxContainer/Banner2/HideBanner"); Interstitial = (Button) GetNode("Background/TabContainer/AdFormats/VBoxContainer/Interstitial"); Rewarded = (Button) GetNode("Background/TabContainer/AdFormats/VBoxContainer/Rewarded"); RewardedInterstitial = (Button) GetNode("Background/TabContainer/AdFormats/VBoxContainer/RewardedInterstitial"); RequestUserConsent = (Button) GetNode("Background/TabContainer/UMP/VBoxContainer/RequestUserConsent"); ResetConsentState = (Button) GetNode("Background/TabContainer/UMP/VBoxContainer/ResetConsentState"); Advice = (RichTextLabel) GetNode("Background/Advice"); Music = (AudioStreamPlayer) GetNode("Music"); BannerPosition = (CheckBox) GetNode("Background/TabContainer/Banner/VBoxContainer/Position"); BannerSizes = (ItemList) GetNode("Background/TabContainer/Banner/VBoxContainer/BannerSizes"); } private void _add_text_Advice_Node(String text_value) { Advice.BbcodeText += text_value + "\n"; } public override void _Ready() { GetAllNodes(); OS.CenterWindow(); Music.Play(); foreach(String banner_size in (IEnumerable) ((Godot.Object)MobileAds.Get("AdMobSettings")).Get("BANNER_SIZE")) { BannerSizes.AddItem(banner_size); } if (OS.GetName() == "Android" || OS.GetName() == "iOS"){ BannerPosition.Pressed = Convert.ToBoolean(((IDictionary) config["banner"])["position"]); MobileAds.Call("request_user_consent"); MobileAds.Connect("consent_info_update_failure", this, nameof(_on_MobileAds_consent_info_update_failure)); MobileAds.Connect("consent_status_changed", this, nameof(_on_MobileAds_consent_status_changed)); MobileAds.Connect("banner_loaded", this, nameof(_on_MobileAds_banner_loaded)); MobileAds.Connect("banner_destroyed", this, nameof(_on_MobileAds_banner_destroyed)); MobileAds.Connect("interstitial_loaded", this, nameof(_on_MobileAds_interstitial_loaded)); MobileAds.Connect("interstitial_closed", this, nameof(_on_MobileAds_interstitial_closed)); MobileAds.Connect("rewarded_ad_loaded", this, nameof(_on_MobileAds_rewarded_ad_loaded)); MobileAds.Connect("rewarded_ad_closed", this, nameof(_on_MobileAds_rewarded_ad_closed)); MobileAds.Connect("rewarded_interstitial_ad_loaded", this, nameof(_on_MobileAds_rewarded_interstitial_ad_loaded)); MobileAds.Connect("rewarded_interstitial_ad_closed", this, nameof(_on_MobileAds_rewarded_interstitial_ad_closed)); MobileAds.Connect("user_earned_rewarded", this, nameof(_on_MobileAds_user_earned_rewarded)); MobileAds.Connect("initialization_complete", this, nameof(_on_MobileAds_initialization_complete)); } else { _add_text_Advice_Node("AdMob only works on Android or iOS devices!"); } } private void _on_MobileAds_initialization_complete(int status, String _adapter_name) { if (status == (int)((IDictionary) ((Godot.Object)MobileAds.Get("AdMobSettings")).Get("INITIALIZATION_STATUS"))["READY"]) { MobileAds.Call("load_interstitial"); MobileAds.Call("load_rewarded"); MobileAds.Call("load_rewarded_interstitial"); _add_text_Advice_Node("AdMob initialized on C#! With parameters:"); _add_text_Advice_Node("is_for_child_directed_treatment: " + ((IDictionary) config["general"])["is_for_child_directed_treatment"].ToString()); _add_text_Advice_Node("is_test_europe_user_consent: " + ((IDictionary) config["general"])["is_test_europe_user_consent"].ToString()); _add_text_Advice_Node("max_ad_content_rating: " + ((IDictionary) config["general"])["max_ad_content_rating"].ToString()); _add_text_Advice_Node("instance_id: " + GetInstanceId().ToString()); EnableBanner.Disabled = false; BannerPosition.Disabled = false; RequestUserConsent.Disabled = false; ResetConsentState.Disabled = false; } else { _add_text_Advice_Node("AdMob not initialized, check your configuration"); } _add_text_Advice_Node("---------------------------------------------------"); } private void _on_MobileAds_interstitial_loaded() { _add_text_Advice_Node("Interstitial loaded"); Interstitial.Disabled = false; } private void _on_MobileAds_interstitial_closed() { MobileAds.Call("load_interstitial"); _add_text_Advice_Node("Interstitial closed"); } private void _on_Interstitial_pressed() { MobileAds.Call("show_interstitial"); Interstitial.Disabled = true; } private void reset_banner_buttons() { DisableBanner.Disabled = true; EnableBanner.Disabled = false; ShowBanner.Disabled = true; HideBanner.Disabled = true; } private void _on_MobileAds_banner_destroyed() { reset_banner_buttons(); _add_text_Advice_Node("Banner destroyed"); } private void _on_MobileAds_banner_loaded() { DisableBanner.Disabled = false; EnableBanner.Disabled = true; ShowBanner.Disabled = false; HideBanner.Disabled = false; _add_text_Advice_Node("Banner loaded"); _add_text_Advice_Node("Banner width: " + MobileAds.Call("get_banner_width")); _add_text_Advice_Node("Banner height: " + MobileAds.Call("get_banner_height")); _add_text_Advice_Node("Banner width in pixels: " + MobileAds.Call("get_banner_width_in_pixels")); _add_text_Advice_Node("Banner height in pixels: " + MobileAds.Call("get_banner_height_in_pixels")); } private void _on_EnableBanner_pressed() { EnableBanner.Disabled = true; MobileAds.Call("load_banner"); } private void _on_DisableBanner_pressed() { DisableBanner.Disabled = true; EnableBanner.Disabled = false; MobileAds.Call("destroy_banner"); } private void _on_Rewarded_pressed() { MobileAds.Call("show_rewarded"); Rewarded.Disabled = true; } private void _on_RewardedInterstitial_pressed() { MobileAds.Call("show_rewarded_interstitial"); RewardedInterstitial.Disabled = true; } private void _on_MobileAds_rewarded_ad_loaded() { _add_text_Advice_Node("Rewarded ad loaded"); Rewarded.Disabled = false; } private void _on_MobileAds_rewarded_ad_closed() { MobileAds.Call("load_rewarded"); _add_text_Advice_Node("Rewarded ad closed"); } private void _on_MobileAds_rewarded_interstitial_ad_loaded() { _add_text_Advice_Node("Rewarded Interstitial ad loaded"); RewardedInterstitial.Disabled = false; } private void _on_MobileAds_rewarded_interstitial_ad_closed() { MobileAds.Call("load_rewarded_interstitial"); _add_text_Advice_Node("Rewarded Interstitial ad closed"); } private void _on_MobileAds_user_earned_rewarded(String currency, int amount) { Advice.BbcodeText += "EARNED " + currency + " with amount: " + amount.ToString() + "\n"; } private void _on_MobileAds_consent_info_update_failure(int _error_code, String error_message) { _add_text_Advice_Node("Request Consent from European Users failure: " + error_message); _add_text_Advice_Node("---------------------------------------------------"); } private void _on_MobileAds_consent_status_changed(String status_message) { _add_text_Advice_Node(status_message); } private void _on_BannerSizes_item_selected(int index) { if ((bool) MobileAds.Call("get_is_initialized")) { String item_text = (String) BannerSizes.GetItemText(index); ((IDictionary)config["banner"])["size"] = index; _add_text_Advice_Node("Banner Size changed:" + item_text); if ((bool) MobileAds.Call("get_is_banner_loaded")) { MobileAds.Call("load_banner"); } } } private void _on_ResetConsentState_pressed() { MobileAds.Call("reset_consent_state", true); } private void _on_RequestUserConsent_pressed() { MobileAds.Call("request_user_consent"); } private void _on_Position_pressed() { ((IDictionary)config["banner"])["position"] = BannerPosition.Pressed; if ((bool)MobileAds.Call("get_is_banner_loaded")) { MobileAds.Call("load_banner"); } } private void _on_IsInitialized_pressed() { _add_text_Advice_Node("Is initialized: " + MobileAds.Call("get_is_initialized")); } private void _on_IsBannerLoaded_pressed() { _add_text_Advice_Node("Is Banner loaded: " + MobileAds.Call("get_is_banner_loaded")); } private void _on_IsInterstitialLoaded_pressed() { _add_text_Advice_Node("Is Interstitial loaded: " + MobileAds.Call("get_is_interstitial_loaded")); } private void _on_IsRewardedLoaded_pressed(){ _add_text_Advice_Node("Is Rewarded loaded: " + MobileAds.Call("get_is_rewarded_loaded")); } private void _on_IsRewardedInterstitialLoaded_pressed(){ _add_text_Advice_Node("Is RewardedInterstitial loaded: " + MobileAds.Call("get_is_rewarded_interstitial_loaded")); } private void _on_ShowBanner_pressed() { MobileAds.Call("show_banner"); } private void _on_HideBanner_pressed() { MobileAds.Call("hide_banner"); } }