大量注文ワールド対応
This commit is contained in:
parent
ee29e52619
commit
e69e46c5cd
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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(_ =>
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue