大量注文リファクタ

This commit is contained in:
kimura 2022-10-14 18:21:00 +09:00
parent 328b22d51c
commit a6089901d5
1 changed files with 29 additions and 83 deletions

View File

@ -30,6 +30,7 @@ public class BulkOrder : MonoBehaviour
[SerializeField] private BulkOrderItemView itemView1; [SerializeField] private BulkOrderItemView itemView1;
[SerializeField] private BulkOrderItemView itemView2; [SerializeField] private BulkOrderItemView itemView2;
[SerializeField] private BulkOrderItemView itemView3; [SerializeField] private BulkOrderItemView itemView3;
private BulkOrderItemView[] itemViews => new[] { itemView1, itemView2, itemView3 };
[SerializeField] private BulkOrderCharacter bulkOrderCharacter; [SerializeField] private BulkOrderCharacter bulkOrderCharacter;
[SerializeField] private Image orderCharacterImage; [SerializeField] private Image orderCharacterImage;
@ -60,17 +61,13 @@ public class BulkOrder : MonoBehaviour
BulkOrderCancelView.ShowDialog(() => BulkOrderCancelView.ShowDialog(() =>
{ {
// 試食数追加 // 試食数追加
if (gameData.CompletedProductList.Exists(data => data.Number == 1)) foreach (var (id, _, count) in bulkOrderData.OrderList)
{ {
gameData.AddTastingCustomerCount(bulkOrderData.count1); if (!gameData.CompletedProductList.Exists(data => data.Number == id))
} {
else if (gameData.CompletedProductList.Exists(data => data.Number == 2)) continue;
{ }
gameData.AddTastingCustomerCount(bulkOrderData.count2); gameData.AddTastingCustomerCount(count);
}
else if (gameData.CompletedProductList.Exists(data => data.Number == 3))
{
gameData.AddTastingCustomerCount(bulkOrderData.count3);
} }
gameData.CancelOrderId = gameData.OrderIdInProgress; gameData.CancelOrderId = gameData.OrderIdInProgress;
// カウントリセット // カウントリセット
@ -91,7 +88,7 @@ public class BulkOrder : MonoBehaviour
}).AddTo(this); }).AddTo(this);
// 納品チェック // 納品チェック
var completed = gameData.CompletedProductList.Count == bulkOrderData.OrderList.Count(data => data.productId != 0); var completed = gameData.CompletedProductList.Count == bulkOrderData.OrderList.Count(tuple => tuple.productId != 0);
var delivered = gameData.DeliveredOrder.Contains(bulkOrderData.id); var delivered = gameData.DeliveredOrder.Contains(bulkOrderData.id);
if (completed) if (completed)
{ {
@ -127,7 +124,7 @@ public class BulkOrder : MonoBehaviour
gameData.BulkOrderDeliveredCount++; gameData.BulkOrderDeliveredCount++;
gameData.DailyBulkOrderDeliveredCount++; gameData.DailyBulkOrderDeliveredCount++;
#if UNITY_EDITOR #if UNITY_EDITOR
Debug.Log($"current:{gameData.DeliveredOrder.Count} max:{bulkOrderData.maxOrder}"); Debug.Log($"Delivered:{gameData.DeliveredOrder.Count}/{bulkOrderData.maxOrder}");
#endif #endif
// オーダー上限を超えるとそのLevelでの注文終了 // オーダー上限を超えるとそのLevelでの注文終了
if (gameData.DeliveredOrder.Count == bulkOrderData.maxOrder) if (gameData.DeliveredOrder.Count == bulkOrderData.maxOrder)
@ -145,86 +142,35 @@ public class BulkOrder : MonoBehaviour
}).AddTo(this); }).AddTo(this);
var productList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet); var productList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet);
if (productList.FirstOrDefault(data => data.id == bulkOrderData.productId1) is ProductData data1) var orderList = bulkOrderData.OrderList;
for (var i = 0; i < itemViews.Length; i++)
{ {
var countByVolume = bulkOrderData.count1 / data1.volume; itemViews[i].gameObject.SetActive(true);
var productData = new ProductData(data1, countByVolume); var orderTuple = orderList[i];
productData.volume *= countByVolume; if (productList.FirstOrDefault(data => data.id == orderTuple.productId) is not { } productData)
itemView1.SetData(productData);
if (gameData.CompletedProductList.FirstOrDefault(data => data.Number == 1) is BulkOrderResultData resultData)
{ {
itemView1.SetCooked(resultData.Rarity); itemViews[i].gameObject.SetActive(false);
continue;
}
var countByVolume = orderTuple.count / productData.volume;
var bulkProductData = new ProductData(productData, countByVolume){volume = productData.volume * countByVolume};
itemViews[i].SetData(bulkProductData);
if (gameData.CompletedProductList.FirstOrDefault(data => data.Number == orderTuple.id) is { } resultData)
{
itemViews[i].SetCooked(resultData.Rarity);
} }
else else
{ {
itemView1.SetButtonActive(itemView1.CheckAmount(productData)); itemViews[i].SetButtonActive(itemViews[i].CheckAmount(bulkProductData));
} }
itemView1.CookingButton.ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
itemViews[i].CookingButton.ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
{ {
LocalCacheManager.Save(Const.ProductViewTypeTag, ProductViewType.BulkOrder); LocalCacheManager.Save(Const.ProductViewTypeTag, ProductViewType.BulkOrder);
LocalCacheManager.Save(MaterialNumberTag, 1); LocalCacheManager.Save(MaterialNumberTag, orderTuple.id);
LocalCacheManager.Save(PopcornGameManager.CookingDataTag, productData); LocalCacheManager.Save(PopcornGameManager.CookingDataTag, bulkProductData);
RecipeDetailView.ShowDialog(); RecipeDetailView.ShowDialog();
}).AddTo(itemView1); }).AddTo(itemViews[i]);
itemView1.gameObject.SetActive(true);
}
else
{
itemView1.gameObject.SetActive(false);
}
if (productList.FirstOrDefault(data => data.id == bulkOrderData.productId2) is ProductData data2)
{
var countByVolume = bulkOrderData.count2 / data2.volume;
var productData = new ProductData(data2, countByVolume);
productData.volume *= countByVolume;
itemView2.SetData(productData);
if (gameData.CompletedProductList.FirstOrDefault(data => data.Number == 2) is BulkOrderResultData resultData)
{
itemView2.SetCooked(resultData.Rarity);
}
else
{
itemView2.SetButtonActive(itemView2.CheckAmount(productData));
}
itemView2.CookingButton.ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
{
LocalCacheManager.Save(Const.ProductViewTypeTag, ProductViewType.BulkOrder);
LocalCacheManager.Save(MaterialNumberTag, 2);
LocalCacheManager.Save(PopcornGameManager.CookingDataTag, productData);
RecipeDetailView.ShowDialog();
}).AddTo(itemView2);
itemView2.gameObject.SetActive(true);
}
else
{
itemView2.gameObject.SetActive(false);
}
if (productList.FirstOrDefault(data => data.id == bulkOrderData.productId3) is ProductData data3)
{
var countByVolume = bulkOrderData.count3 / data3.volume;
var productData = new ProductData(data3, countByVolume);
productData.volume *= countByVolume;
itemView3.SetData(productData);
if (gameData.CompletedProductList.FirstOrDefault(data => data.Number == 3) is BulkOrderResultData resultData)
{
itemView3.SetCooked(resultData.Rarity);
}
else
{
itemView3.SetButtonActive(itemView3.CheckAmount(productData));
}
itemView3.CookingButton.ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
{
LocalCacheManager.Save(Const.ProductViewTypeTag, ProductViewType.BulkOrder);
LocalCacheManager.Save(MaterialNumberTag, 3);
LocalCacheManager.Save(PopcornGameManager.CookingDataTag, productData);
RecipeDetailView.ShowDialog();
}).AddTo(itemView3);
itemView3.gameObject.SetActive(true);
}
else
{
itemView3.gameObject.SetActive(false);
} }
} }