次のオーダーをチェックする処理を修正

This commit is contained in:
kimura 2021-10-12 10:20:31 +09:00
parent 11e9aa555d
commit ea8f5a3800
2 changed files with 14 additions and 6 deletions

View File

@ -110,6 +110,7 @@ public class BulkOrder : MonoBehaviour
// オーダー上限を超えるとそのLevelでの注文終了 // オーダー上限を超えるとそのLevelでの注文終了
if (gameData.DeliveredOrder.Count == bulkOrderData.maxOrder) if (gameData.DeliveredOrder.Count == bulkOrderData.maxOrder)
{ {
gameData.DeliveredOrder.Clear();
gameData.AchievedOrderLevel = bulkOrderData.shopLevel; gameData.AchievedOrderLevel = bulkOrderData.shopLevel;
} }
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();

View File

@ -50,13 +50,14 @@ public class KitchenManager : MonoBehaviour
var bulkOrderList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderData>(Const.BulkOrderDataSheet); var bulkOrderList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderData>(Const.BulkOrderDataSheet);
var bulkOrderData = bulkOrderList.First(data => data.id == gameData.OrderIdInProgress); var bulkOrderData = bulkOrderList.First(data => data.id == gameData.OrderIdInProgress);
var result = CheckBulkOrder(); var result = CheckBulkOrder();
var achieved = bulkOrderData.shopLevel == gameData.AchievedOrderLevel; var achieved = gameData.DeliveredOrder.Contains(bulkOrderData.id);
var cancelled = gameData.OrderIdInProgress == gameData.CancelOrderId;
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
LocalCacheManager.Save(ArchivedCallbackTag, new Action(() => LocalCacheManager.Save(ArchivedCallbackTag, new Action(() =>
{ {
orderIndicatorView.SetIndicate(false, true); orderIndicatorView.SetIndicate(false, true);
})); }));
orderIndicatorView.SetIndicate(result.result, achieved || gameData.OrderIdInProgress == gameData.CancelOrderId); orderIndicatorView.SetIndicate(result.result, achieved || cancelled);
if (result.result) if (result.result)
{ {
var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet); var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet);
@ -65,7 +66,6 @@ public class KitchenManager : MonoBehaviour
{ {
// タップで更新 // タップで更新
gameData.CompletedProductList.Clear(); gameData.CompletedProductList.Clear();
gameData.DeliveredOrder.Clear();
gameData.OrderIdInProgress = result.nextOrderId; gameData.OrderIdInProgress = result.nextOrderId;
if (nextMessageList.Exists(data => data.id == gameData.OrderTextId)) if (nextMessageList.Exists(data => data.id == gameData.OrderTextId))
{ {
@ -127,11 +127,12 @@ public class KitchenManager : MonoBehaviour
{ {
return (false, nextOrderId, nextOrderLevel); return (false, nextOrderId, nextOrderLevel);
} }
var achieved = gameData.DeliveredOrder.Contains(bulkOrderData.id);
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))
{ {
// まだ次のオーダーが設定されてない場合shopLevelの一番若いIDを設定 // まだ次のオーダーが設定されてない場合nextOrderListの一番若いIDを設定
nextOrderId = nextOrderList.First().id; nextOrderId = nextOrderList.First().id;
} }
else if (gameData.OrderIdInProgress == gameData.CancelOrderId && gameData.CancelOrderId > 0) else if (gameData.OrderIdInProgress == gameData.CancelOrderId && gameData.CancelOrderId > 0)
@ -141,13 +142,19 @@ public class KitchenManager : MonoBehaviour
var nextIndex = nextOrderList.FindIndex(data => data.id == gameData.OrderIdInProgress) + 1; var nextIndex = nextOrderList.FindIndex(data => data.id == gameData.OrderIdInProgress) + 1;
nextOrderId = nextOrderList[nextIndex >= orderCount ? 0 : nextIndex].id; nextOrderId = nextOrderList[nextIndex >= orderCount ? 0 : nextIndex].id;
} }
else if (achieved && gameData.DeliveredOrder.Count < bulkOrderData.maxOrder)
{
// 現在のオーダーが達成済みかつmaxOrderに達していなければ次のIDを設定
var orderCount = nextOrderList.Count;
var nextIndex = nextOrderList.FindIndex(data => data.id == gameData.OrderIdInProgress) + 1;
nextOrderId = nextOrderList[nextIndex >= orderCount ? 0 : nextIndex].id;
}
if (gameData.OrderIdInProgress == nextOrderId) if (gameData.OrderIdInProgress == nextOrderId)
{ {
return (false, nextOrderId, nextOrderLevel); return (false, nextOrderId, nextOrderLevel);
} }
Debug.Log($"{gameData.OrderIdInProgress} {gameData.CancelOrderId} {nextOrderId} {gameData.OrderConditionCount}");
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); var isFirst = !nextOrderList.Exists(data => data.id == gameData.CancelOrderId);
var condition = isFirst ? orderData.firstOrderCondition : orderData.retryCondition; var condition = isFirst ? orderData.firstOrderCondition : orderData.retryCondition;