From 77e3605b778408373b60880e2b534bfdba18accb Mon Sep 17 00:00:00 2001 From: Seraph Date: Wed, 27 Apr 2022 19:07:49 +0300 Subject: [PATCH] =?UTF-8?q?-=20=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8F=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BA=D1=83=D0=BF=D0=BE=D0=BA=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B2=D1=96=D0=B4=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8F=20=D1=80=D0=B5=D0=BA=D0=BB=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assembly-CSharp.csproj | 7 +- Assets/Prototype/Core/Core.dll | Bin 33792 -> 36352 bytes Assets/Prototype/Core/CoreEditor.dll | Bin 20480 -> 21504 bytes .../Resources/CoreSettings.asset | 4 +- .../Prototype/Custumization/Scenes/Test.unity | 218 ++++++++++++++++++ Assets_DLL/Core/Ads/AdsManager.cs | 40 +++- .../Bridges/DemoAds/DemoInterstitialAds.cs | 11 +- .../Ads/Bridges/DemoAds/DemoRewardedAds.cs | 22 +- Assets_DLL/Core/Ads/RewardedButton.cs | 24 ++ Assets_DLL/Core/Audio/AudioController.cs | 2 +- Assets_DLL/Core/CoreInitializer.cs | 4 +- Assets_DLL/Core/IAP/PurchaseButton.cs | 46 ++++ Assets_DLL/Core/IAP/PurchaseManager.cs | 72 ++++++ Assets_DLL/Core/IAP/PurchaseManagerBase.cs | 32 +-- .../Core/Localization/LocalizationManager.cs | 2 +- .../Core/SceneManagement/SceneLoader.cs | 2 +- Assets_DLL/Core/Settings/CoreSettingsData.cs | 1 + .../Core.csproj.AssemblyReference.cache | Bin 7418 -> 7418 bytes .../Core.csproj.CoreCompileInputs.cache | 2 +- .../Core/obj/Debug/netstandard2.0/Core.dll | Bin 33792 -> 36352 bytes .../CoreEditor/IAP/PurchaseButtonEditor.cs | 47 ++++ .../Localization/TextLocalizatorEditor.cs | 4 + .../SceneManagement/LoadSceneButtonEditor.cs | 4 + .../CoreEditor/Settings/CoreSettingsWindow.cs | 20 +- .../CoreEditor.csproj.AssemblyReference.cache | Bin 993 -> 993 bytes .../CoreEditor.csproj.CopyComplete | 0 .../CoreEditor.csproj.CoreCompileInputs.cache | 2 +- .../obj/Debug/netstandard2.0/CoreEditor.dll | Bin 20480 -> 21504 bytes Packages/manifest.json | 2 +- Packages/packages-lock.json | 2 +- 30 files changed, 517 insertions(+), 53 deletions(-) create mode 100644 Assets_DLL/Core/IAP/PurchaseButton.cs create mode 100644 Assets_DLL/Core/IAP/PurchaseManager.cs create mode 100644 Assets_DLL/CoreEditor/IAP/PurchaseButtonEditor.cs create mode 100644 Assets_DLL/CoreEditor/obj/Debug/netstandard2.0/CoreEditor.csproj.CopyComplete diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 18ea03f..899389e 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -1,7 +1,7 @@  - latest + 7.3 Debug @@ -47,11 +47,14 @@ {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Package - 2.0.11 + 2.0.15 Game:1 Android:13 2019.4.28f1 + + + diff --git a/Assets/Prototype/Core/Core.dll b/Assets/Prototype/Core/Core.dll index ebedf0d0b323f904b5efda42b4f7844a65b16a10..84df8571016f3c1aa7804d9aca549c408a914fe5 100644 GIT binary patch literal 36352 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 literal 33792 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 delta 5662 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 + { + if (!CoreSettings.data.nonConsumableProducts.Contains(productId)) + return; + + if (CoreSettings.data.nonConsumableProductsDisableAds[CoreSettings.data.nonConsumableProducts.IndexOf(productId)]) + HideBanner(); + }; } if (CoreSettings.data.needRewarded) @@ -69,10 +79,26 @@ namespace Core.Ads if (_rewarded == null) throw new NullReferenceException("ads bridge object does not implement IRewardedBridge"); } + + + } + + public static bool IsAdsDisabled() + { + for (int i = 0; i < CoreSettings.data.nonConsumableProducts.Count; i++) + { + if (CoreSettings.data.nonConsumableProductsDisableAds[i] && PurchaseManager.IsProductPurchased(CoreSettings.data.nonConsumableProducts[i])) + return true; + } + + return false; } public static bool IsInterstitialReady() { + if (IsAdsDisabled()) + return false; + if (_interstitial == null) throw new NullReferenceException("ads bridge object does not implement IInterstitialBridge"); @@ -95,6 +121,9 @@ namespace Core.Ads public static void ShowInterstitial() { + if (IsAdsDisabled()) + return; + if (_interstitial == null) throw new NullReferenceException("ads bridge object does not implement IInterstitialBridge"); @@ -106,6 +135,9 @@ namespace Core.Ads public static bool IsRewardedReady() { + if (IsAdsDisabled()) + return false; + if (_rewarded == null) throw new NullReferenceException("ads bridge object does not implement IRewardedBridge"); @@ -117,6 +149,9 @@ namespace Core.Ads public static void ShowRewarded(Action onSucces, Action onFailed) { + if (IsAdsDisabled()) + return; + if (_rewarded == null) throw new NullReferenceException("ads bridge object does not implement IRewardedBridge"); @@ -141,6 +176,9 @@ namespace Core.Ads public static void ShowBanner(BannerPositions position) { + if (IsAdsDisabled()) + return; + if (_banner == null) throw new NullReferenceException("ads bridge object does not implement IBannerBridge"); diff --git a/Assets_DLL/Core/Ads/Bridges/DemoAds/DemoInterstitialAds.cs b/Assets_DLL/Core/Ads/Bridges/DemoAds/DemoInterstitialAds.cs index 221008a..a3d4a55 100644 --- a/Assets_DLL/Core/Ads/Bridges/DemoAds/DemoInterstitialAds.cs +++ b/Assets_DLL/Core/Ads/Bridges/DemoAds/DemoInterstitialAds.cs @@ -19,7 +19,10 @@ namespace Core.Ads.Bridges.DemoAds if (_isVisible) { if (GUI.Button(new Rect(0f, 0f, Screen.width, Screen.height), "Interstitial Demo Ads")) - CloseInterstitial(); + { + _isVisible = false; + OnEnded?.Invoke(); + } } } @@ -43,12 +46,6 @@ namespace Core.Ads.Bridges.DemoAds Debug.LogError("AdsManager: Interstitial ads is not ready"); } - private void CloseInterstitial() - { - _isVisible = false; - OnEnded?.Invoke(); - } - private IEnumerator InterstitialTimer() { _isInterstitialReady = false; diff --git a/Assets_DLL/Core/Ads/Bridges/DemoAds/DemoRewardedAds.cs b/Assets_DLL/Core/Ads/Bridges/DemoAds/DemoRewardedAds.cs index 2fb082d..98baf3d 100644 --- a/Assets_DLL/Core/Ads/Bridges/DemoAds/DemoRewardedAds.cs +++ b/Assets_DLL/Core/Ads/Bridges/DemoAds/DemoRewardedAds.cs @@ -16,10 +16,16 @@ namespace Core.Ads.Bridges.DemoAds if (_isVisible) { if (GUI.Button(new Rect(0f, 0f, Screen.width, Screen.height / 2f), "Rewarded success")) - OnSuccesClick(); + { + onSucces?.Invoke(); + _isVisible = false; + } if (GUI.Button(new Rect(0f, Screen.height / 2f, Screen.width, Screen.height / 2f), "Rewarded close")) - OnFailedClick(); + { + onFailed?.Invoke(); + _isVisible = false; + } } } @@ -32,17 +38,5 @@ namespace Core.Ads.Bridges.DemoAds _isVisible = true; } - - private void OnSuccesClick() - { - onSucces?.Invoke(); - _isVisible = false; - } - - private void OnFailedClick() - { - onFailed?.Invoke(); - _isVisible = false; - } } } \ No newline at end of file diff --git a/Assets_DLL/Core/Ads/RewardedButton.cs b/Assets_DLL/Core/Ads/RewardedButton.cs index ebe2d22..70d5b94 100644 --- a/Assets_DLL/Core/Ads/RewardedButton.cs +++ b/Assets_DLL/Core/Ads/RewardedButton.cs @@ -1,4 +1,6 @@ using Core.Ads; +using Core.IAP; +using Core.Settings; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; @@ -31,5 +33,27 @@ namespace Core.Ads ); }); } + + private void OnEnable() + { + PurchaseManager.OnPurchaseSuccess += CheckAdsEnablingAfterPurchasing; + + if (AdsManager.IsAdsDisabled()) + gameObject.SetActive(false); + } + + private void OnDisable() + { + PurchaseManager.OnPurchaseSuccess -= CheckAdsEnablingAfterPurchasing; + } + + private void CheckAdsEnablingAfterPurchasing(string productId) + { + if (!CoreSettings.data.nonConsumableProducts.Contains(productId)) + return; + + if (CoreSettings.data.nonConsumableProductsDisableAds[CoreSettings.data.nonConsumableProducts.IndexOf(productId)]) + gameObject.SetActive(false); + } } } diff --git a/Assets_DLL/Core/Audio/AudioController.cs b/Assets_DLL/Core/Audio/AudioController.cs index 4c2c780..aa7b507 100644 --- a/Assets_DLL/Core/Audio/AudioController.cs +++ b/Assets_DLL/Core/Audio/AudioController.cs @@ -6,7 +6,7 @@ using Core.Settings; public static class AudioController { - public static void Init() + internal static void Init() { GameObject audioParent = new GameObject("[AudioController]"); diff --git a/Assets_DLL/Core/CoreInitializer.cs b/Assets_DLL/Core/CoreInitializer.cs index a69585b..52d32a7 100644 --- a/Assets_DLL/Core/CoreInitializer.cs +++ b/Assets_DLL/Core/CoreInitializer.cs @@ -2,14 +2,16 @@ using Core.SceneManagement; using Core.Ads; using Core.Localization; +using Core.IAP; namespace Core { - public sealed class CoreInitializer + internal sealed class CoreInitializer { [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)] private static void Init() { + PurchaseManager.Init(); AdsManager.Init(); LocalizationManager.Init(); AudioController.Init(); diff --git a/Assets_DLL/Core/IAP/PurchaseButton.cs b/Assets_DLL/Core/IAP/PurchaseButton.cs new file mode 100644 index 0000000..db37eeb --- /dev/null +++ b/Assets_DLL/Core/IAP/PurchaseButton.cs @@ -0,0 +1,46 @@ +using Core.Ads; +using Core.IAP; +using Core.Settings; +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.UI; + +namespace Core.Ads +{ + [RequireComponent(typeof(Button))] + public sealed class PurchaseButton : MonoBehaviour + { + [SerializeField] private string _productId = ""; + [SerializeField] private UnityEvent _onSucces = null; + [SerializeField] private UnityEvent _onFailed = null; + + private void Awake() + { + Button button = GetComponent