レベルアップ時に大量注文の新着を確認する処理を追加

This commit is contained in:
kimura 2021-12-15 10:51:56 +09:00
parent e6c045e2b1
commit d5e4308503
1 changed files with 64 additions and 51 deletions

View File

@ -21,7 +21,8 @@ public class KitchenManager : MonoBehaviour
[SerializeField] private BulkOrderIndicatorView orderIndicatorView; [SerializeField] private BulkOrderIndicatorView orderIndicatorView;
private readonly Subject<Unit> showAdDialogSubject = new Subject<Unit>(); private readonly Subject<Unit> showAdDialogSubject = new Subject<Unit>();
IDisposable timerDisposable = null; private IDisposable timerDisposable = null;
private IDisposable tapPhoneDisposable;
// Start is called before the first frame update // Start is called before the first frame update
void Start() void Start()
@ -42,6 +43,8 @@ public class KitchenManager : MonoBehaviour
var achieved = bulkOrderData is null || gameData.DeliveredOrder.Contains(bulkOrderData.id) || gameData.AchievedOrderLevel == bulkOrderData.shopLevel; var achieved = bulkOrderData is null || gameData.DeliveredOrder.Contains(bulkOrderData.id) || gameData.AchievedOrderLevel == bulkOrderData.shopLevel;
var cancelled = gameData.OrderIdInProgress == gameData.CancelOrderId; var cancelled = gameData.OrderIdInProgress == gameData.CancelOrderId;
CheckOrderAndSetPhoneTap();
// 大量注文達成通知 // 大量注文達成通知
if (bulkOrderData == null) if (bulkOrderData == null)
{ {
@ -59,6 +62,12 @@ public class KitchenManager : MonoBehaviour
orderIndicatorView.SetBadgeActive(completed && !achieved && !cancelled); orderIndicatorView.SetBadgeActive(completed && !achieved && !cancelled);
} }
// 大量注文の調理から戻ってきたときにダイアログ開く
if (LocalCacheManager.Load(Const.ProductViewTypeTag, ProductViewType.Default) == ProductViewType.BulkOrder)
{
BulkOrderShowDialogWithSetup();
}
// tutorial // tutorial
if (!gameData.FinishedFlags.HasFlag(TutorialFlag.FirstPlay)) if (!gameData.FinishedFlags.HasFlag(TutorialFlag.FirstPlay))
{ {
@ -116,7 +125,7 @@ public class KitchenManager : MonoBehaviour
.DelaySubscription(TimeSpan.FromSeconds(.4f)) .DelaySubscription(TimeSpan.FromSeconds(.4f))
.Subscribe(_ => .Subscribe(_ =>
{ {
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1); ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1, CheckOrderAndSetPhoneTap);
}).AddTo(this); }).AddTo(this);
GameDataObserver.Instance.HeartObserver GameDataObserver.Instance.HeartObserver
@ -197,36 +206,33 @@ public class KitchenManager : MonoBehaviour
adButton.gameObject.SetActive(false); adButton.gameObject.SetActive(false);
kitchenView.SetNormalAnimation(); kitchenView.SetNormalAnimation();
} }
#if UNITY_EDITOR #if UNITY_EDITOR
Debug.Log($"remaining: {remaining}"); Debug.Log($"remaining: {remaining}");
Market.StockFlavorLog(); Market.StockFlavorLog();
#endif #endif
// 大量注文タップ時の挙動設定
void CheckOrderAndSetPhoneTap()
{
var result = CheckBulkOrder(); var result = CheckBulkOrder();
orderIndicatorView.SetIndicate(result.newOrder, achieved || cancelled); orderIndicatorView.SetIndicate(result.newOrder, achieved || cancelled);
if (LocalCacheManager.Load(Const.ProductViewTypeTag, ProductViewType.Default) == ProductViewType.BulkOrder)
{
BulkOrderShowDialogWithSetup();
}
if (!result.newOrder) if (!result.newOrder)
{ {
if (gameData.OrderIdInProgress != gameData.CancelOrderId) if (gameData.OrderIdInProgress != gameData.CancelOrderId)
{ {
orderIndicatorView.TappedPhone SetPhoneTap();
.ThrottleFirst(TimeSpan.FromSeconds(1f))
.Subscribe(_ =>
{
BulkOrderShowDialogWithSetup();
}).AddTo(this);
} }
} }
else else
{ {
// 新着処理
SoundManager.Instance.StopSE("se_Main_phone_sound"); SoundManager.Instance.StopSE("se_Main_phone_sound");
var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet); var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet);
var nextMessageList = messageList.Where(data => data.shopLevel == result.nextOrderLevel).ToList(); var nextMessageList = messageList.Where(data => data.shopLevel == result.nextOrderLevel).ToList();
orderIndicatorView.TappedPhone.Take(1).Subscribe(_ => tapPhoneDisposable?.Dispose();
tapPhoneDisposable = orderIndicatorView.TappedPhone.Take(1).Subscribe(_ =>
{ {
// タップで更新 // タップで更新
gameData.CompletedProductList.Clear(); gameData.CompletedProductList.Clear();
@ -248,15 +254,22 @@ public class KitchenManager : MonoBehaviour
BulkOrderNotifyView.ShowDialog(BulkOrderShowDialogWithSetup); BulkOrderNotifyView.ShowDialog(BulkOrderShowDialogWithSetup);
// 通知をタップ後タップ動作を切り替える // 通知をタップ後タップ動作を切り替える
SetPhoneTap();
orderIndicatorView.SetIndicate(false, false); orderIndicatorView.SetIndicate(false, false);
orderIndicatorView.TappedPhone }).AddTo(this);
}
}
}
private void SetPhoneTap()
{
tapPhoneDisposable?.Dispose();
tapPhoneDisposable = orderIndicatorView.TappedPhone
.ThrottleFirst(TimeSpan.FromSeconds(1f)) .ThrottleFirst(TimeSpan.FromSeconds(1f))
.Subscribe(__ => .Subscribe(_ =>
{ {
BulkOrderShowDialogWithSetup(); BulkOrderShowDialogWithSetup();
}).AddTo(this); }).AddTo(this);
}).AddTo(this);
}
} }
private void BulkOrderShowDialogWithSetup() private void BulkOrderShowDialogWithSetup()