大量注文ワールド対応

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