From 7c692ba915ee03ba9d9d8ef66c37564eced7d193 Mon Sep 17 00:00:00 2001 From: kimura Date: Wed, 13 Oct 2021 11:27:15 +0900 Subject: [PATCH] =?UTF-8?q?=E5=BA=97=E9=A0=AD=E5=95=86=E5=93=81=E3=83=AA?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=81=AE=E6=9B=B4=E6=96=B0=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=20=E5=95=86=E5=93=81=E7=8D=B2=E5=BE=97=E6=99=82?= =?UTF-8?q?=E3=81=AB=E5=BA=97=E9=A0=AD=E5=95=86=E5=93=81=E3=83=AA=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=81=AE=E6=9B=B4=E6=96=B0=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scenes/Cooking/Scripts/CookingResult.cs | 6 ++ .../MyGame/Scenes/marketing/Scripts/Market.cs | 56 ++++++++++++++----- 2 files changed, 47 insertions(+), 15 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CookingResult.cs b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CookingResult.cs index 622e4105..b40cecef 100644 --- a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CookingResult.cs +++ b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CookingResult.cs @@ -159,6 +159,12 @@ public class CookingResult : MonoBehaviour Rarity = rarity, }, stockCount)); remain -= stockCount; + // ShopStockに補充された場合、DisplayFlavors更新 + if (stockCount > 0) + { + Market.Instance.RefillDisplayFlavors(gameData.ShopStock); + Market.Instance.CheckStock(gameData.ShopStock); + } // 空タンク並び替え gameData.StorageTanks = gameData.StorageTanks.OrderBy(tank => tank.IsEmpty).ToList(); diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/Market.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/Market.cs index 97274080..a7c1d170 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/Market.cs +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/Market.cs @@ -182,7 +182,20 @@ public class Market : SingletonMonoBehaviour $"orders:{orders.Count} {string.Join(",", orders)}"); #endif // 表示データ更新 - var isReorder = RefillDisplayFlavors(gameData.ShopStock, orders, shuffledOrder.Count); + var isReorder = false; + var refillList = new List(); + if (gameData.ShopStock.Count > shuffledOrder.Count) + { + refillList = RefillDisplayFlavors(gameData.ShopStock); + } + else + { + isReorder = CheckRemaining(gameData.ShopStock.Count); + if (isReorder) + { + ReShuffle(gameData.ShopStock); + } + } this.CallWaitForSeconds(1.5f, () => { @@ -446,34 +459,47 @@ public class Market : SingletonMonoBehaviour GameDataManager.SaveGameData(); } - private bool RefillDisplayFlavors(List shopStock, List orders, int remain) + public List RefillDisplayFlavors(List shopStock) { // 補充された場合店頭のフレーバー入れ替え - if (shopStock.Count == ShopStockCount) + var refillCount = shopStock.Count - shuffledOrder.Count; + if (refillCount <= 0) { - shuffledOrder.AddRange(orders); - var refillList = shopStock.GetRange(remain, orders.Count); - for (int i = 0; i < orders.Count; i++) - { - displayFlavors[orders[i]] = refillList[i]; - } + return new List(); } - else if (shopStock.Count <= 13 && shuffledOrder.Exists(x => x > 13)) + // 補充候補リスト + var orders = Enumerable.Range(0, shopStock.Count).Except(shuffledOrder).ToList(); + var refillList = orders.OrderBy(_ => Random.value).ToList(); + shuffledOrder.AddRange(refillList); + displayFlavors = shopStock.ToList(); + return refillList; + } + + private bool CheckRemaining(int currentShopStockCount) + { + if (currentShopStockCount <= 13 && shuffledOrder.Exists(x => x > 13)) { - displayFlavors = shopStock.ToList(); - shuffledOrder = ShuffleOrder(displayFlavors.Count); return true; } - else if (shopStock.Count <= 7 && shuffledOrder.Exists(x => x > 7)) + if (currentShopStockCount <= 7 && shuffledOrder.Exists(x => x > 7)) { - displayFlavors = shopStock.ToList(); - shuffledOrder = ShuffleOrder(displayFlavors.Count); return true; } return false; } + private void ReShuffle(List shopStock) + { + displayFlavors = shopStock.ToList(); + shuffledOrder = ShuffleOrder(displayFlavors.Count); + } + + public void CheckStock(List shopStock) + { + shopState.Value = shopStock.Count == 0 ? ShopState.Close : ShopState.Open; + } + public void AdClickAction() { customerFlow.StartAdWalker();