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