From 79adb82aa993e52a9b5c8d2bbdb20820bf79c31e Mon Sep 17 00:00:00 2001 From: kimura Date: Wed, 13 Oct 2021 11:23:23 +0900 Subject: [PATCH] =?UTF-8?q?=E5=BA=97=E9=A0=AD=E8=A3=9C=E5=85=85=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E3=81=AE=E5=88=87=E3=82=8A=E6=9B=BF=E3=81=88=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MyGame/Scenes/marketing/Scripts/Market.cs | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) 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(); }