diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs index e00700c0..62d99d4b 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; using MyGame.Scripts; using UniRx; using UnityEngine; @@ -188,10 +187,10 @@ public class ProductManagement : MonoBehaviour }).AddTo(this); // タンククリック検知 - Observable.Merge(tankList.Select(tankView => tankView.TankClickObservable.Select(_ => tankView))) + var tankClickStream = tankList.Select(tankView => tankView.TankClickObservable.Select(_ => tankView)).Merge(); + tankClickStream .Where(tankView => tankView.State.Value != TankState.Lock) .Where(tankView => tankView.State.Value != TankState.Unavailable) - .Where(tankView => gameData.StorageTanks[tankView.TankNumber - 1].Stock > 0) .Subscribe(tankView => { switch (state.Value) @@ -204,9 +203,13 @@ public class ProductManagement : MonoBehaviour case ManagementState.Replacing: break; case ManagementState.Tasting: + var tankData = gameData.StorageTanks[tankView.TankNumber - 1]; + if (tankData.IsEmpty) + { + break; + } ClearSelectedTank(tankList); tankView.SetState(TankState.Selected); - var tankData = gameData.StorageTanks[tankView.TankNumber - 1]; selectedTank.Value = (tankView.TankNumber, productList.FirstOrDefault(data => data.id == tankData.FlavorId)); break; default: @@ -215,10 +218,7 @@ public class ProductManagement : MonoBehaviour }).AddTo(this); // 2連続でクリックされたViewがまとめて取得できるストリーム - var replacingObservable = Observable.Merge(tankList.Select(x => x.TankClickObservable.Select(_ => x))) - .Where(x => x.State.Value != TankState.Lock) - .Where(x => x.State.Value != TankState.Unavailable) - .Where(tankView => gameData.StorageTanks[tankView.TankNumber - 1].Stock > 0) + var replacingObservable = tankClickStream .TakeWhile(_ => state.Value != ManagementState.Tasting) .Pairwise(); // タンク入れ替え