大量注文ワールド対応

This commit is contained in:
kimura 2022-10-20 13:23:41 +09:00
parent ee29e52619
commit e69e46c5cd
3 changed files with 35 additions and 34 deletions

View File

@ -46,14 +46,15 @@ public class BulkOrder : MonoBehaviour
}); });
}).AddTo(this); }).AddTo(this);
var gameData = GameDataManager.GameData; var cityGameData = GameDataManager.GetCurrentCityGameData();
var globalGameData = GameDataManager.GameData;
var bulkOrderList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderData>(Const.BulkOrderDataSheet); var bulkOrderList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderData>(Const.BulkOrderDataSheet);
var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet); var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet);
var bulkOrderData = bulkOrderList.First(data => data.id == gameData.OrderIdInProgress); var bulkOrderData = bulkOrderList.First(data => data.id == cityGameData.OrderIdInProgress);
messageText.text = messageList.First(data => data.id == gameData.OrderTextId).RequestText; messageText.text = messageList.First(data => data.id == cityGameData.OrderTextId).RequestText;
coinText.text = bulkOrderData.rewardCoin.ToString(); coinText.text = bulkOrderData.rewardCoin.ToString();
heartText.text = bulkOrderData.rewardHeart.ToString(); heartText.text = bulkOrderData.rewardHeart.ToString();
orderCharacterImage.sprite = bulkOrderCharacter.GetNormalIcon(gameData.OrderIconIndex); orderCharacterImage.sprite = bulkOrderCharacter.GetNormalIcon(cityGameData.OrderIconIndex);
LocalCacheManager.Save(DataTag, bulkOrderData); LocalCacheManager.Save(DataTag, bulkOrderData);
cancelButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ => cancelButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
@ -63,15 +64,15 @@ public class BulkOrder : MonoBehaviour
// 試食数追加 // 試食数追加
foreach (var (id, _, count) in bulkOrderData.OrderList) foreach (var (id, _, count) in bulkOrderData.OrderList)
{ {
if (!gameData.CompletedProductList.Exists(data => data.Number == id)) if (!cityGameData.CompletedProductList.Exists(data => data.Number == id))
{ {
continue; continue;
} }
gameData.AddTastingCustomerCount(count); cityGameData.AddTastingCustomerCount(count);
} }
gameData.CancelOrderId = gameData.OrderIdInProgress; cityGameData.CancelOrderId = cityGameData.OrderIdInProgress;
// カウントリセット // カウントリセット
gameData.OrderConditionCount = 0; globalGameData.OrderConditionCount = 0;
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
// 試食スタート // 試食スタート
BrotherPinkView.Instance.StartTasting(); BrotherPinkView.Instance.StartTasting();
@ -88,11 +89,11 @@ public class BulkOrder : MonoBehaviour
}).AddTo(this); }).AddTo(this);
// 納品チェック // 納品チェック
var completed = gameData.CompletedProductList.Count == bulkOrderData.OrderList.Count(tuple => tuple.productId != 0); var completed = cityGameData.CompletedProductList.Count == bulkOrderData.OrderList.Count(tuple => tuple.productId != 0);
var delivered = gameData.DeliveredOrder.Contains(bulkOrderData.id); var delivered = cityGameData.DeliveredOrder.Contains(bulkOrderData.id);
if (completed) if (completed)
{ {
orderCharacterImage.sprite = bulkOrderCharacter.GetThanksIcon(gameData.OrderIconIndex); orderCharacterImage.sprite = bulkOrderCharacter.GetThanksIcon(cityGameData.OrderIconIndex);
} }
deliveredButton.interactable = completed && !delivered; deliveredButton.interactable = completed && !delivered;
disabledButtonObject.SetActive(!deliveredButton.interactable); disabledButtonObject.SetActive(!deliveredButton.interactable);
@ -104,33 +105,33 @@ public class BulkOrder : MonoBehaviour
{ {
// 獲得 // 獲得
var rarityList = SpreadsheetDataManager.Instance.GetBaseDataList<RarityData>(Const.RarityDataSheet); var rarityList = SpreadsheetDataManager.Instance.GetBaseDataList<RarityData>(Const.RarityDataSheet);
var bonus = CalcBonus(rarityList, gameData.CompletedProductList, bulkOrderData.rewardHeart); var bonus = CalcBonus(rarityList, cityGameData.CompletedProductList, bulkOrderData.rewardHeart);
CoinManager.Instance.AddCoinForBulkOrder(bulkOrderData.rewardCoin + bonus, coinPos); CoinManager.Instance.AddCoinForBulkOrder(bulkOrderData.rewardCoin + bonus, coinPos);
gameData.Coin = CoinManager.Instance.OwnCoin; cityGameData.Coin = CoinManager.Instance.OwnCoin;
/* /*
* *
* WaitAddHeartとMoveHeartは対で使うほうが処理がわかりやすいため * WaitAddHeartとMoveHeartは対で使うほうが処理がわかりやすいため
* *
*/ */
gameData.WaitAddHeart += bulkOrderData.rewardHeart; cityGameData.WaitAddHeart += bulkOrderData.rewardHeart;
HeartMeter.Instance.AddHeartForBulkOrder(heartPos, () => HeartMeter.Instance.AddHeartForBulkOrder(heartPos, () =>
{ {
GameDataManager.GameData.MoveHeart(bulkOrderData.rewardHeart); cityGameData.MoveHeart(bulkOrderData.rewardHeart);
}); });
// カウントリセット // カウントリセット
gameData.OrderConditionCount = 0; globalGameData.OrderConditionCount = 0;
gameData.DeliveredOrder.Add(bulkOrderData.id); cityGameData.DeliveredOrder.Add(bulkOrderData.id);
gameData.BulkOrderDeliveredCount++; cityGameData.BulkOrderDeliveredCount++;
gameData.DailyBulkOrderDeliveredCount++; globalGameData.DailyBulkOrderDeliveredCount++;
#if UNITY_EDITOR #if UNITY_EDITOR
Debug.Log($"Delivered:{gameData.DeliveredOrder.Count}/{bulkOrderData.maxOrder}"); Debug.Log($"Delivered:{cityGameData.DeliveredOrder.Count}/{bulkOrderData.maxOrder}");
#endif #endif
// オーダー上限を超えるとそのLevelでの注文終了 // オーダー上限を超えるとそのLevelでの注文終了
if (gameData.DeliveredOrder.Count == bulkOrderData.maxOrder) if (cityGameData.DeliveredOrder.Count == bulkOrderData.maxOrder)
{ {
gameData.DeliveredOrder.Clear(); cityGameData.DeliveredOrder.Clear();
gameData.AchievedOrderLevel = bulkOrderData.shopLevel; cityGameData.AchievedOrderLevel = bulkOrderData.shopLevel;
} }
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
LocalCacheManager.Load<Action>(AchievedCallbackTag, null)?.Invoke(); LocalCacheManager.Load<Action>(AchievedCallbackTag, null)?.Invoke();
@ -155,7 +156,7 @@ public class BulkOrder : MonoBehaviour
var countByVolume = orderTuple.count / productData.volume; var countByVolume = orderTuple.count / productData.volume;
var bulkProductData = new ProductData(productData, countByVolume){volume = productData.volume * countByVolume}; var bulkProductData = new ProductData(productData, countByVolume){volume = productData.volume * countByVolume};
itemViews[i].SetData(bulkProductData); itemViews[i].SetData(bulkProductData);
if (gameData.CompletedProductList.FirstOrDefault(data => data.Number == orderTuple.id) is { } resultData) if (cityGameData.CompletedProductList.FirstOrDefault(data => data.Number == orderTuple.id) is { } resultData)
{ {
itemViews[i].SetCooked(resultData.Rarity); itemViews[i].SetCooked(resultData.Rarity);
} }
@ -248,8 +249,8 @@ delivered:{cityGameData.DeliveredOrder.Aggregate(string.Empty, (s, data) => $"{s
// キャンセル時retryConditionを使う // キャンセル時retryConditionを使う
var condition = canceled ? orderData.retryCondition : orderData.firstOrderCondition; var condition = canceled ? orderData.retryCondition : orderData.firstOrderCondition;
#if UNITY_EDITOR #if UNITY_EDITOR
Debug.Log($"nextOrderId: {orderData.id} use {(canceled ? "retryCondition" : "firstOrderCondition")} ({cityGameData.OrderConditionCount}/{condition})"); Debug.Log($"nextOrderId: {orderData.id} use {(canceled ? "retryCondition" : "firstOrderCondition")} ({globalGameData.OrderConditionCount}/{condition})");
#endif #endif
return condition <= cityGameData.OrderConditionCount ? orderData : null; return condition <= globalGameData.OrderConditionCount ? orderData : null;
} }
} }

View File

@ -27,15 +27,15 @@ public class BulkOrderAchievedView : MonoBehaviour
{ {
if (LocalCacheManager.Load<BulkOrderData>(BulkOrder.DataTag, null) is BulkOrderData orderData) if (LocalCacheManager.Load<BulkOrderData>(BulkOrder.DataTag, null) is BulkOrderData orderData)
{ {
var gameData = GameDataManager.GameData; var cityGameData = GameDataManager.GetCurrentCityGameData();
var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet); var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet);
var rarityList = SpreadsheetDataManager.Instance.GetBaseDataList<RarityData>(Const.RarityDataSheet); var rarityList = SpreadsheetDataManager.Instance.GetBaseDataList<RarityData>(Const.RarityDataSheet);
var bonus = BulkOrder.CalcBonus(rarityList, gameData.CompletedProductList, orderData.rewardHeart); var bonus = BulkOrder.CalcBonus(rarityList, cityGameData.CompletedProductList, orderData.rewardHeart);
heartText.text = orderData.rewardHeart.ToString(); heartText.text = orderData.rewardHeart.ToString();
coinText.text = orderData.rewardCoin.ToString(); coinText.text = orderData.rewardCoin.ToString();
bonusCoinText.text = bonus.ToString(); bonusCoinText.text = bonus.ToString();
messageText.text = messageList.First(data => data.id == gameData.OrderTextId).ThanksText; messageText.text = messageList.First(data => data.id == cityGameData.OrderTextId).ThanksText;
orderCharacterImage.sprite = bulkOrderCharacter.GetThanksIcon(gameData.OrderIconIndex); orderCharacterImage.sprite = bulkOrderCharacter.GetThanksIcon(cityGameData.OrderIconIndex);
} }
closeButton.OnClickAsObservable().Take(1).Subscribe(_ => closeButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{ {

View File

@ -26,15 +26,15 @@ public class BulkOrderNotifyView : MonoBehaviour
{ {
if (LocalCacheManager.Load<BulkOrderData>(BulkOrder.DataTag, null) is BulkOrderData orderData) if (LocalCacheManager.Load<BulkOrderData>(BulkOrder.DataTag, null) is BulkOrderData orderData)
{ {
var gameData = GameDataManager.GameData; var cityGameData = GameDataManager.GetCurrentCityGameData();
var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet); var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet);
messageText.text = messageList.First(data => data.id == gameData.OrderTextId).RequestText; messageText.text = messageList.First(data => data.id == cityGameData.OrderTextId).RequestText;
coinText.text = orderData.rewardCoin.ToString(); coinText.text = orderData.rewardCoin.ToString();
heartText.text = orderData.rewardHeart.ToString(); heartText.text = orderData.rewardHeart.ToString();
gameData.OrderIconIndex = bulkOrderCharacter.GetRandomIndex(); cityGameData.OrderIconIndex = bulkOrderCharacter.GetRandomIndex();
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
orderCharacterImage.sprite = bulkOrderCharacter.GetNormalIcon(gameData.OrderIconIndex); orderCharacterImage.sprite = bulkOrderCharacter.GetNormalIcon(cityGameData.OrderIconIndex);
var productList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet); var productList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet);
if (productList.FirstOrDefault(data => data.id == orderData.productId1) is ProductData data1) if (productList.FirstOrDefault(data => data.id == orderData.productId1) is ProductData data1)