diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs index 62d99d4b..ecaee574 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs @@ -160,20 +160,29 @@ public class ProductManagement : MonoBehaviour case ManagementState.Replacing: break; case ManagementState.Tasting: - // 空以外のタンクを選択 - var index = gameData.StorageTanks.FindIndex(tank => tank.Stock > 0); + // ストックのあるタンクのIndex取得。なければ試食モード中止。 + var index = gameData.StorageTanks.FindIndex(tank => !tank.IsEmpty); if (index == -1) { state.Value = ManagementState.None; return; } + // 選択中のタンクにストックがあればIndex更新 + var selectedIndex = tankList.FindIndex(tankView => tankView.State.Value == TankState.Selected); + if (selectedIndex != -1 && !gameData.StorageTanks[selectedIndex].IsEmpty) + { + index = selectedIndex; + } + ChangeAllTankInteractable(tankList, false); ClearSelectedTank(tankList); tankList[index].SetState(TankState.Selected); + var tankData = gameData.StorageTanks[index]; selectedTank.Value = (tankList[index].TankNumber, productList.FirstOrDefault(data => data.id == tankData.FlavorId)); Action tastingAction = () => { + state.Value = ManagementState.None; Tasting(selectedTank.Value.num); tankList[selectedTank.Value.num - 1].SetData(gameData.StorageTanks[selectedTank.Value.num - 1]); SetActiveTastingButton(gameData.StorageTanks.Any(tank => !tank.IsEmpty)); @@ -240,8 +249,9 @@ public class ProductManagement : MonoBehaviour state.Value = ManagementState.None; }).AddTo(this); - // 試食ボタン + // 空以外のタンクが1つでもあれば有効 SetActiveTastingButton(gameData.StorageTanks.Any(tank => !tank.IsEmpty)); + // 試食ボタン tastingButton.OnClickAsObservable().Subscribe(_ => { state.Value = ManagementState.Tasting; @@ -291,7 +301,6 @@ public class ProductManagement : MonoBehaviour private void Tasting(int tankNumber) { - state.Value = ManagementState.None; // 試食フラグに終了時間を設定 var tank = GameDataManager.GameData.StorageTanks[tankNumber - 1]; GameDataManager.GameData.AddTastingCustomerCount(tank.Stock);