リワードタイマーのフォアグラウンド復帰時対応

This commit is contained in:
kimura 2021-10-28 13:40:18 +09:00
parent 0e40f526da
commit 079d45c6b6
3 changed files with 21 additions and 4 deletions

View File

@ -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()))

View File

@ -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 =>
{

View File

@ -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 =>
@ -122,6 +124,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 =>
{
if (active)