diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/KitchenManager.cs b/popcorn/Assets/MyGame/Scenes/Main/Scripts/KitchenManager.cs index dbe5058e..7dd5290c 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/Scripts/KitchenManager.cs +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/KitchenManager.cs @@ -21,7 +21,8 @@ public class KitchenManager : MonoBehaviour [SerializeField] private BulkOrderIndicatorView orderIndicatorView; private readonly Subject showAdDialogSubject = new Subject(); - IDisposable timerDisposable = null; + private IDisposable timerDisposable = null; + private IDisposable tapPhoneDisposable; // Start is called before the first frame update void Start() @@ -41,6 +42,8 @@ public class KitchenManager : MonoBehaviour var bulkOrderData = bulkOrderList.FirstOrDefault(data => data.id == gameData.OrderIdInProgress); var achieved = bulkOrderData is null || gameData.DeliveredOrder.Contains(bulkOrderData.id) || gameData.AchievedOrderLevel == bulkOrderData.shopLevel; var cancelled = gameData.OrderIdInProgress == gameData.CancelOrderId; + + CheckOrderAndSetPhoneTap(); // 大量注文達成通知 if (bulkOrderData == null) @@ -58,7 +61,13 @@ public class KitchenManager : MonoBehaviour var completed = gameData.CompletedProductList.Count == orderList.Count(x => x != 0); orderIndicatorView.SetBadgeActive(completed && !achieved && !cancelled); } - + + // 大量注文の調理から戻ってきたときにダイアログ開く + if (LocalCacheManager.Load(Const.ProductViewTypeTag, ProductViewType.Default) == ProductViewType.BulkOrder) + { + BulkOrderShowDialogWithSetup(); + } + // tutorial if (!gameData.FinishedFlags.HasFlag(TutorialFlag.FirstPlay)) { @@ -116,7 +125,7 @@ public class KitchenManager : MonoBehaviour .DelaySubscription(TimeSpan.FromSeconds(.4f)) .Subscribe(_ => { - ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1); + ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1, CheckOrderAndSetPhoneTap); }).AddTo(this); GameDataObserver.Instance.HeartObserver @@ -197,66 +206,70 @@ public class KitchenManager : MonoBehaviour adButton.gameObject.SetActive(false); kitchenView.SetNormalAnimation(); } + #if UNITY_EDITOR Debug.Log($"remaining: {remaining}"); Market.StockFlavorLog(); #endif - var result = CheckBulkOrder(); - orderIndicatorView.SetIndicate(result.newOrder, achieved || cancelled); - if (LocalCacheManager.Load(Const.ProductViewTypeTag, ProductViewType.Default) == ProductViewType.BulkOrder) - { - BulkOrderShowDialogWithSetup(); - } - if (!result.newOrder) + // 大量注文タップ時の挙動設定 + void CheckOrderAndSetPhoneTap() { - if (gameData.OrderIdInProgress != gameData.CancelOrderId) + var result = CheckBulkOrder(); + orderIndicatorView.SetIndicate(result.newOrder, achieved || cancelled); + + if (!result.newOrder) { - orderIndicatorView.TappedPhone - .ThrottleFirst(TimeSpan.FromSeconds(1f)) - .Subscribe(_ => + if (gameData.OrderIdInProgress != gameData.CancelOrderId) + { + SetPhoneTap(); + } + } + else + { + // 新着処理 + SoundManager.Instance.StopSE("se_Main_phone_sound"); + var messageList = SpreadsheetDataManager.Instance.GetBaseDataList(Const.BulkOrderTextDataSheet); + var nextMessageList = messageList.Where(data => data.shopLevel == result.nextOrderLevel).ToList(); + tapPhoneDisposable?.Dispose(); + tapPhoneDisposable = orderIndicatorView.TappedPhone.Take(1).Subscribe(_ => + { + // タップで更新 + gameData.CompletedProductList.Clear(); + gameData.OrderIdInProgress = result.nextOrderId; + if (nextMessageList.Exists(data => data.id == gameData.OrderTextId)) { - BulkOrderShowDialogWithSetup(); - }).AddTo(this); + var nextMessageIndex = nextMessageList.FindIndex(data => data.id == gameData.OrderTextId) + 1; + gameData.OrderTextId = nextMessageList[nextMessageIndex >= nextMessageList.Count ? 0 : nextMessageIndex].id; + } + else + { + gameData.OrderTextId = nextMessageList.First().id; + } + + GameDataManager.SaveGameData(); + + var orderData = bulkOrderList.First(data => data.id == result.nextOrderId); + LocalCacheManager.Save(BulkOrder.DataTag, orderData); + BulkOrderNotifyView.ShowDialog(BulkOrderShowDialogWithSetup); + + // 通知をタップ後タップ動作を切り替える + SetPhoneTap(); + orderIndicatorView.SetIndicate(false, false); + }).AddTo(this); } } - else - { - SoundManager.Instance.StopSE("se_Main_phone_sound"); - - var messageList = SpreadsheetDataManager.Instance.GetBaseDataList(Const.BulkOrderTextDataSheet); - var nextMessageList = messageList.Where(data => data.shopLevel == result.nextOrderLevel).ToList(); - orderIndicatorView.TappedPhone.Take(1).Subscribe(_ => + } + + private void SetPhoneTap() + { + tapPhoneDisposable?.Dispose(); + tapPhoneDisposable = orderIndicatorView.TappedPhone + .ThrottleFirst(TimeSpan.FromSeconds(1f)) + .Subscribe(_ => { - // タップで更新 - gameData.CompletedProductList.Clear(); - gameData.OrderIdInProgress = result.nextOrderId; - if (nextMessageList.Exists(data => data.id == gameData.OrderTextId)) - { - var nextMessageIndex = nextMessageList.FindIndex(data => data.id == gameData.OrderTextId) + 1; - gameData.OrderTextId = nextMessageList[nextMessageIndex >= nextMessageList.Count ? 0 : nextMessageIndex].id; - } - else - { - gameData.OrderTextId = nextMessageList.First().id; - } - - GameDataManager.SaveGameData(); - - var orderData = bulkOrderList.First(data => data.id == result.nextOrderId); - LocalCacheManager.Save(BulkOrder.DataTag, orderData); - BulkOrderNotifyView.ShowDialog(BulkOrderShowDialogWithSetup); - - // 通知をタップ後タップ動作を切り替える - orderIndicatorView.SetIndicate(false, false); - orderIndicatorView.TappedPhone - .ThrottleFirst(TimeSpan.FromSeconds(1f)) - .Subscribe(__ => - { - BulkOrderShowDialogWithSetup(); - }).AddTo(this); + BulkOrderShowDialogWithSetup(); }).AddTo(this); - } } private void BulkOrderShowDialogWithSetup()