大量注文達成可能バッジ通知処理追加

This commit is contained in:
kimura 2021-11-12 18:35:50 +09:00
parent 0a7d7701aa
commit e0367a3c9a
5 changed files with 83 additions and 35 deletions

View File

@ -119,6 +119,9 @@ public class DebugOptionManager : MonoBehaviour
bulkOrderResetButton.OnClickAsObservable().Subscribe(_ =>
{
gameData.AchievedOrderLevel = 0;
gameData.OrderIdInProgress = 0;
gameData.CancelOrderId = 0;
gameData.CompletedProductList.Clear();
}).AddTo(this);
shopLevelUpResetButton.OnClickAsObservable().Subscribe(_ =>

View File

@ -14,8 +14,8 @@ public class BulkOrder : MonoBehaviour
{
public static readonly string DataTag = "BulkOrderData";
public static readonly string MaterialNumberTag = "BulkOrderMaterialNumber";
public static readonly string CancelCallbackTag = "BulkOrderCancelCallback";
public static readonly string AchievedCallbackTag = "BulkOrderAchievedCallback";
private static readonly string CancelCallbackTag = "BulkOrderCancelCallback";
private static readonly string AchievedCallbackTag = "BulkOrderAchievedCallback";
private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger");
private static readonly int CloseTrigger = Animator.StringToHash("CloseTrigger");
[SerializeField] private Animator backgroundAnimator;
@ -57,7 +57,7 @@ public class BulkOrder : MonoBehaviour
LocalCacheManager.Save(DataTag, bulkOrderData);
cancelButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
{
LocalCacheManager.Save(CancelCallbackTag, new Action(() =>
BulkOrderCancelView.ShowDialog(() =>
{
// 試食数追加
if (gameData.CompletedProductList.Exists(data => data.Number == 1))
@ -76,6 +76,8 @@ public class BulkOrder : MonoBehaviour
// カウントリセット
gameData.OrderConditionCount = 0;
GameDataManager.SaveGameData();
LocalCacheManager.Load<Action>(CancelCallbackTag, null)?.Invoke();
LocalCacheManager.Remove(CancelCallbackTag);
// キャンセルと同時に閉じる
transform.parent.SetLocalScale(0);
backgroundAnimator.SetTrigger(CloseTrigger);
@ -83,8 +85,7 @@ public class BulkOrder : MonoBehaviour
{
TransitionManager.Instance.UnloadScene(GameScenes.BulkOrder);
});
}));
TransitionManager.Instance.LoadSceneAdditive(GameScenes.BulkOrderCancel);
});
}).AddTo(this);
// 納品チェック
@ -106,7 +107,7 @@ public class BulkOrder : MonoBehaviour
// 納品
deliveredButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
{
LocalCacheManager.Save(AchievedCallbackTag, new Action(() =>
BulkOrderAchievedView.ShowDialog(() =>
{
// 獲得
var rarityList = SpreadsheetDataManager.Instance.GetBaseDataList<RarityData>(Const.RarityDataSheet);
@ -131,11 +132,12 @@ public class BulkOrder : MonoBehaviour
gameData.AchievedOrderLevel = bulkOrderData.shopLevel;
}
GameDataManager.SaveGameData();
LocalCacheManager.Load<Action>(AchievedCallbackTag, null)?.Invoke();
LocalCacheManager.Remove(AchievedCallbackTag);
TransitionManager.Instance.UnloadScene(GameScenes.BulkOrder);
}));
});
transform.SetLocalScale(0);
backgroundAnimator.SetTrigger(CloseTrigger);
TransitionManager.Instance.LoadSceneAdditive(GameScenes.BulkOrderAchievement);
}).AddTo(this);
var productList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet);
@ -221,6 +223,14 @@ public class BulkOrder : MonoBehaviour
}
}
public static void ShowDialog(Action onComplete = null, Action onAchieved = null, Action onCancel = null)
{
LocalCacheManager.Remove(Const.ProductViewTypeTag);
LocalCacheManager.Save(AchievedCallbackTag, onAchieved);
LocalCacheManager.Save(CancelCallbackTag, onCancel);
TransitionManager.Instance.LoadSceneAdditive(GameScenes.BulkOrder);
}
public static int CalcBonus(List<RarityData> rarityList, List<BulkOrderResultData> resultData, int shopLevel)
{
var totalBonus = 0;

View File

@ -6,6 +6,7 @@ using UnityEngine.UI;
public class BulkOrderAchievedView : MonoBehaviour
{
private static readonly string CallbackTag = "BulkOrderAchievedViewCallback";
private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger");
private static readonly int CloseTrigger = Animator.StringToHash("CloseTrigger");
[SerializeField] private Animator backgroundAnimator;
@ -34,14 +35,8 @@ public class BulkOrderAchievedView : MonoBehaviour
}
closeButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
if (LocalCacheManager.Load<Action>(BulkOrder.AchievedCallbackTag, null) is Action callback)
{
callback.Invoke();
}
if (LocalCacheManager.Load<Action>(KitchenManager.ArchivedCallbackTag, null) is Action kitchenCallback)
{
kitchenCallback.Invoke();
}
LocalCacheManager.Load<Action>(CallbackTag, null)?.Invoke();
LocalCacheManager.Remove(CallbackTag);
transform.parent.SetLocalScale(0);
backgroundAnimator.SetTrigger(CloseTrigger);
this.CallWaitForSeconds(.25f, () =>
@ -50,4 +45,10 @@ public class BulkOrderAchievedView : MonoBehaviour
});
}).AddTo(this);
}
public static void ShowDialog(Action onComplete = null)
{
LocalCacheManager.Save(CallbackTag, onComplete);
TransitionManager.Instance.LoadSceneAdditive(GameScenes.BulkOrderAchievement);
}
}

View File

@ -5,6 +5,7 @@ using UnityEngine.UI;
public class BulkOrderCancelView : MonoBehaviour
{
private static readonly string CallbackTag = "BulkOrderCancelViewCallback";
private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger");
private static readonly int CloseTrigger = Animator.StringToHash("CloseTrigger");
[SerializeField] private Animator backgroundAnimator;
@ -32,14 +33,8 @@ public class BulkOrderCancelView : MonoBehaviour
}).AddTo(this);
cancelButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
if (LocalCacheManager.Load<Action>(BulkOrder.CancelCallbackTag, null) is Action callback)
{
callback.Invoke();
}
if (LocalCacheManager.Load<Action>(KitchenManager.ArchivedCallbackTag, null) is Action kitchenCallback)
{
kitchenCallback.Invoke();
}
LocalCacheManager.Load<Action>(CallbackTag, null)?.Invoke();
LocalCacheManager.Remove(CallbackTag);
transform.parent.SetLocalScale(0);
backgroundAnimator.SetTrigger(CloseTrigger);
this.CallWaitForSeconds(.25f, () =>
@ -48,4 +43,10 @@ public class BulkOrderCancelView : MonoBehaviour
});
}).AddTo(this);
}
public static void ShowDialog(Action onComplete = null)
{
LocalCacheManager.Save(CallbackTag, onComplete);
TransitionManager.Instance.LoadSceneAdditive(GameScenes.BulkOrderCancel);
}
}

View File

@ -11,7 +11,6 @@ using UnityEngine.UI;
public class KitchenManager : MonoBehaviour
{
public static readonly string ArchivedCallbackTag = "KitchenCancelCallback";
private static readonly double refreshWaitTime = 300;
[SerializeField] int refreshRewardCoin = 100;
[SerializeField] private Button cookingButton;
@ -148,10 +147,23 @@ public class KitchenManager : MonoBehaviour
var achieved = bulkOrderData is null || gameData.DeliveredOrder.Contains(bulkOrderData.id) || gameData.AchievedOrderLevel == bulkOrderData.shopLevel;
var cancelled = gameData.OrderIdInProgress == gameData.CancelOrderId;
GameDataManager.SaveGameData();
LocalCacheManager.Save(ArchivedCallbackTag, new Action(() =>
if (bulkOrderData != null)
{
orderIndicatorView.SetIndicate(false, true);
}));
var orderList = new List<int>
{
bulkOrderData.productId1,
bulkOrderData.productId2,
bulkOrderData.productId3,
};
var completed = gameData.CompletedProductList.Count == orderList.Count(x => x != 0);
orderIndicatorView.SetBadgeActive(completed && !achieved);
}
else
{
orderIndicatorView.SetBadgeActive(false);
}
orderIndicatorView.SetIndicate(result.result, achieved || cancelled);
if (result.result)
{
@ -181,10 +193,22 @@ public class KitchenManager : MonoBehaviour
// 通知をタップ後タップ動作を切り替える
orderIndicatorView.SetIndicate(false, false);
orderIndicatorView.TappedPhone.ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(__ =>
orderIndicatorView.TappedPhone
.ThrottleFirst(TimeSpan.FromSeconds(1f))
.Take(1)
.Subscribe(__ =>
{
LocalCacheManager.Remove(Const.ProductViewTypeTag);
TransitionManager.Instance.LoadSceneAdditive(GameScenes.BulkOrder);
BulkOrder.ShowDialog(
onAchieved: () =>
{
orderIndicatorView.SetIndicate(false, true);
orderIndicatorView.SetBadgeActive(false);
},
onCancel: () =>
{
orderIndicatorView.SetIndicate(false, true);
orderIndicatorView.SetBadgeActive(false);
});
}).AddTo(this);
}).AddTo(this);
}
@ -196,8 +220,17 @@ public class KitchenManager : MonoBehaviour
.ThrottleFirst(TimeSpan.FromSeconds(1f))
.Subscribe(_ =>
{
LocalCacheManager.Remove(Const.ProductViewTypeTag);
TransitionManager.Instance.LoadSceneAdditive(GameScenes.BulkOrder);
BulkOrder.ShowDialog(
onAchieved: () =>
{
orderIndicatorView.SetIndicate(false, true);
orderIndicatorView.SetBadgeActive(false);
},
onCancel: () =>
{
orderIndicatorView.SetIndicate(false, true);
orderIndicatorView.SetBadgeActive(false);
});
}).AddTo(this);
}
}