diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/Market.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/Market.cs index 424aa7df..97274080 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/Market.cs +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/Market.cs @@ -45,6 +45,7 @@ public class Market : SingletonMonoBehaviour private readonly Subject<(bool isReorder, List orders)> sellOrderSubject = new Subject<(bool, List)>(); private int orderIndex; + private int oneByOneIndex = 0; // Start is called before the first frame update void Start() @@ -411,15 +412,36 @@ public class Market : SingletonMonoBehaviour // へらした分を店頭リストに追加する var gameData = GameDataManager.GameData; 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; - } - var stockList = tank.GetStock(shopSpace); - gameData.ShopStock.AddRange(stockList); - shopSpace -= stockList.Count; + case ProductRefillMode.TankByTank: + foreach (var tank in gameData.StorageTanks.Where(tank => !tank.IsEmpty)) + { + if (shopSpace == 0) + { + break; + } + var stockList = tank.GetStock(shopSpace); + gameData.ShopStock.AddRange(stockList); + shopSpace -= stockList.Count; + } + break; + default: + throw new ArgumentOutOfRangeException(); } GameDataManager.SaveGameData(); }