From 12a8066fe3538c275ef9146e6de810e6e49f1405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesu=CC=81s=20Nun=CC=83o=20Garci=CC=81a?= Date: Thu, 7 Jun 2018 11:32:18 +0200 Subject: [PATCH] Removed default tag. Cleanup and many warnings removed. --- .../Android/Heyzap/AndroidManifest.xml | 36 +- Assets/Plugins/Heyzap/HZBannerAd.cs | 2 +- Assets/Plugins/Heyzap/HZDemographics.cs | 2 +- Assets/Plugins/Heyzap/HZIncentivizedAd.cs | 6 +- Assets/Plugins/Heyzap/HZInterstitialAd.cs | 6 +- Assets/Plugins/Heyzap/HZOfferwallAd.cs | 6 +- Assets/Plugins/Heyzap/HZShowOptions.cs | 10 +- Assets/Plugins/Heyzap/HZVideoAd.cs | 6 +- Assets/Plugins/Heyzap/HeyzapAds.cs | 20 +- Assets/Scripts/AdManager.cs | 357 ++++++++++-------- Assets/Scripts/ScrollingTextArea.cs | 33 +- Assets/Scripts/TestLocationService.cs | 8 +- ProjectSettings/GraphicsSettings.asset | Bin 4404 -> 4442 bytes ProjectSettings/ProjectSettings.asset | Bin 53563 -> 56559 bytes 14 files changed, 259 insertions(+), 233 deletions(-) diff --git a/Assets/Plugins/Android/Heyzap/AndroidManifest.xml b/Assets/Plugins/Android/Heyzap/AndroidManifest.xml index 6d2b2cc8..4165f251 100644 --- a/Assets/Plugins/Android/Heyzap/AndroidManifest.xml +++ b/Assets/Plugins/Android/Heyzap/AndroidManifest.xml @@ -1,20 +1,22 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/Assets/Plugins/Heyzap/HZBannerAd.cs b/Assets/Plugins/Heyzap/HZBannerAd.cs index f65f6d9d..21824442 100644 --- a/Assets/Plugins/Heyzap/HZBannerAd.cs +++ b/Assets/Plugins/Heyzap/HZBannerAd.cs @@ -39,7 +39,7 @@ public class HZBannerAd : MonoBehaviour { public delegate void AdDisplayListener(string state, string tag); private static AdDisplayListener adDisplayListener; - private static HZBannerAd _instance = null; + private static HZBannerAd _instance; // these are reproduced here for convenience since they were here in old SDK versions /// diff --git a/Assets/Plugins/Heyzap/HZDemographics.cs b/Assets/Plugins/Heyzap/HZDemographics.cs index 1c96bbcb..c8706444 100644 --- a/Assets/Plugins/Heyzap/HZDemographics.cs +++ b/Assets/Plugins/Heyzap/HZDemographics.cs @@ -37,7 +37,7 @@ namespace Heyzap { /// public class HZDemographics : MonoBehaviour { - private static HZDemographics _instance = null; + private static HZDemographics _instance; public enum Gender { UNKNOWN, diff --git a/Assets/Plugins/Heyzap/HZIncentivizedAd.cs b/Assets/Plugins/Heyzap/HZIncentivizedAd.cs index 1cc8ed2e..86dab1aa 100644 --- a/Assets/Plugins/Heyzap/HZIncentivizedAd.cs +++ b/Assets/Plugins/Heyzap/HZIncentivizedAd.cs @@ -38,7 +38,7 @@ public class HZIncentivizedAd : MonoBehaviour { public delegate void AdDisplayListener(string state, string tag); private static AdDisplayListener adDisplayListener; - private static HZIncentivizedAd _instance = null; + private static HZIncentivizedAd _instance; //provided since JS can't use default parameters /// @@ -52,8 +52,6 @@ public static void Fetch() { /// /// The ad tag to fetch an ad for. public static void Fetch(string tag) { - tag = HeyzapAds.TagForString(tag); - #if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IPHONE) #if UNITY_ANDROID HZIncentivizedAdAndroid.Fetch(tag); @@ -107,8 +105,6 @@ public static bool IsAvailable() { /// /// true, if an ad is available, false otherwise. public static bool IsAvailable(string tag) { - tag = HeyzapAds.TagForString(tag); - #if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IPHONE) #if UNITY_ANDROID return HZIncentivizedAdAndroid.IsAvailable(tag); diff --git a/Assets/Plugins/Heyzap/HZInterstitialAd.cs b/Assets/Plugins/Heyzap/HZInterstitialAd.cs index e50c9e58..727eba60 100644 --- a/Assets/Plugins/Heyzap/HZInterstitialAd.cs +++ b/Assets/Plugins/Heyzap/HZInterstitialAd.cs @@ -37,7 +37,7 @@ public class HZInterstitialAd : MonoBehaviour { public delegate void AdDisplayListener(string state, string tag); private static AdDisplayListener adDisplayListener; - private static HZInterstitialAd _instance = null; + private static HZInterstitialAd _instance; //provided since JS can't use default parameters /// @@ -80,8 +80,6 @@ public static void Fetch() { /// /// The ad tag to fetch an ad for. public static void Fetch(string tag) { - tag = HeyzapAds.TagForString(tag); - #if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IPHONE) #if UNITY_ANDROID HZInterstitialAdAndroid.Fetch(tag); @@ -107,8 +105,6 @@ public static bool IsAvailable() { /// /// true, if an ad is available, false otherwise. public static bool IsAvailable(string tag) { - tag = HeyzapAds.TagForString(tag); - #if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IPHONE) #if UNITY_ANDROID return HZInterstitialAdAndroid.IsAvailable(tag); diff --git a/Assets/Plugins/Heyzap/HZOfferwallAd.cs b/Assets/Plugins/Heyzap/HZOfferwallAd.cs index 5614d855..539531e4 100644 --- a/Assets/Plugins/Heyzap/HZOfferwallAd.cs +++ b/Assets/Plugins/Heyzap/HZOfferwallAd.cs @@ -46,7 +46,7 @@ public class HZOfferWallAd : MonoBehaviour { public delegate void VirtualCurrencyErrorListener(string errorMsg); private static VirtualCurrencyErrorListener virtualCurrencyErrorListener; - private static HZOfferWallAd _instance = null; + private static HZOfferWallAd _instance; //provided since JS can't use default parameters /// @@ -88,8 +88,6 @@ public static void Fetch() { /// /// The ad tag to fetch an ad for. public static void Fetch(string tag) { - tag = HeyzapAds.TagForString(tag); - #if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IPHONE) #if UNITY_ANDROID HZOfferWallAdAndroid.Fetch(tag); @@ -115,8 +113,6 @@ public static bool IsAvailable() { /// /// true, if an ad is available, false otherwise. public static bool IsAvailable(string tag) { - tag = HeyzapAds.TagForString(tag); - #if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IPHONE) #if UNITY_ANDROID return HZOfferWallAdAndroid.IsAvailable(tag); diff --git a/Assets/Plugins/Heyzap/HZShowOptions.cs b/Assets/Plugins/Heyzap/HZShowOptions.cs index 482e90d8..9d9abd78 100644 --- a/Assets/Plugins/Heyzap/HZShowOptions.cs +++ b/Assets/Plugins/Heyzap/HZShowOptions.cs @@ -17,14 +17,10 @@ public string Tag { return tag; } set { - if (value != null) { - tag = value; - } else { - tag = HeyzapAds.DEFAULT_TAG; - } + tag = value; } } - private string tag = HeyzapAds.DEFAULT_TAG; + private string tag; } /// @@ -108,4 +104,4 @@ public bool ShouldCloseAfterFirstClick { } private bool shouldCloseAfterFirstClick = HZOfferWallShowOptions.DEFAULT_SHOULD_CLOSE_AFTER_FIRST_CLICK; } -} \ No newline at end of file +} diff --git a/Assets/Plugins/Heyzap/HZVideoAd.cs b/Assets/Plugins/Heyzap/HZVideoAd.cs index 560c7bbd..8b1d22cf 100644 --- a/Assets/Plugins/Heyzap/HZVideoAd.cs +++ b/Assets/Plugins/Heyzap/HZVideoAd.cs @@ -39,7 +39,7 @@ public class HZVideoAd : MonoBehaviour { public delegate void AdDisplayListener(string state, string tag); private static AdDisplayListener adDisplayListener; - private static HZVideoAd _instance = null; + private static HZVideoAd _instance; //provided since JS can't use default parameters /// @@ -81,8 +81,6 @@ public static void Fetch() { /// /// The ad tag to fetch an ad for. public static void Fetch(string tag) { - tag = HeyzapAds.TagForString(tag); - #if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IPHONE) #if UNITY_ANDROID HZVideoAdAndroid.Fetch(tag); @@ -108,8 +106,6 @@ public static bool IsAvailable() { /// /// true, if an ad is available, false otherwise. public static bool IsAvailable(string tag) { - tag = HeyzapAds.TagForString(tag); - #if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IPHONE) #if UNITY_ANDROID return HZVideoAdAndroid.IsAvailable(tag); diff --git a/Assets/Plugins/Heyzap/HeyzapAds.cs b/Assets/Plugins/Heyzap/HeyzapAds.cs index c18b07ba..fc458e59 100644 --- a/Assets/Plugins/Heyzap/HeyzapAds.cs +++ b/Assets/Plugins/Heyzap/HeyzapAds.cs @@ -38,7 +38,7 @@ public class HeyzapAds : MonoBehaviour { public delegate void NetworkCallbackListener(string network, string callback); private static NetworkCallbackListener networkCallbackListener; - private static HeyzapAds _instance = null; + private static HeyzapAds _instance; #region Flags for the call to HeyzapAds.StartWithOptions() /// @@ -76,8 +76,6 @@ public class HeyzapAds : MonoBehaviour { /// public const int FLAG_CHILD_DIRECTED_ADS = 1 << 6; // 64 #endregion - - public const string DEFAULT_TAG = "default"; #region String constants to expect in Ad Listener & network callbacks // `NetworkCallback` is a bit of a misnomer. The callback constants here are both for "network callbacks" and for ad listener callbacks. We should refactor these into two classes in the next major SDK. @@ -300,7 +298,7 @@ public static void HideDebugLogs() { /// public static void ShowThirdPartyDebugLogs() { #if UNITY_IPHONE && !UNITY_EDITOR - HeyzapAdsIOS.ShowThirdPartyDebugLogs(); + HeyzapAdsIOS.ShowThirdPartyDebugLogs(); #endif } @@ -310,7 +308,7 @@ public static void ShowThirdPartyDebugLogs() { /// public static void HideThirdPartyDebugLogs() { #if UNITY_IPHONE && !UNITY_EDITOR - HeyzapAdsIOS.HideThirdPartyDebugLogs(); + HeyzapAdsIOS.HideThirdPartyDebugLogs(); #endif } @@ -337,7 +335,7 @@ public static void SetBundleIdentifier(string bundleID) { /// The Device ID that FAN prints to the iOS console public static void AddFacebookTestDevice(string device_id) { #if UNITY_IPHONE && !UNITY_EDITOR - HeyzapAdsIOS.AddFacebookTestDevice(device_id); + HeyzapAdsIOS.AddFacebookTestDevice(device_id); #endif } #endregion @@ -354,21 +352,13 @@ protected static void SetNetworkCallback(string network, string callback) { } } - public static void InitReceiver(){ + public static void InitReceiver() { if (_instance == null) { GameObject receiverObject = new GameObject("HeyzapAds"); DontDestroyOnLoad(receiverObject); _instance = receiverObject.AddComponent(); } } - - public static string TagForString(string tag) { - if (tag == null) { - tag = HeyzapAds.DEFAULT_TAG; - } - - return tag; - } #endregion } diff --git a/Assets/Scripts/AdManager.cs b/Assets/Scripts/AdManager.cs index 6dfd7d32..f9b5c4ba 100644 --- a/Assets/Scripts/AdManager.cs +++ b/Assets/Scripts/AdManager.cs @@ -1,10 +1,9 @@ using UnityEngine; using UnityEngine.UI; -using UnityEngine.Assertions.Must; using Heyzap; -public class AdManager : MonoBehaviour { - +public class AdManager : MonoBehaviour +{ [SerializeField] private Text adTagTextField; [SerializeField] @@ -18,9 +17,10 @@ public class AdManager : MonoBehaviour { [SerializeField] private Toggle offerwallCloseOnFirstClickToggle; [SerializeField] - private Text offerwallCurrencyIdTextField; + private readonly Text offerwallCurrencyIdTextField; - private enum AdType { + private enum AdType + { Interstitial, Video, Incentivized, @@ -29,32 +29,38 @@ private enum AdType { } private AdType _selectedAdType; - private AdType SelectedAdType { + private AdType SelectedAdType + { get { return _selectedAdType; } - set { + set + { _selectedAdType = value; - this.console.Append("AdType: " + value.ToString()); + console.Append("AdType: " + value.ToString()); ShowAdTypeControls(); } } private string bannerPosition; - public void UpdateLocation(float latitude, float longitude, float horizAcc, float vertAcc, float alt, double timestamp) { + public void UpdateLocation(float latitude, float longitude, float horizAcc, float vertAcc, float alt, double timestamp) + { //HZDemographics.SetUserLocation(latitude, longitude, horizAcc, vertAcc, alt, timestamp); } - void Awake() { - this.adTagTextField.MustNotBeNull(); - this.bannerControls.MustNotBeNull(); - this.standardControls.MustNotBeNull(); - this.offerwallControls.MustNotBeNull(); - this.console.MustNotBeNull(); + void Awake() + { + UnityEngine.Assertions.Assert.IsNotNull(adTagTextField); + UnityEngine.Assertions.Assert.IsNotNull(bannerControls); + UnityEngine.Assertions.Assert.IsNotNull(standardControls); + UnityEngine.Assertions.Assert.IsNotNull(offerwallControls); + UnityEngine.Assertions.Assert.IsNotNull(console); } - void Start () { - HeyzapAds.NetworkCallbackListener networkCallbackListener = delegate(string network, string callback) { - this.console.Append("[" + network + "]: " + callback); + void Start() + { + HeyzapAds.NetworkCallbackListener networkCallbackListener = delegate (string network, string callback) + { + console.Append("[" + network + "]: " + callback); }; // HZDemographics.SetUserGender(HZDemographics.Gender.MALE); @@ -66,128 +72,158 @@ void Start () { // UnityEngine.Debug.Log ("calling loc service"); // TestLocationService locServ = new TestLocationService(); - // locServ.Start(this.console); + // locServ.Start(console); - HeyzapAds.SetNetworkCallbackListener(networkCallbackListener); - HeyzapAds.ShowDebugLogs(); - HeyzapAds.Start("ENTER_YOUR_PUBLISHER_ID_HERE", HeyzapAds.FLAG_NO_OPTIONS); + HeyzapAds.SetNetworkCallbackListener(networkCallbackListener); + HeyzapAds.ShowDebugLogs(); + HeyzapAds.Start("ENTER_YOUR_PUBLISHER_ID_HERE", HeyzapAds.FLAG_NO_OPTIONS); - HZBannerAd.SetDisplayListener(delegate(string adState, string adTag) { - this.console.Append("BANNER: " + adState + " Tag : " + adTag); - if (adState == "loaded") { + HZBannerAd.SetDisplayListener(delegate (string adState, string adTag) + { + console.Append("BANNER: " + adState + " Tag : " + adTag); + if (adState == "loaded") + { Rect dimensions = new Rect(); HZBannerAd.GetCurrentBannerDimensions(out dimensions); - this.console.Append(string.Format(" (x,y): ({0},{1}) - WxH: {2}x{3}", dimensions.x, dimensions.y, dimensions.width, dimensions.height)); + console.Append(string.Format(" (x,y): ({0},{1}) - WxH: {2}x{3}", dimensions.x, dimensions.y, dimensions.width, dimensions.height)); } }); - HZInterstitialAd.SetDisplayListener(delegate(string adState, string adTag) { - this.console.Append("INTERSTITIAL: " + adState + " Tag : " + adTag); + HZInterstitialAd.SetDisplayListener(delegate (string adState, string adTag) + { + console.Append("INTERSTITIAL: " + adState + " Tag : " + adTag); }); - HZIncentivizedAd.SetDisplayListener(delegate(string adState, string adTag) { - this.console.Append("INCENTIVIZED: " + adState + " Tag : " + adTag); + HZIncentivizedAd.SetDisplayListener(delegate (string adState, string adTag) + { + console.Append("INCENTIVIZED: " + adState + " Tag : " + adTag); }); - HZVideoAd.SetDisplayListener(delegate(string adState, string adTag) { - this.console.Append("VIDEO: " + adState + " Tag : " + adTag); + HZVideoAd.SetDisplayListener(delegate (string adState, string adTag) + { + console.Append("VIDEO: " + adState + " Tag : " + adTag); }); - HZOfferWallAd.SetDisplayListener(delegate(string adState, string adTag) { - this.console.Append("OFFERWALL: " + adState + " Tag : " + adTag); + HZOfferWallAd.SetDisplayListener(delegate (string adState, string adTag) + { + console.Append("OFFERWALL: " + adState + " Tag : " + adTag); }); - HZOfferWallAd.SetVirtualCurrencyResponseListener(delegate(VirtualCurrencyResponse response) { - this.console.Append("OFFERWALL VCS Response: id:" + response.CurrencyID + " name: '" + response.CurrencyName + "' amount : " + response.DeltaOfCurrency + " trans: " + response.LatestTransactionID); + HZOfferWallAd.SetVirtualCurrencyResponseListener(delegate (VirtualCurrencyResponse response) + { + console.Append("OFFERWALL VCS Response: id:" + response.CurrencyID + " name: '" + response.CurrencyName + "' amount : " + response.DeltaOfCurrency + " trans: " + response.LatestTransactionID); }); - HZOfferWallAd.SetVirtualCurrencyErrorListener(delegate(string errorMsg) { - this.console.Append("OFFERWALL VCS Error: " + errorMsg); + HZOfferWallAd.SetVirtualCurrencyErrorListener(delegate (string errorMsg) + { + console.Append("OFFERWALL VCS Error: " + errorMsg); }); // UI defaults - this.bannerPosition = HZBannerShowOptions.POSITION_TOP; - this.SelectedAdType = AdType.Interstitial; + bannerPosition = HZBannerShowOptions.POSITION_TOP; + SelectedAdType = AdType.Interstitial; - this.ShowAdTypeControls(); + ShowAdTypeControls(); } - public void InterstitialSelected(bool selected) { - if (selected) { - this.SelectedAdType = AdType.Interstitial; + public void InterstitialSelected(bool selected) + { + if (selected) + { + SelectedAdType = AdType.Interstitial; } } - public void VideoSelected(bool selected) { - if (selected) { - this.SelectedAdType = AdType.Video; + public void VideoSelected(bool selected) + { + if (selected) + { + SelectedAdType = AdType.Video; } } - public void IncentivizedSelected(bool selected) { - if (selected) { - this.SelectedAdType = AdType.Incentivized; + public void IncentivizedSelected(bool selected) + { + if (selected) + { + SelectedAdType = AdType.Incentivized; } } - public void BannerSelected(bool selected) { - if (selected) { - this.SelectedAdType = AdType.Banner; + public void BannerSelected(bool selected) + { + if (selected) + { + SelectedAdType = AdType.Banner; } } - public void OfferwallSelected(bool selected) { - if (selected) { - this.SelectedAdType = AdType.Offerwall; + public void OfferwallSelected(bool selected) + { + if (selected) + { + SelectedAdType = AdType.Offerwall; } } - public void IsAvailableButton() { - string tag = this.adTag(); + public void IsAvailableButton() + { + string tagText = adTagTextField.text; bool available = false; - switch (this.SelectedAdType) { - case AdType.Interstitial: - available = HZInterstitialAd.IsAvailable(tag); - break; - case AdType.Video: - available = HZVideoAd.IsAvailable(tag); - break; - case AdType.Incentivized: - available = HZIncentivizedAd.IsAvailable(tag); - break; - case AdType.Banner: - // Not applicable - break; - case AdType.Offerwall: - available = HZOfferWallAd.IsAvailable(tag); - break; + switch (SelectedAdType) + { + case AdType.Interstitial: + available = HZInterstitialAd.IsAvailable(tagText); + break; + case AdType.Video: + available = HZVideoAd.IsAvailable(tagText); + break; + case AdType.Incentivized: + available = HZIncentivizedAd.IsAvailable(tagText); + break; + case AdType.Banner: + // Not applicable + break; + case AdType.Offerwall: + available = HZOfferWallAd.IsAvailable(tagText); + break; } string availabilityMessage = available ? "available" : "not available"; - this.console.Append(this.SelectedAdType.ToString() + " with tag: " + tag + " is " + availabilityMessage); + console.Append(SelectedAdType.ToString() + " with tag: " + tagText + " is " + availabilityMessage); } - public void ShowButton() { - string tag = this.adTag(); + public void ShowButton() + { + string tagText = adTagTextField.text; - HZShowOptions showOptions = new HZShowOptions(); - showOptions.Tag = tag; + HZShowOptions showOptions = new HZShowOptions + { + Tag = tagText + }; - HZIncentivizedShowOptions incentivizedOptions = new HZIncentivizedShowOptions(); - incentivizedOptions.Tag = tag; - incentivizedOptions.IncentivizedInfo = "test app incentivized info!"; + HZIncentivizedShowOptions incentivizedOptions = new HZIncentivizedShowOptions + { + Tag = tagText, + IncentivizedInfo = "test app incentivized info!" + }; - HZBannerShowOptions bannerOptions = new HZBannerShowOptions(); - bannerOptions.Tag = tag; - bannerOptions.Position = this.bannerPosition; + HZBannerShowOptions bannerOptions = new HZBannerShowOptions + { + Tag = tagText, + Position = bannerPosition + }; - HZOfferWallShowOptions offerwallOptions = new HZOfferWallShowOptions(); - offerwallOptions.ShouldCloseAfterFirstClick = offerwallCloseOnFirstClickToggle.isOn; - offerwallOptions.Tag = tag; + HZOfferWallShowOptions offerwallOptions = new HZOfferWallShowOptions + { + ShouldCloseAfterFirstClick = offerwallCloseOnFirstClickToggle.isOn + Tag = tag + }; - this.console.Append("Showing " + this.SelectedAdType.ToString() + " with tag: " + tag); - switch (this.SelectedAdType) { + console.Append("Showing " + SelectedAdType.ToString() + " with tag: " + tagText); + switch (SelectedAdType) + { case AdType.Interstitial: HZInterstitialAd.ShowWithOptions(showOptions); break; @@ -206,117 +242,132 @@ public void ShowButton() { } } - public void FetchButton() { - string tag = this.adTag(); - this.console.Append("Fetching " + this.SelectedAdType.ToString() + " with tag: " + tag); - switch(this.SelectedAdType) { + public void FetchButton() + { + string tagText = adTagTextField.text; + console.Append("Fetching " + SelectedAdType.ToString() + " with tag: " + tagText); + switch (SelectedAdType) + { case AdType.Interstitial: - HZInterstitialAd.Fetch(tag); + HZInterstitialAd.Fetch(tagText); break; case AdType.Video: - HZVideoAd.Fetch(tag); + HZVideoAd.Fetch(tagText); break; case AdType.Incentivized: - HZIncentivizedAd.Fetch(tag); + HZIncentivizedAd.Fetch(tagText); break; case AdType.Offerwall: - HZOfferWallAd.Fetch(tag); + HZOfferWallAd.Fetch(tagText); break; } } - public void HideButton() { - if (this.SelectedAdType == AdType.Banner) { - this.console.Append("Hiding Banner"); + public void HideButton() + { + if (SelectedAdType == AdType.Banner) + { + console.Append("Hiding Banner"); HZBannerAd.Hide(); } } - public void DestroyButton() { - if (this.SelectedAdType == AdType.Banner) { - this.console.Append("Destroying Banner"); + public void DestroyButton() + { + if (SelectedAdType == AdType.Banner) + { + console.Append("Destroying Banner"); HZBannerAd.Destroy(); } } - public void RemoteDataButton() { - this.console.Append("Remote data: " + HeyzapAds.GetRemoteData()); + public void RemoteDataButton() + { + console.Append("Remote data: " + HeyzapAds.GetRemoteData()); } - public void DebugLogSwitch(bool on) { - if (on) { - this.console.Append("Enabling debug logging"); + public void DebugLogSwitch(bool on) + { + if (on) + { + console.Append("Enabling debug logging"); HeyzapAds.ShowDebugLogs(); - } else { - this.console.Append("Disabling debug logging"); + } + else + { + console.Append("Disabling debug logging"); HeyzapAds.HideDebugLogs(); } - } + } public void AcceptGdprButton() - { - this.console.Append("Accepting GDPR"); - HeyzapAds.SetGdprConsent(true); - } + { + console.Append("Accepting GDPR"); + HeyzapAds.SetGdprConsent(true); + } public void RejectGdprButton() { - this.console.Append("Rejecting GDPR"); + console.Append("Rejecting GDPR"); HeyzapAds.SetGdprConsent(false); } - public void BannerPositionTop(bool selected) { - if (selected) { - this.bannerPosition = HZBannerShowOptions.POSITION_TOP; + public void BannerPositionTop(bool selected) + { + if (selected) + { + bannerPosition = HZBannerShowOptions.POSITION_TOP; } } - public void BannerPositionBottom(bool selected) { - if (selected) { - this.bannerPosition = HZBannerShowOptions.POSITION_BOTTOM; + public void BannerPositionBottom(bool selected) + { + if (selected) + { + bannerPosition = HZBannerShowOptions.POSITION_BOTTOM; } } - public void VCSRequestButton() { - HZOfferWallAd.RequestDeltaOfCurrency(this.currencyId()); + public void VCSRequestButton() + { + HZOfferWallAd.RequestDeltaOfCurrency(CurrencyId()); } - public void ShowMediationTest() { - this.console.Append("Showing mediation test suite"); + public void ShowMediationTest() + { + console.Append("Showing mediation test suite"); HeyzapAds.ShowMediationTestSuite(); } - private void ShowAdTypeControls() { - if (this.SelectedAdType == AdType.Banner) { - this.bannerControls.SetActive(true); - this.standardControls.SetActive(false); - this.offerwallControls.SetActive(false); - } else if (this.SelectedAdType == AdType.Offerwall) { - this.bannerControls.SetActive(false); - this.offerwallControls.SetActive(true); - this.standardControls.SetActive(false); - } else { - this.bannerControls.SetActive(false); - this.offerwallControls.SetActive(false); - this.standardControls.SetActive(true); + private void ShowAdTypeControls() + { + if (SelectedAdType == AdType.Banner) + { + bannerControls.SetActive(true); + standardControls.SetActive(false); + offerwallControls.SetActive(false); } - } - - private string adTag() { - string tag = this.adTagTextField.text; - if (tag == null || tag.Trim().Length == 0) { - return "default"; - } else { - return tag; + else if (SelectedAdType == AdType.Offerwall) + { + bannerControls.SetActive(false); + offerwallControls.SetActive(true); + standardControls.SetActive(false); + } + else + { + bannerControls.SetActive(false); + offerwallControls.SetActive(false); + standardControls.SetActive(true); } } - private string currencyId() { - string currencyId = this.offerwallCurrencyIdTextField.text; - if (currencyId == null || tag.Trim().Length == 0) { + private string CurrencyId() + { + string currencyId = offerwallCurrencyIdTextField.text; + if (currencyId == null || tag.Trim().Length == 0) + { return null; - } else { - return currencyId; } + return currencyId; } } diff --git a/Assets/Scripts/ScrollingTextArea.cs b/Assets/Scripts/ScrollingTextArea.cs index 7505e1cf..5fcb120f 100644 --- a/Assets/Scripts/ScrollingTextArea.cs +++ b/Assets/Scripts/ScrollingTextArea.cs @@ -1,8 +1,7 @@ using UnityEngine; -using System.Collections; -using UnityEngine.UI; -public class ScrollingTextArea : MonoBehaviour { +public class ScrollingTextArea : MonoBehaviour +{ public Vector2 scrollPosition; private string text = ""; @@ -14,24 +13,29 @@ public class ScrollingTextArea : MonoBehaviour { private Texture2D consoleBackgroundTexture; private GUIStyle consoleTextStyle; private GUIStyle consoleBackgroundStyle; - void Start () { - consoleBackgroundTexture = new Texture2D(1,1); - for(var i = 0; i < consoleBackgroundTexture.width; i++) + + void Start() + { + consoleBackgroundTexture = new Texture2D(1, 1); + for (var i = 0; i < consoleBackgroundTexture.width; i++) { - for(var j = 0; j < consoleBackgroundTexture.height; j++) + for (var j = 0; j < consoleBackgroundTexture.height; j++) { consoleBackgroundTexture.SetPixel(i, j, new Color(0f, 0f, 0f, 0.7f)); } } - consoleTextStyle = new GUIStyle(); - consoleTextStyle.fontSize = 28; + consoleTextStyle = new GUIStyle + { + fontSize = 28 + }; consoleTextStyle.normal.textColor = Color.white; consoleTextStyle.richText = true; consoleBackgroundStyle = new GUIStyle(); consoleBackgroundStyle.normal.background = consoleBackgroundTexture; } - void OnGUI() { + void OnGUI() + { GUI.skin.verticalScrollbar.fixedWidth = Screen.width * 0.05f; GUI.skin.verticalScrollbarThumb.fixedWidth = Screen.width * 0.05f; @@ -39,15 +43,16 @@ void OnGUI() { GUI.skin.horizontalScrollbarThumb.fixedHeight = Screen.width * 0.035f; - GUI.BeginGroup(new Rect (xPadding, Screen.height - height - yPadding, Screen.width-xPadding*2, height), consoleBackgroundStyle); - scrollPosition = GUILayout.BeginScrollView(scrollPosition, false/*horizontal scroll bar*/, true/*vertical scroll bar*/, GUILayout.Width(Screen.width-xPadding*2), GUILayout.Height(height)); + GUI.BeginGroup(new Rect(xPadding, Screen.height - height - yPadding, Screen.width - xPadding * 2, height), consoleBackgroundStyle); + scrollPosition = GUILayout.BeginScrollView(scrollPosition, false/*horizontal scroll bar*/, true/*vertical scroll bar*/, GUILayout.Width(Screen.width - xPadding * 2), GUILayout.Height(height)); GUILayout.Label(text, consoleTextStyle); GUILayout.EndScrollView(); - + GUI.EndGroup(); } - public void Append(string append, bool newline=true) { + public void Append(string append, bool newline = true) + { if (newline && this.text.Length > 0) this.text += "\n"; this.text += "[" + System.DateTime.UtcNow.ToString("HH:mm:ss") + "] "; diff --git a/Assets/Scripts/TestLocationService.cs b/Assets/Scripts/TestLocationService.cs index 8c6078fe..82ca06fe 100644 --- a/Assets/Scripts/TestLocationService.cs +++ b/Assets/Scripts/TestLocationService.cs @@ -1,19 +1,17 @@ using UnityEngine; -using UnityEngine.UI; using System.Collections; -using Heyzap; public class TestLocationService : MonoBehaviour { [SerializeField] - private ScrollingTextArea console; + private readonly ScrollingTextArea console; [SerializeField] - private AdManager adManager; + private readonly AdManager adManager; public IEnumerator Start() { - UnityEngine.Debug.Log ("location service start"); + UnityEngine.Debug.Log("location service start"); // First, check if user has location service enabled // if (!Input.location.isEnabledByUser){ // console.Append("Location disabled by user... quitting"); diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index 257173edc8754ee7542acb65f891c840e7a98ca7..a903310af8faa16bad880f8781366d5cf603c82b 100644 GIT binary patch literal 4442 zcmZ{nNo*WN6o#uEI|~F7!cG>l0D(Z9#DNe(NXAPRC!R2g7a%OAW~S`vq^Eo6?!h() z(QrUQf&({%KuRtg5GSN?0x1$4IB-D%Ar8O^PH;ycVgA3Wx~HcnJgcUwzIyfkT3#;} zV%=Xt+;m>xM~L<7aTP;*_Z=MEH@J6hNc_9JyzDq&TiCI@{J~EjUcOQtKeF@7q70cA`+T4~6ES_6uSRp-%r5 zgfQ~Qa6OJfE%wnIc+mez)X4@kOEe#Z?$cD0qbt#-?kW^oQI}(AMcp+9_vl`y zeS3AU&$!WDK%2Vheie0ZKp(BBd!xZUy6d!WuP!yPF?x0H%DB<}6m9BmM4=URHyPZc zyE)_Cx=eqwpDRQ@ukOyc(ftB#>TX4$6?L~6+@rfaN4Lhz@PWTZbFzN`n&GyLCq4)^ZUOi<7Pg8piSMqxL#{MnAbJu!{-f+^WnoQozH$v zd*}18_U)a|BN=zZu|AP(#siP*I*`RN&$sk>h36$S8K7!0!7yB=zj4Ov%VMw_!^ zYEFfrs*C1qIjAd9sl?%7<8=hg)KEF@dTM+Om5PiTx{{7Or{+9Wi`~GFIG`3Pu0nKscf1Wo;=P05GOnapO!7Hl@e@a=_s;h!TX_-<@y7C#4tYv3_*ilc7R=*jtcG z(YRmp+I3YobEAJHR9=9EWhl3b85z3Lk4FQ~&QdR{6}qvCFeBOa;Y-j!s3g*)sZNZKR;H&TIj=-J!Zgz(u7p8VjRcFhUNDD#t$q)&5t&^l$IkIGref)O z=ETdgMKmg-T6$)|0$?OsA+vG+(1;tGy%QCunJP3!qRzr?Z z&YZnTx8XLmC))VIzCced<{D_x|q<5|*=skGhs$T9sTJ0$HlAA_ck%zQL<+MSOf!}v0xrQ`KW3hgzPb^bXA z;Fl~+`{wF>x%!4(9iJ_^dSWNSv2W(;jS=I|U-tFcF&$d0B}db_7JHo3vX1`%?rz)n literal 4404 zcmeH~xpN#v6vlhjvN4AN8_Z=a%#94lmJflkEmo&(ESa?>iyP6}ZAs&r-PxL*ElCu? z7DY%vNaD~$1e9aQslp+o1Q3uAQAJTCi0|u5b8PVkP=0oox_|xpeXo07k48f5*(1c> z6GDjlgt#9+gg7~TVt8a_MEtY0wG{*agJ?H?y?*G{cN0TLKNcvhLlU8{Kt` zsmndkin@3T+KRgOdY<1eo)%)1b*Yg(=g%=F|G0M7+d2V#S#+bSX&}c>7#|GJ;3iudRR&C0q% zo(JM5+^-)o=6yempET$OBe;)jPEK>3JZgE24K0PTbe1 zk7M3%?tO*#rHxa`?dw&~12Kvib7*{5@vKCTYbs(Ey#_e`i`U4jhVy;+F(A+RG&#)q ze_{R480`5smY*fB(%wRmm%le?jyv6RgjI4=KYv4)^>d!Qr~PyFe8F>bPhI`IK@Ma6?5~*mVVsME zJ@Nr@9<_f2bL4n-mha5Pp92o6^xviH-^IT~uG=ng87o@J=L&h%@NE6elf#_9tDgmfJ$L7MmAqDr|@Y08N6b1|1MB1)WS|8R9JJujnJuWfZ^BAF=k$D?(**}2fFN8N^MnB3@J zOH>qNV;*I8u_%*Jw$jNsvRUeFwUaPa9b_cCQ93761*b^VBAKorD-$_$N_nuf5UONE zbUSKNcIr+yUZ0cgj_9Pa)sTrz<#Ja>VY*4*?Q^On@v@qTH}LbCIk|rGk!m&Y=&-#$ z>c{%y~8G%LGrRxMs5@n_<0gI5YJhQN2SZIC5q# zv&cen({?<)(asHy>3fRX#p~+q1O|f`4C1A$S$2|t>Uc|3C+;S7)j85_p&*u)&3#-_ z8)>31t@pg$xqSlv#}nYyVB7wLGUM$}8#Auj%{zbn324`njTPqgCs1ZSEX=RiG5_S| zdVZ$R*mvKrTFZXRvR}#c_Z_CA@gL0edo~gJf9jI5eiiG-by?Gz7G(R*CvXPvFG6M~ A1ONa4 diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 42a312fdaa92b4376cabec791d1290ed73c514b3..659666f4ce80017124ab76578e0ade47a5367df5 100644 GIT binary patch literal 56559 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 OXK