diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs index 4b2e7ea9..79929c56 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs @@ -221,14 +221,10 @@ public class CornField : MonoBehaviour }).AddTo(this); // 残り時間表示 - IDisposable timerDisposable = null; resetFertilizerTimer .Subscribe(x => { - timerDisposable?.Dispose(); - fertilizerButtonView.SetButtonActive(x <= 0); - fertilizerButtonView.SetTime(x); - timerDisposable = SetFertilizerTimer(x).AddTo(this); + fertilizerButtonView.ResetTimer(x); }).AddTo(this); // 残り時間を取得 @@ -456,20 +452,6 @@ public class CornField : MonoBehaviour upgradeButtonBadge.SetActive(upgradePrice <= CoinManager.Instance.OwnCoin); } - private IDisposable SetFertilizerTimer(int time) - { - return Observable.Timer(TimeSpan.Zero,TimeSpan.FromSeconds(1f)) - .Select(x => (int)(time - x)) - .TakeWhile(x => x > 0) - .Subscribe(x => - { - fertilizerButtonView.SetTime(x); - }, () => - { - fertilizerButtonView.SetButtonActive(true); - }); - } - private void SetData() { var gameData = GameDataManager.GameData; diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/FertilizerButtonView.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/FertilizerButtonView.cs index 92dec7cb..4258d382 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/FertilizerButtonView.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/FertilizerButtonView.cs @@ -11,6 +11,7 @@ namespace MyGame.Scenes.CornField.Scripts [SerializeField] private Button rewardButton; [SerializeField] private GameObject DisableObject; [SerializeField] private Text remainTimeText; + private IDisposable timerDisposable = null; public IObservable RewardButton => rewardButton.OnClickAsObservable().TakeUntilDestroy(this); public void SetButtonActive(bool active) @@ -19,10 +20,27 @@ namespace MyGame.Scenes.CornField.Scripts DisableObject.SetActive(!active); } - public void SetTime(int seconds) + private void SetTime(int seconds) { seconds = Mathf.Max(0, seconds); remainTimeText.text = string.Format(remainTimeFormat, seconds / 60, seconds % 60); } + + public void ResetTimer(int time) + { + timerDisposable?.Dispose(); + SetButtonActive(time <= 0); + SetTime(time); + timerDisposable = Observable.Timer(TimeSpan.Zero,TimeSpan.FromSeconds(1f)) + .Select(x => (int)(time - x)) + .TakeWhile(x => x > 0) + .Subscribe(x => + { + SetTime(x); + }, () => + { + SetButtonActive(true); + }); + } } } \ No newline at end of file