diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionManager.cs b/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionManager.cs index ddde3d33..aa407c35 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionManager.cs +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionManager.cs @@ -8,6 +8,8 @@ using UnityEngine.UI; public class MissionManager : MonoBehaviour { public static readonly string MissionDataTag = "MissionData"; + public static readonly string CallbackTag = "MissionManagerCallback"; + public static readonly string AchievedCallbackTag = "MissionManagerAchievedCallback"; private static readonly string TimeFormat = "更新まで:{0}時間{1}分{2}秒"; private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger"); private static readonly int CloseTrigger = Animator.StringToHash("CloseTrigger"); @@ -27,6 +29,9 @@ public class MissionManager : MonoBehaviour backgroundAnimator.SetTrigger(CloseTrigger); this.CallWaitForSeconds(.25f, () => { + LocalCacheManager.Load(CallbackTag, null)?.Invoke(); + LocalCacheManager.Remove(CallbackTag); + LocalCacheManager.Remove(AchievedCallbackTag); TransitionManager.Instance.UnloadScene(GameScenes.Mission); }); }).AddTo(this); @@ -98,6 +103,7 @@ public class MissionManager : MonoBehaviour // 達成ID保存 gameData.dailyMissionCompleted = true; GameDataManager.SaveGameData(); + LocalCacheManager.Load(AchievedCallbackTag, null)?.Invoke(); }))); TransitionManager.Instance.LoadSceneAdditive(GameScenes.MissionAchievement); }).AddTo(missionView); @@ -131,6 +137,7 @@ public class MissionManager : MonoBehaviour GameDataManager.SaveGameData(); completeMissionView.ChangeProgress(gameData.dailyMissionIdArray.Length, gameData.dailyMissionAchievedIdArray.Length); completeMissionView.SetButtonActive(gameData.dailyMissionIdArray.Length <= gameData.dailyMissionAchievedIdArray.Length); + LocalCacheManager.Load(AchievedCallbackTag, null)?.Invoke(); }))); TransitionManager.Instance.LoadSceneAdditive(GameScenes.MissionAchievement); }).AddTo(missionView); @@ -177,6 +184,7 @@ public class MissionManager : MonoBehaviour GameDataManager.SaveGameData(); listView.ResetItemList(MissionCategory.Normal); GenerateNormalMission(missionList); + LocalCacheManager.Load(AchievedCallbackTag, null)?.Invoke(); }))); TransitionManager.Instance.LoadSceneAdditive(GameScenes.MissionAchievement); }).AddTo(missionView); @@ -184,6 +192,13 @@ public class MissionManager : MonoBehaviour listView.SetIndicator(MissionCategory.Normal, normalIndicateFlag > 0); } + public static void ShowDialog(Action onClose = null, Action onAchieved = null) + { + LocalCacheManager.Save(CallbackTag, onClose); + LocalCacheManager.Save(AchievedCallbackTag, onAchieved); + TransitionManager.Instance.LoadSceneAdditive(GameScenes.Mission); + } + public static int GetProgressValue(MissionData missionData) { var gameData = GameDataManager.GameData; diff --git a/popcorn/Assets/MyGame/Scripts/HeaderManager.cs b/popcorn/Assets/MyGame/Scripts/HeaderManager.cs index f4d53a14..5e91eda4 100644 --- a/popcorn/Assets/MyGame/Scripts/HeaderManager.cs +++ b/popcorn/Assets/MyGame/Scripts/HeaderManager.cs @@ -21,7 +21,7 @@ public class HeaderManager : MonoBehaviour }); missionButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ => { - TransitionManager.Instance.LoadSceneAdditive(GameScenes.Mission); + MissionManager.ShowDialog(onAchieved:() => missionIndicator.SetActive(CheckMissionIndicate())); }); informationButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ => {