retryConditionの使用判定をキャンセル時に修正

This commit is contained in:
kimura 2022-04-20 18:23:09 +09:00
parent ff5d2b1831
commit 7ced53d104
1 changed files with 22 additions and 19 deletions

View File

@ -298,7 +298,7 @@ public class KitchenManager : MonoBehaviour
if (!result.newOrder)
{
if (gameData.OrderIdInProgress != gameData.CancelOrderId)
if (!cancelled)
{
SetPhoneTap();
}
@ -368,39 +368,34 @@ public class KitchenManager : MonoBehaviour
private (bool newOrder, int nextOrderId, int nextOrderLevel) CheckBulkOrder()
{
var gameData = GameDataManager.GameData;
var nextOrderLevel = 0;
var nextOrderLevel = gameData.AchievedOrderLevel + 1;
var nextOrderId = gameData.OrderIdInProgress;
var bulkOrderList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderData>(Const.BulkOrderDataSheet);
if (!(bulkOrderList.FirstOrDefault(data => data.shopLevel >= gameData.AchievedOrderLevel + 1) is BulkOrderData bulkOrderData))
{
return (false, nextOrderId, nextOrderLevel);
}
nextOrderLevel = bulkOrderData.shopLevel;
// 店舗レベルより大量注文レベルが大きい場合オーダーなし
if (gameData.ViewedShopLevel < nextOrderLevel)
{
return (false, nextOrderId, nextOrderLevel);
}
// 大量注文レベルが上限の場合オーダーなし
if (bulkOrderList.FirstOrDefault(data => data.shopLevel >= gameData.AchievedOrderLevel + 1) is null)
{
return (false, nextOrderId, nextOrderLevel);
}
var achieved = gameData.DeliveredOrder.Contains(gameData.OrderIdInProgress);
var canceled = gameData.OrderIdInProgress == gameData.CancelOrderId;
var nextOrderList = bulkOrderList.Where(data => data.shopLevel == nextOrderLevel).ToList();
if (!nextOrderList.Exists(data => data.id == gameData.OrderIdInProgress))
{
// まだ次のオーダーが設定されてない場合nextOrderListの一番若いIDを設定
nextOrderId = nextOrderList.First().id;
}
else if (achieved || gameData.OrderIdInProgress == gameData.CancelOrderId && gameData.CancelOrderId > 0)
else if (achieved || canceled)
{
// 達成済みか、キャンセルされた場合次のIDを設定
// 未達成のオーダー
var orderList = nextOrderList.Where(data => !gameData.DeliveredOrder.Contains(data.id)).ToList();
if (orderList.Count > 0)
{
var nextIndex = orderList.FindIndex(data => data.id > gameData.OrderIdInProgress);
nextOrderId = orderList[Mathf.Max(0, nextIndex)].id;
}
else
if (orderList.Count <= 0)
{
#if UNITY_EDITOR
// オーダーリストがすべて達成済みの場合エラー
@ -409,18 +404,26 @@ public class KitchenManager : MonoBehaviour
$"delivered:{gameData.DeliveredOrder.Aggregate(string.Empty, (s, data) => $"{s}, {data}")}\n" +
$"orderList:{nextOrderList.Aggregate(string.Empty, (s, data) => $"{s}, {data.id}")}");
#endif
return (false, nextOrderId, nextOrderLevel);
}
var nextIndex = orderList.FindIndex(data => data.id > gameData.OrderIdInProgress);
nextOrderId = orderList[Mathf.Max(0, nextIndex)].id;
}
if (gameData.OrderIdInProgress == nextOrderId)
{
return (false, nextOrderId, nextOrderLevel);
}
var orderData = nextOrderList.First(data => data.id == nextOrderId);
var isFirst = !nextOrderList.Exists(data => data.id == gameData.CancelOrderId);
var condition = isFirst ? orderData.firstOrderCondition : orderData.retryCondition;
// キャンセル時retryConditionを使う
var condition = canceled ? orderData.retryCondition : orderData.firstOrderCondition;
#if UNITY_EDITOR
Debug.Log($"nextOrderId: {nextOrderId} use {(canceled ? "retryCondition" : "firstOrderCondition")} ({gameData.OrderConditionCount}/{condition})");
#endif
// 条件チェック
return (condition <= gameData.OrderConditionCount, nextOrderId, nextOrderLevel);
}