試食モード時にタンクが選択された状態にする対応

This commit is contained in:
kimura 2022-04-19 17:51:22 +09:00
parent 81b2e56b2f
commit 6bcafea15e
1 changed files with 13 additions and 4 deletions

View File

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