retryConditionの使用判定をキャンセル時に修正
This commit is contained in:
parent
ff5d2b1831
commit
7ced53d104
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue