試食モード時にタンクが選択された状態にする対応
This commit is contained in:
parent
81b2e56b2f
commit
6bcafea15e
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue