From 6bcafea15edaa7ce03b987cd70fc6c5439e261a0 Mon Sep 17 00:00:00 2001 From: kimura Date: Tue, 19 Apr 2022 17:51:22 +0900 Subject: [PATCH] =?UTF-8?q?=E8=A9=A6=E9=A3=9F=E3=83=A2=E3=83=BC=E3=83=89?= =?UTF-8?q?=E6=99=82=E3=81=AB=E3=82=BF=E3=83=B3=E3=82=AF=E3=81=8C=E9=81=B8?= =?UTF-8?q?=E6=8A=9E=E3=81=95=E3=82=8C=E3=81=9F=E7=8A=B6=E6=85=8B=E3=81=AB?= =?UTF-8?q?=E3=81=99=E3=82=8B=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../marketing/Scripts/ProductManagement.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) 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);