diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs index e3d1d266..24a1a9bc 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs @@ -24,7 +24,7 @@ public class MarketManager : MonoBehaviour private Market market; List productDataList; - private readonly Subject resetRefreshTimer = new Subject(); + private readonly Subject resetRefreshTimer = new Subject(); private readonly CompositeDisposable ShopClosedCompositeDisposable = new CompositeDisposable(); private void Start() @@ -67,7 +67,7 @@ public class MarketManager : MonoBehaviour gameData.FinishTutorial(); GameDataManager.SaveGameData(); walkerMask.gameObject.SetActive(false); - resetRefreshTimer.OnNext((int) DateTime.FromBinary(gameData.increaseCustomerTime).Subtract(DateTime.UtcNow).TotalSeconds); + resetRefreshTimer.OnNext(Unit.Default); SetShopView(market.CurrentShopState.Value); }).AddTo(controller).AddTo(this); }); @@ -118,14 +118,17 @@ public class MarketManager : MonoBehaviour gameData.increaseCustomerTime = DateTime.UtcNow.AddSeconds(10).ToBinary(); #endif GameDataManager.SaveGameData(); - resetRefreshTimer.OnNext((int) DateTime.FromBinary(gameData.increaseCustomerTime).Subtract(DateTime.UtcNow).TotalSeconds); + resetRefreshTimer.OnNext(Unit.Default); }); }).AddTo(this); + // onNextをトリガーに実行 IDisposable timerDisposable = null; resetRefreshTimer + .Select(_ => (int) DateTime.FromBinary(gameData.increaseCustomerTime).Subtract(DateTime.UtcNow).TotalSeconds) .Subscribe(time => { + // タイマーの更新処理 timerDisposable?.Dispose(); rewardButtonView.SetButtonActive(time <= 0); rewardButtonView.SetTime(time); @@ -141,14 +144,14 @@ public class MarketManager : MonoBehaviour }).AddTo(this); }).AddTo(this); - var remaining = (int) DateTime.FromBinary(gameData.increaseCustomerTime).Subtract(DateTime.UtcNow).TotalSeconds; - resetRefreshTimer.OnNext(remaining); + resetRefreshTimer.OnNext(Unit.Default); + // アプリ復帰時に残り時間更新 Observable.EveryApplicationPause() .Where(pause => !pause) .Subscribe(_ => { - resetRefreshTimer.OnNext((int) DateTime.FromBinary(gameData.increaseCustomerTime).Subtract(DateTime.UtcNow).TotalSeconds); + resetRefreshTimer.OnNext(Unit.Default); }).AddTo(this); market.IsPromotion.Subscribe(active =>