畑リワードの時間表示処理を移動

This commit is contained in:
kimura 2022-02-14 17:50:25 +09:00
parent 7d248d61e3
commit ff392e8a45
2 changed files with 20 additions and 20 deletions

View File

@ -221,14 +221,10 @@ public class CornField : MonoBehaviour
}).AddTo(this); }).AddTo(this);
// 残り時間表示 // 残り時間表示
IDisposable timerDisposable = null;
resetFertilizerTimer resetFertilizerTimer
.Subscribe(x => .Subscribe(x =>
{ {
timerDisposable?.Dispose(); fertilizerButtonView.ResetTimer(x);
fertilizerButtonView.SetButtonActive(x <= 0);
fertilizerButtonView.SetTime(x);
timerDisposable = SetFertilizerTimer(x).AddTo(this);
}).AddTo(this); }).AddTo(this);
// 残り時間を取得 // 残り時間を取得
@ -456,20 +452,6 @@ public class CornField : MonoBehaviour
upgradeButtonBadge.SetActive(upgradePrice <= CoinManager.Instance.OwnCoin); 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() private void SetData()
{ {
var gameData = GameDataManager.GameData; var gameData = GameDataManager.GameData;

View File

@ -11,6 +11,7 @@ namespace MyGame.Scenes.CornField.Scripts
[SerializeField] private Button rewardButton; [SerializeField] private Button rewardButton;
[SerializeField] private GameObject DisableObject; [SerializeField] private GameObject DisableObject;
[SerializeField] private Text remainTimeText; [SerializeField] private Text remainTimeText;
private IDisposable timerDisposable = null;
public IObservable<Unit> RewardButton => rewardButton.OnClickAsObservable().TakeUntilDestroy(this); public IObservable<Unit> RewardButton => rewardButton.OnClickAsObservable().TakeUntilDestroy(this);
public void SetButtonActive(bool active) public void SetButtonActive(bool active)
@ -19,10 +20,27 @@ namespace MyGame.Scenes.CornField.Scripts
DisableObject.SetActive(!active); DisableObject.SetActive(!active);
} }
public void SetTime(int seconds) private void SetTime(int seconds)
{ {
seconds = Mathf.Max(0, seconds); seconds = Mathf.Max(0, seconds);
remainTimeText.text = string.Format(remainTimeFormat, seconds / 60, seconds % 60); 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);
});
}
} }
} }