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

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;
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
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<BulkOrderTextData>(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<BulkOrderTextData>(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()