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

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,15 +412,36 @@ 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;
foreach (var tank in gameData.StorageTanks.Where(tank => !tank.IsEmpty)) switch (gameData.RefillMode)
{ {
if (shopSpace == 0) 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; break;
} case ProductRefillMode.TankByTank:
var stockList = tank.GetStock(shopSpace); foreach (var tank in gameData.StorageTanks.Where(tank => !tank.IsEmpty))
gameData.ShopStock.AddRange(stockList); {
shopSpace -= stockList.Count; if (shopSpace == 0)
{
break;
}
var stockList = tank.GetStock(shopSpace);
gameData.ShopStock.AddRange(stockList);
shopSpace -= stockList.Count;
}
break;
default:
throw new ArgumentOutOfRangeException();
} }
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
} }