retryConditionの使用判定をキャンセル時に修正
This commit is contained in:
parent
ff5d2b1831
commit
7ced53d104
|
|
@ -298,7 +298,7 @@ public class KitchenManager : MonoBehaviour
|
||||||
|
|
||||||
if (!result.newOrder)
|
if (!result.newOrder)
|
||||||
{
|
{
|
||||||
if (gameData.OrderIdInProgress != gameData.CancelOrderId)
|
if (!cancelled)
|
||||||
{
|
{
|
||||||
SetPhoneTap();
|
SetPhoneTap();
|
||||||
}
|
}
|
||||||
|
|
@ -368,39 +368,34 @@ public class KitchenManager : MonoBehaviour
|
||||||
private (bool newOrder, int nextOrderId, int nextOrderLevel) CheckBulkOrder()
|
private (bool newOrder, int nextOrderId, int nextOrderLevel) CheckBulkOrder()
|
||||||
{
|
{
|
||||||
var gameData = GameDataManager.GameData;
|
var gameData = GameDataManager.GameData;
|
||||||
var nextOrderLevel = 0;
|
var nextOrderLevel = gameData.AchievedOrderLevel + 1;
|
||||||
var nextOrderId = gameData.OrderIdInProgress;
|
var nextOrderId = gameData.OrderIdInProgress;
|
||||||
var bulkOrderList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderData>(Const.BulkOrderDataSheet);
|
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)
|
if (gameData.ViewedShopLevel < nextOrderLevel)
|
||||||
{
|
{
|
||||||
return (false, nextOrderId, 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 achieved = gameData.DeliveredOrder.Contains(gameData.OrderIdInProgress);
|
||||||
|
var canceled = gameData.OrderIdInProgress == gameData.CancelOrderId;
|
||||||
var nextOrderList = bulkOrderList.Where(data => data.shopLevel == nextOrderLevel).ToList();
|
var nextOrderList = bulkOrderList.Where(data => data.shopLevel == nextOrderLevel).ToList();
|
||||||
if (!nextOrderList.Exists(data => data.id == gameData.OrderIdInProgress))
|
if (!nextOrderList.Exists(data => data.id == gameData.OrderIdInProgress))
|
||||||
{
|
{
|
||||||
// まだ次のオーダーが設定されてない場合nextOrderListの一番若いIDを設定
|
// まだ次のオーダーが設定されてない場合nextOrderListの一番若いIDを設定
|
||||||
nextOrderId = nextOrderList.First().id;
|
nextOrderId = nextOrderList.First().id;
|
||||||
}
|
}
|
||||||
else if (achieved || gameData.OrderIdInProgress == gameData.CancelOrderId && gameData.CancelOrderId > 0)
|
else if (achieved || canceled)
|
||||||
{
|
{
|
||||||
// 達成済みか、キャンセルされた場合次のIDを設定
|
// 達成済みか、キャンセルされた場合次のIDを設定
|
||||||
// 未達成のオーダー
|
// 未達成のオーダー
|
||||||
var orderList = nextOrderList.Where(data => !gameData.DeliveredOrder.Contains(data.id)).ToList();
|
var orderList = nextOrderList.Where(data => !gameData.DeliveredOrder.Contains(data.id)).ToList();
|
||||||
|
if (orderList.Count <= 0)
|
||||||
if (orderList.Count > 0)
|
|
||||||
{
|
|
||||||
var nextIndex = orderList.FindIndex(data => data.id > gameData.OrderIdInProgress);
|
|
||||||
nextOrderId = orderList[Mathf.Max(0, nextIndex)].id;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
// オーダーリストがすべて達成済みの場合エラー
|
// オーダーリストがすべて達成済みの場合エラー
|
||||||
|
|
@ -409,18 +404,26 @@ public class KitchenManager : MonoBehaviour
|
||||||
$"delivered:{gameData.DeliveredOrder.Aggregate(string.Empty, (s, data) => $"{s}, {data}")}\n" +
|
$"delivered:{gameData.DeliveredOrder.Aggregate(string.Empty, (s, data) => $"{s}, {data}")}\n" +
|
||||||
$"orderList:{nextOrderList.Aggregate(string.Empty, (s, data) => $"{s}, {data.id}")}");
|
$"orderList:{nextOrderList.Aggregate(string.Empty, (s, data) => $"{s}, {data.id}")}");
|
||||||
#endif
|
#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)
|
if (gameData.OrderIdInProgress == nextOrderId)
|
||||||
{
|
{
|
||||||
return (false, nextOrderId, nextOrderLevel);
|
return (false, nextOrderId, nextOrderLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
var orderData = nextOrderList.First(data => data.id == nextOrderId);
|
var orderData = nextOrderList.First(data => data.id == nextOrderId);
|
||||||
var isFirst = !nextOrderList.Exists(data => data.id == gameData.CancelOrderId);
|
// キャンセル時retryConditionを使う
|
||||||
var condition = isFirst ? orderData.firstOrderCondition : orderData.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);
|
return (condition <= gameData.OrderConditionCount, nextOrderId, nextOrderLevel);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue