大量注文リファクタ
This commit is contained in:
parent
328b22d51c
commit
a6089901d5
|
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue