From f73b345058913c2ab7940f2b59b4daf65eaae712 Mon Sep 17 00:00:00 2001 From: Ino Date: Fri, 5 Sep 2025 22:22:04 +0900 Subject: [PATCH] =?UTF-8?q?=EC=83=81=EC=A0=90=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Easy Save 3/Types/ES3UserType_SaveData.cs | 6 ++- .../Popups/NotVaildFreeHaert_ADS_Popup.prefab | 4 +- .../SingletonManagers/Managers/DBManager.cs | 15 +++++++ Assets/Scripts/UI/ProductSlot.cs | 40 +++++++++++++++++-- 4 files changed, 59 insertions(+), 6 deletions(-) diff --git a/Assets/Easy Save 3/Types/ES3UserType_SaveData.cs b/Assets/Easy Save 3/Types/ES3UserType_SaveData.cs index 45151d5..4084136 100644 --- a/Assets/Easy Save 3/Types/ES3UserType_SaveData.cs +++ b/Assets/Easy Save 3/Types/ES3UserType_SaveData.cs @@ -25,7 +25,8 @@ namespace ES3Types writer.WriteProperty("IsRemoveADS", instance.IsRemoveADS, ES3Type_bool.Instance); writer.WriteProperty("GameSpeed", instance.GameSpeed, ES3Type_float.Instance); writer.WriteProperty("ProductAdWatchedNumber", instance.ProductAdWatchedNumber, ES3Type_int.Instance); - writer.WriteProperty("FreeHeartCount", instance.FreeHeartCount, ES3Type_int.Instance); + writer.WriteProperty("ProductAdWatchedTime", instance.ProductAdWatchedTime, ES3Type_DateTime.Instance); + writer.WriteProperty("FreeHeartCount", instance.FreeHeartCount, ES3Type_int.Instance); writer.WriteProperty("FreeKeyCount", instance.FreeKeyCount, ES3Type_int.Instance); writer.WriteProperty("InterstitialADCount", instance.InterstitialADCount, ES3Type_int.Instance); writer.WriteProperty("ImageOpenStates_Left", instance.ImageOpenStates_Left, ES3Type_boolArray.Instance); @@ -72,6 +73,9 @@ namespace ES3Types case "ProductAdWatchedNumber": instance.ProductAdWatchedNumber = reader.Read(ES3Type_int.Instance); break; + case "ProductAdWatchedTime": + instance.ProductAdWatchedTime = reader.Read(ES3Type_DateTime.Instance); + break; case "FreeHeartCount": instance.FreeHeartCount = reader.Read(ES3Type_int.Instance); break; diff --git a/Assets/Resources/Prefabs/Popups/NotVaildFreeHaert_ADS_Popup.prefab b/Assets/Resources/Prefabs/Popups/NotVaildFreeHaert_ADS_Popup.prefab index e8134a1..fb81e1b 100644 --- a/Assets/Resources/Prefabs/Popups/NotVaildFreeHaert_ADS_Popup.prefab +++ b/Assets/Resources/Prefabs/Popups/NotVaildFreeHaert_ADS_Popup.prefab @@ -486,8 +486,8 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: "\uB354 \uC774\uC0C1 \uAD11\uACE0 \uC2DC\uCCAD\uC744 \uD1B5\uD55C \r\n\uBB34\uB8CC - \uD558\uD2B8\uB97C \uC5BB\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4." + m_text: "\uAD11\uACE0 \uC2DC\uCCAD\uC744 \uD1B5\uD55C \uBB34\uB8CC \uD558\uD2B8\uB97C + \uC5BB\uC744 \uC218 \uC788\uB294\n\uC2DC\uAC04\uC774 \uB0A8\uC544\uC788\uC2B5\uB2C8\uB2E4." m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} m_sharedMaterial: {fileID: -6508382273668546854, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} diff --git a/Assets/Scripts/SingletonManagers/Managers/DBManager.cs b/Assets/Scripts/SingletonManagers/Managers/DBManager.cs index 269cfcb..63b810e 100644 --- a/Assets/Scripts/SingletonManagers/Managers/DBManager.cs +++ b/Assets/Scripts/SingletonManagers/Managers/DBManager.cs @@ -31,6 +31,7 @@ namespace CodeJay /// Number of Watched Ad In Store(Ad Heart Product). public int ProductAdWatchedNumber; + public DateTime ProductAdWatchedTime; public int FreeHeartCount, FreeKeyCount; public int InterstitialADCount; @@ -91,6 +92,7 @@ namespace CodeJay this.IsRemoveADS = data.IsRemoveADS; this.GameSpeed = data.GameSpeed; this.ProductAdWatchedNumber = data.ProductAdWatchedNumber; + ProductAdWatchedTime = data.ProductAdWatchedTime; this.FreeHeartCount = data.FreeHeartCount; FreeKeyCount = data.FreeKeyCount; this.InterstitialADCount = data.InterstitialADCount; @@ -231,6 +233,7 @@ public partial class DBManager : MonoBehaviour public long BuyKeyCount { get => saveData.BuyKeyCount; } public float GameSpeed { get => saveData.GameSpeed; set => saveData.GameSpeed = value; } public int ProductAdWatchedNumber { get => saveData.ProductAdWatchedNumber; } + public DateTime ProductAdWatchedTime { get => saveData.ProductAdWatchedTime; } public int FreeHeartCount { get => saveData.FreeHeartCount; } public int FreeKeyCount { get => saveData.FreeKeyCount; } public int NormalGameLevel { get => saveData.NormalGameLevel; } @@ -782,6 +785,10 @@ public partial class DBManager : MonoBehaviour if (saveData != null) { saveData.ProductAdWatchedNumber -= min; + if (saveData.ProductAdWatchedNumber < 0) + saveData.ProductAdWatchedNumber = 0; + if (saveData.ProductAdWatchedNumber == 0) + saveData.ProductAdWatchedTime = InternetTime.Ins.Time.AddHours(1); SaveDatas(); return saveData.ProductAdWatchedNumber; @@ -789,6 +796,14 @@ public partial class DBManager : MonoBehaviour return 0; } + public void ProductAdWatchedNumber_Plus() + { + if (saveData != null) + { + saveData.ProductAdWatchedNumber = 1; + SaveDatas(); + } + } public void ResetFreeHeartCount() { diff --git a/Assets/Scripts/UI/ProductSlot.cs b/Assets/Scripts/UI/ProductSlot.cs index dcc866f..672c73b 100644 --- a/Assets/Scripts/UI/ProductSlot.cs +++ b/Assets/Scripts/UI/ProductSlot.cs @@ -1,6 +1,7 @@ using CodeJay.Classes; using CodeJay.Defines; using System; +using System.Collections; using System.Text; using UnityEngine; using UnityEngine.UI; @@ -264,11 +265,13 @@ public class ProductSlot : CardBase private void SetADSButton() { + StopAllCoroutines(); + // 광고 이벤트 연결하기 GameManager.ADS.OnCompletedRewardedAd += OnCompletedRewardedAd; DateTime loadTime = GameManager.Timer.LoadTime(); - if (loadTime.Day != DateTime.Now.Day) + if (loadTime.Day != InternetTime.Ins.Time.Day) { GameManager.DB.ResetADSRewardActionCount(); GameManager.DB.ResetFreeHeartCount(); @@ -276,7 +279,35 @@ public class ProductSlot : CardBase } else { - GameManager.Timer.ActivateLoadSimpleTimer(name, Constants.ADS_TIMER_COUNT, OnStartTimer, OnPauseTimer, OnStopTimer, OnPassedTime); + if (GameManager.DB.ProductAdWatchedNumber <= 0) + StartCoroutine(Co_Time()); + else + { + if (AdButton != null) + { + Color c = AdButton.GetComponent().color; + c.a = 1.0f; + AdButton.GetComponent().color = c; + } + SetADSRewardActionCountText(GameManager.DB.ProductAdWatchedNumber); + } + //GameManager.Timer.ActivateLoadSimpleTimer(name, Constants.ADS_TIMER_COUNT, OnStartTimer, OnPauseTimer, OnStopTimer, OnPassedTime); + } + } + + IEnumerator Co_Time() + { + while (true) + { + yield return new WaitForSeconds(1f); + var cal = GameManager.DB.ProductAdWatchedTime - InternetTime.Ins.Time; + if (cal.TotalSeconds > 0) + AdNumberTMP.text = DSUtil.Get_TimeText_MS(cal); + else + { + GameManager.DB.ProductAdWatchedNumber_Plus(); + SetData(_data); + } } } @@ -498,6 +529,8 @@ public class ProductSlot : CardBase { if (timerCount <= 0) { + if (GameManager.DB.ProductAdWatchedNumber == 0) + GameManager.DB.ProductAdWatchedNumber_Plus(); SetADSRewardActionCountText(GameManager.DB.ProductAdWatchedNumber); GameManager.Timer.DeactivateTimer(name); //buyButton.onClick.AddListener(OnBuyButtonClicked); @@ -572,7 +605,8 @@ public class ProductSlot : CardBase if (GameManager.DB.ProductAdWatchedNumber == 0) { - GameManager.Timer.ActivateSimpleTimer(name, Constants.ADS_TIMER_COUNT, OnStartTimer, OnPauseTimer, OnStopTimer, OnPassedTime); + SetADSButton(); + //GameManager.Timer.ActivateSimpleTimer(name, Constants.ADS_TIMER_COUNT, OnStartTimer, OnPauseTimer, OnStopTimer, OnPassedTime); } } }