ミッション条件ごとに最新のチャレンジが表示されるように変更
This commit is contained in:
		
							parent
							
								
									be1d8e4a78
								
							
						
					
					
						commit
						4aa89bb41e
					
				|  | @ -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(); | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
|  | @ -58,41 +58,7 @@ public class MissionManager : MonoBehaviour | |||
| 
 | ||||
|         // ミッション読み込み | ||||
|         var missionList = SpreadsheetDataManager.Instance.GetBaseDataList<MissionData>(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<MissionData> 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; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue