店頭商品リストの更新を修正

商品獲得時に店頭商品リストの更新を追加
This commit is contained in:
kimura 2021-10-13 11:27:15 +09:00
parent 79adb82aa9
commit 7c692ba915
2 changed files with 47 additions and 15 deletions

View File

@ -159,6 +159,12 @@ public class CookingResult : MonoBehaviour
Rarity = rarity, Rarity = rarity,
}, stockCount)); }, stockCount));
remain -= 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(); gameData.StorageTanks = gameData.StorageTanks.OrderBy(tank => tank.IsEmpty).ToList();

View File

@ -182,7 +182,20 @@ public class Market : SingletonMonoBehaviour<Market>
$"orders:{orders.Count} {string.Join(",", orders)}"); $"orders:{orders.Count} {string.Join(",", orders)}");
#endif #endif
// 表示データ更新 // 表示データ更新
var isReorder = RefillDisplayFlavors(gameData.ShopStock, orders, shuffledOrder.Count); var isReorder = false;
var refillList = new List<int>();
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, () => this.CallWaitForSeconds(1.5f, () =>
{ {
@ -446,34 +459,47 @@ public class Market : SingletonMonoBehaviour<Market>
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
} }
private bool RefillDisplayFlavors(List<ProductStockData> shopStock, List<int> orders, int remain) public List<int> RefillDisplayFlavors(List<ProductStockData> shopStock)
{ {
// 補充された場合店頭のフレーバー入れ替え // 補充された場合店頭のフレーバー入れ替え
if (shopStock.Count == ShopStockCount) var refillCount = shopStock.Count - shuffledOrder.Count;
if (refillCount <= 0)
{ {
shuffledOrder.AddRange(orders); return new List<int>();
var refillList = shopStock.GetRange(remain, orders.Count);
for (int i = 0; i < orders.Count; i++)
{
displayFlavors[orders[i]] = refillList[i];
}
} }
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; 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 true;
} }
return false; return false;
} }
private void ReShuffle(List<ProductStockData> shopStock)
{
displayFlavors = shopStock.ToList();
shuffledOrder = ShuffleOrder(displayFlavors.Count);
}
public void CheckStock(List<ProductStockData> shopStock)
{
shopState.Value = shopStock.Count == 0 ? ShopState.Close : ShopState.Open;
}
public void AdClickAction() public void AdClickAction()
{ {
customerFlow.StartAdWalker(); customerFlow.StartAdWalker();