From 4aa89bb41ebf0f5eeed2006777f3f4770efb2096 Mon Sep 17 00:00:00 2001 From: kimura Date: Thu, 28 Oct 2021 11:15:24 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=9F=E3=83=83=E3=82=B7=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E3=81=94=E3=81=A8=E3=81=AB=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E3=81=AE=E3=83=81=E3=83=A3=E3=83=AC=E3=83=B3=E3=82=B8=E3=81=8C?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Main/Scripts/MissionCompleteView.cs | 1 + .../Scenes/Main/Scripts/MissionListView.cs | 11 +++ .../Scenes/Main/Scripts/MissionManager.cs | 82 +++++++++++-------- 3 files changed, 58 insertions(+), 36 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionCompleteView.cs b/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionCompleteView.cs index 3681148c..5e59eb2f 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionCompleteView.cs +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionCompleteView.cs @@ -17,6 +17,7 @@ public class MissionCompleteView : MonoBehaviour private void Start() { var (missionData, callback) = LocalCacheManager.Load< (MissionData, Action)>(MissionManager.MissionDataTag); + LocalCacheManager.Remove(MissionManager.MissionDataTag); closeButton.OnClickAsObservable().Subscribe(_ => { callback?.Invoke(); diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionListView.cs b/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionListView.cs index 1dda5c5f..126fa088 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionListView.cs +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionListView.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using UniRx; using UnityEngine; using UnityEngine.UI; @@ -49,6 +50,16 @@ public class MissionListView : MonoBehaviour }).AddTo(this); } + public void ResetItemList(MissionCategory category) + { + var index = tabs.FindIndex(x => x.category == category); + if (index == -1) + { + return; + } + tabs[index].content.DestroyAllChildrens(); + } + public MissionView AddItemView(MissionData missionData) { var index = tabs.FindIndex(x => x.category == missionData.Category); diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionManager.cs b/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionManager.cs index 00e97085..ddde3d33 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionManager.cs +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/MissionManager.cs @@ -58,41 +58,7 @@ public class MissionManager : MonoBehaviour // ミッション読み込み var missionList = SpreadsheetDataManager.Instance.GetBaseDataList(Const.MissionDataSheet); - - // ミッション表示 - int normalIndicateFlag = 0; - foreach (var missionData in missionList.Where(data => data.Category == MissionCategory.Normal && data.shopLevel <= gameData.ViewedShopLevel)) - { - var missionView = listView.AddItemView(missionData); - var progressValue = GetProgressValue(missionData); - missionView.SetData(missionData, progressValue); - missionView.SetButtonActive(missionData.count <= progressValue); - if (GameDataManager.GameData.AchievedMission.Contains(missionData.id)) // 達成済み - { - missionView.SetRewarded(); - } - else if (missionData.count <= progressValue) - { - Debug.Log($"{missionData.Category},{missionData.count},{missionData.text}"); - normalIndicateFlag++; - } - - // リワード獲得 - missionView.RewardButton.ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ => - { - normalIndicateFlag--; - listView.SetIndicator(MissionCategory.Normal, normalIndicateFlag > 0); - LocalCacheManager.Save(MissionDataTag, (missionData, new Action(() => - { - GetReward(missionData); - missionView.SetRewarded(); - // 達成ID保存 - GameDataManager.GameData.AchievedMission.Add(missionData.id); - GameDataManager.SaveGameData(); - }))); - TransitionManager.Instance.LoadSceneAdditive(GameScenes.MissionAchievement); - }).AddTo(missionView); - } + GenerateNormalMission(missionList); // dailyMission // コンプリートミッション @@ -170,10 +136,54 @@ public class MissionManager : MonoBehaviour }).AddTo(missionView); } listView.SetTab(MissionCategory.Daily); - listView.SetIndicator(MissionCategory.Normal, normalIndicateFlag > 0); listView.SetIndicator(MissionCategory.Daily, dailyIndicateFlag > 0); } + private void GenerateNormalMission(List missionList) + { + // ミッション表示 + int normalIndicateFlag = 0; + var latestMissionList = missionList + .Where(data => data.Category == MissionCategory.Normal && data.shopLevel <= GameDataManager.GameData.ViewedShopLevel) + .GroupBy(data => data.Condition, (cond, list) => + { + return list.FirstOrDefault(data => !GameDataManager.GameData.AchievedMission.Contains(data.id)) ?? list.Last(); + }); + foreach (var missionData in latestMissionList) + { + var missionView = listView.AddItemView(missionData); + var progressValue = GetProgressValue(missionData); + missionView.SetData(missionData, progressValue); + missionView.SetButtonActive(missionData.count <= progressValue); + if (GameDataManager.GameData.AchievedMission.Contains(missionData.id)) // 達成済み + { + missionView.SetRewarded(); + } + else if (missionData.count <= progressValue) + { + normalIndicateFlag++; + } + + // リワード獲得 + missionView.RewardButton.ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ => + { + normalIndicateFlag--; + listView.SetIndicator(MissionCategory.Normal, normalIndicateFlag > 0); + LocalCacheManager.Save(MissionDataTag, (missionData, new Action(() => + { + GetReward(missionData); + // 達成ID保存 + GameDataManager.GameData.AchievedMission.Add(missionData.id); + GameDataManager.SaveGameData(); + listView.ResetItemList(MissionCategory.Normal); + GenerateNormalMission(missionList); + }))); + TransitionManager.Instance.LoadSceneAdditive(GameScenes.MissionAchievement); + }).AddTo(missionView); + } + listView.SetIndicator(MissionCategory.Normal, normalIndicateFlag > 0); + } + public static int GetProgressValue(MissionData missionData) { var gameData = GameDataManager.GameData;