add 販売処理エラー制御&ログ出力

This commit is contained in:
kimura 2022-06-10 15:47:20 +09:00
parent 6bc95c32d8
commit 79aa7e94d1
2 changed files with 51 additions and 9 deletions

View File

@ -173,16 +173,41 @@ public class Market : SingletonMonoBehaviour<Market>
// コーンの味吹き出しを設定 // コーンの味吹き出しを設定
try try
{ {
// 不正なオーダーの場合お客さん制御
foreach (var t in tmpOrders)
{
if (gameData.ShopStock.Contains(displayFlavors[t]))
{
continue;
}
if (controller.OrderCount >= 1)
{
controller.OrderCount--;
}
}
// 購入しないお客さん扱いで退場
if (controller.OrderCount == 0)
{
controller.CallWaitForSeconds(1.5f, () =>
{
controller.ChangeCustomerState(CustomerState.Leave);
});
dontBuyCustomerList.Add(controller);
continue;
}
controller.SetWantFlavor(displayFlavors[tmpOrders.RandomChoose()]); controller.SetWantFlavor(displayFlavors[tmpOrders.RandomChoose()]);
} }
catch (Exception e) catch (Exception e)
{ {
Debug.LogError($"d:{displayFlavors.Count}, {string.Join("", tmpOrders)}" +
$"\nshuffled:{shuffledOrder.Count}, maxNum:{shuffledOrder.Max()}");
/* /*
* *
* orderを引いたのでそのまま処理せず逃がす * orderを引いたのでそのまま処理せず逃がす
*/ */
Debug.LogError($"d:{displayFlavors.Count}, {string.Join("", tmpOrders)}" +
$"\nshuffled:{shuffledOrder.Count}, maxNum:{shuffledOrder.Max()}");
controller.CallWaitForSeconds(1.5f, () => controller.CallWaitForSeconds(1.5f, () =>
{ {
controller.ChangeCustomerState(CustomerState.Leave); controller.ChangeCustomerState(CustomerState.Leave);
@ -442,6 +467,15 @@ public class Market : SingletonMonoBehaviour<Market>
var productData = recipeList.First(data => data.id == stockData.FlavorId); var productData = recipeList.First(data => data.id == stockData.FlavorId);
var rarityData = rarityList.First(data => data.Rarity == stockData.Rarity); var rarityData = rarityList.First(data => data.Rarity == stockData.Rarity);
var targetIndex = gameData.ShopStock.FindIndex(data => data.FlavorId == stockData.FlavorId && data.Rarity == stockData.Rarity); var targetIndex = gameData.ShopStock.FindIndex(data => data.FlavorId == stockData.FlavorId && data.Rarity == stockData.Rarity);
if (targetIndex == -1)
{
Debug.LogError($@"data
-----stockData: {stockData.FlavorId}, {stockData.Rarity}
-----shopStock: {gameData.ShopStock.Aggregate("", (s, data) => $"{s},{data.FlavorId}")}
displayFlavors: {displayFlavors.Aggregate("", (s, data) => $"{s},{data.FlavorId}")}");
Observable.NextFrame().Subscribe(_ => throw new Exception("DisplayFlavors Invalid")).AddTo(this);
continue;
}
gameData.ShopStock.RemoveAt(targetIndex); gameData.ShopStock.RemoveAt(targetIndex);
gameData.AddSalesCount(stockData.FlavorId, 1, stockData.Rarity); gameData.AddSalesCount(stockData.FlavorId, 1, stockData.Rarity);
coin += productData.GetRarityPrice(rarityData.Rarity); coin += productData.GetRarityPrice(rarityData.Rarity);

View File

@ -248,18 +248,26 @@ public class MarketManager : MonoBehaviour
} }
else else
{ {
var isError = false;
// 補充したフレーバーのスキンを設定 // 補充したフレーバーのスキンを設定
foreach (var order in x.refillList) foreach (var order in x.refillList)
{ {
try if (order >= market.DisplayFlavors.Count)
{ {
cartView.Refill(order, market.DisplayFlavors[order]); isError = true;
} Debug.LogError($@"mismatch order:{order}, displayFlavors:{market.DisplayFlavors.Count}");
catch (Exception e) continue;
{
Debug.LogError($"order:{order}, displayFlavors:{market.DisplayFlavors.Count}");
throw;
} }
cartView.Refill(order, market.DisplayFlavors[order]);
}
if (isError)
{
Debug.LogError($@"list
shopStock: {gameData.ShopStock.Aggregate("", (s, data) => $"{s},{data.FlavorId}")}
displayFlavors: {market.DisplayFlavors.Aggregate("", (s, data) => $"{s},{data.FlavorId}")}
refillList: {x.refillList.Aggregate("", (s, order) => $"{s},{order}")}");
throw new Exception("RefillList Invalid");
} }
} }
}).AddTo(this); }).AddTo(this);