店頭補充方法の切り替え実装

This commit is contained in:
kimura 2021-10-13 11:23:23 +09:00
parent 613995dd84
commit 79adb82aa9
1 changed files with 29 additions and 7 deletions

View File

@ -45,6 +45,7 @@ public class Market : SingletonMonoBehaviour<Market>
private readonly Subject<(bool isReorder, List<int> orders)> sellOrderSubject = new Subject<(bool, List<int>)>(); private readonly Subject<(bool isReorder, List<int> orders)> sellOrderSubject = new Subject<(bool, List<int>)>();
private int orderIndex; private int orderIndex;
private int oneByOneIndex = 0;
// Start is called before the first frame update // Start is called before the first frame update
void Start() void Start()
@ -411,6 +412,23 @@ public class Market : SingletonMonoBehaviour<Market>
// へらした分を店頭リストに追加する // へらした分を店頭リストに追加する
var gameData = GameDataManager.GameData; var gameData = GameDataManager.GameData;
var shopSpace = ShopStockCount - gameData.ShopStock.Count; var shopSpace = ShopStockCount - gameData.ShopStock.Count;
switch (gameData.RefillMode)
{
case ProductRefillMode.OneByOne:
while (shopSpace > 0 && gameData.StorageTanks.Sum(data => data.Stock) > 0)
{
var tanks = gameData.StorageTanks.Where(tank => !tank.IsEmpty).ToList();
if (oneByOneIndex >= tanks.Count)
{
oneByOneIndex = 0;
}
var stockList = tanks[oneByOneIndex].GetStock(1);
gameData.ShopStock.AddRange(stockList);
shopSpace -= stockList.Count;
oneByOneIndex++;
}
break;
case ProductRefillMode.TankByTank:
foreach (var tank in gameData.StorageTanks.Where(tank => !tank.IsEmpty)) foreach (var tank in gameData.StorageTanks.Where(tank => !tank.IsEmpty))
{ {
if (shopSpace == 0) if (shopSpace == 0)
@ -421,6 +439,10 @@ public class Market : SingletonMonoBehaviour<Market>
gameData.ShopStock.AddRange(stockList); gameData.ShopStock.AddRange(stockList);
shopSpace -= stockList.Count; shopSpace -= stockList.Count;
} }
break;
default:
throw new ArgumentOutOfRangeException();
}
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
} }