レベルアップ通知処理をまとめた

This commit is contained in:
kimura 2021-12-01 12:58:05 +09:00
parent 4466337005
commit 87009ebb34
7 changed files with 9 additions and 22 deletions

View File

@ -85,10 +85,7 @@ public class CornField : MonoBehaviour
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
// ハートゲージがフルかつダイアログが開いていない場合レベルアップ
GameDataObserver.Instance.SceneCounter
.DistinctUntilChanged()
.CombineLatest(HeartMeter.Instance.FulledHeart, (count, fulled) => count == 1 && fulled)
.Where(x => x)
HeartMeter.Instance.FulledHeart
.DelaySubscription(TimeSpan.FromSeconds(.4f))
.Subscribe(_ =>
{

View File

@ -100,10 +100,7 @@ public class KitchenManager : MonoBehaviour
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
// ハートゲージがフルかつダイアログが開いていない場合レベルアップ
GameDataObserver.Instance.SceneCounter
.DistinctUntilChanged()
.CombineLatest(HeartMeter.Instance.FulledHeart, (count, fulled) => count == 1 && fulled)
.Where(x => x)
HeartMeter.Instance.FulledHeart
.DelaySubscription(TimeSpan.FromSeconds(.4f))
.Subscribe(_ =>
{

View File

@ -76,10 +76,7 @@ public class MarketManager : MonoBehaviour
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
// ハートゲージがフルかつダイアログが開いていない場合レベルアップ
GameDataObserver.Instance.SceneCounter
.DistinctUntilChanged()
.CombineLatest(HeartMeter.Instance.FulledHeart, (count, fulled) => count == 1 && fulled)
.Where(x => x)
HeartMeter.Instance.FulledHeart
.DelaySubscription(TimeSpan.FromSeconds(.4f))
.Subscribe(_ =>
{

View File

@ -42,10 +42,7 @@ public class ProductManagement : MonoBehaviour
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
// ハートゲージがフルかつダイアログが開いていない場合レベルアップ
GameDataObserver.Instance.SceneCounter
.DistinctUntilChanged()
.CombineLatest(HeartMeter.Instance.FulledHeart, (count, fulled) => count == 1 && fulled)
.Where(x => x)
HeartMeter.Instance.FulledHeart
.DelaySubscription(TimeSpan.FromSeconds(.4f))
.Subscribe(_ =>
{

View File

@ -21,10 +21,7 @@ public class Shopping : MonoBehaviour
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
// ハートゲージがフルかつダイアログが開いていない場合レベルアップ
GameDataObserver.Instance.SceneCounter
.DistinctUntilChanged()
.CombineLatest(HeartMeter.Instance.FulledHeart, (count, fulled) => count == 1 && fulled)
.Where(x => x)
HeartMeter.Instance.FulledHeart
.DelaySubscription(TimeSpan.FromSeconds(.4f))
.Subscribe(_ =>
{

View File

@ -24,7 +24,7 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
public IReadOnlyReactiveProperty<bool> UpdateMissionAchieved => updateMissionAchieved;
public IObservable<int> HeartObserver => heartObserver;
public IObservable<int> SceneCounter => sceneCounter;
public IObservable<int> SceneCounter => sceneCounter.DistinctUntilChanged();
private void Start()
{

View File

@ -22,7 +22,9 @@ public class HeartMeter : SingletonMonoBehaviour<HeartMeter>
private readonly ReactiveProperty<float> viewHeartCount = new ReactiveProperty<float>();
private readonly ReactiveProperty<int> shopLevel = new ReactiveProperty<int>();
private readonly ReactiveProperty<bool> fulledHeart = new ReactiveProperty<bool>();
public IObservable<bool> FulledHeart => fulledHeart.DistinctUntilChanged();
public IObservable<bool> FulledHeart => fulledHeart.DistinctUntilChanged()
.CombineLatest(GameDataObserver.Instance.SceneCounter, (fulled, count) => count == 1 && fulled)
.Where(x => x && UnityEngine.SceneManagement.SceneManager.sceneCount == 1); // シーン数をもう一度チェック
private float minHeart;
private float maxHeart;