diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs index c0f6dfa8..e7df4d94 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs @@ -5,7 +5,6 @@ using System.Linq; using MyGame.Scenes.CornField.Scripts; using MyGame.Scripts; using UniRx; -using UniRx.Triggers; using UnityEngine; using UnityEngine.UI; using Random = UnityEngine.Random; @@ -175,18 +174,27 @@ public class CornField : MonoBehaviour }).AddTo(this); // 残り時間表示 + IDisposable timerDisposable = null; resetFertilizerTimer .Subscribe(x => { + timerDisposable?.Dispose(); fertilizerButtonView.SetButtonActive(x <= 0); fertilizerButtonView.SetTime(x); - SetFertilizerTimer(x).AddTo(this); + timerDisposable = SetFertilizerTimer(x).AddTo(this); }).AddTo(this); // 残り時間を取得 var remaining = (int)DateTime.FromBinary(gameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds; resetFertilizerTimer.OnNext(remaining); + Observable.EveryApplicationPause() + .Where(pause => !pause) + .Subscribe(_ => + { + resetFertilizerTimer.OnNext((int) DateTime.FromBinary(gameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds); + }).AddTo(this); + // 収穫カウンター+吸収演出 cornHarvester.FinishHarvested .Scan((list, newList) => (newList.count, list.colliders.Concat(newList.colliders).ToList())) diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionManager.cs b/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionManager.cs index aa407c35..580d966e 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionManager.cs +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionManager.cs @@ -54,7 +54,7 @@ public class MissionManager : MonoBehaviour timeLimitText.text = String.Format(TimeFormat, 0, 0, 0); } Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1f)) - .Select(x => limitTime.Add(TimeSpan.FromSeconds(-x))) + .Select(x => gameData.GetDailyMissionLimitTime()) .TakeWhile(x => x.TotalSeconds > 0) .Subscribe(x => { diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs index ad790176..8aae8266 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs @@ -102,12 +102,14 @@ public class MarketManager : MonoBehaviour }); }).AddTo(this); + IDisposable timerDisposable = null; resetRefreshTimer .Subscribe(time => { + timerDisposable?.Dispose(); rewardButtonView.SetButtonActive(time <= 0); rewardButtonView.SetTime(time); - Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1f)) + timerDisposable = Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1f)) .Select(x => (int)(time - x)) .TakeWhile(x => x > 0) .Subscribe(x => @@ -121,6 +123,13 @@ public class MarketManager : MonoBehaviour var remaining = (int) DateTime.FromBinary(gameData.increaseCustomerTime).Subtract(DateTime.UtcNow).TotalSeconds; resetRefreshTimer.OnNext(remaining); + + Observable.EveryApplicationPause() + .Where(pause => !pause) + .Subscribe(_ => + { + resetRefreshTimer.OnNext((int) DateTime.FromBinary(gameData.increaseCustomerTime).Subtract(DateTime.UtcNow).TotalSeconds); + }).AddTo(this); market.IsPromotion.Subscribe(active => {