Merge branch 'develop' of bitbucket.org:usaya/popcorn into develop
This commit is contained in:
commit
a18548edee
|
|
@ -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