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

商品獲得時に店頭商品リストの更新を追加
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,
}, 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();

View File

@ -182,7 +182,20 @@ public class Market : SingletonMonoBehaviour<Market>
$"orders:{orders.Count} {string.Join(",", orders)}");
#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, () =>
{
@ -446,34 +459,47 @@ public class Market : SingletonMonoBehaviour<Market>
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);
var refillList = shopStock.GetRange(remain, orders.Count);
for (int i = 0; i < orders.Count; i++)
{
displayFlavors[orders[i]] = refillList[i];
return new List<int>();
}
}
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();
shuffledOrder = ShuffleOrder(displayFlavors.Count);
return refillList;
}
private bool CheckRemaining(int currentShopStockCount)
{
if (currentShopStockCount <= 13 && shuffledOrder.Exists(x => x > 13))
{
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<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()
{
customerFlow.StartAdWalker();