シナリオ再生対応
This commit is contained in:
parent
966c678b32
commit
0bb77d1b3f
|
|
@ -372,6 +372,8 @@ public class DebugOptionManager : MonoBehaviour
|
||||||
|
|
||||||
resetWorldMapButton.OnClickAsObservable().Subscribe(_ =>
|
resetWorldMapButton.OnClickAsObservable().Subscribe(_ =>
|
||||||
{
|
{
|
||||||
|
globalGameData.UsedScriptCondition.Clear();
|
||||||
|
globalGameData.UsedItemCondition.Clear();
|
||||||
globalGameData.CityGameDataKeyValues = new CityGameDataDict.CityGameDataKeyValue[]{};
|
globalGameData.CityGameDataKeyValues = new CityGameDataDict.CityGameDataKeyValue[]{};
|
||||||
globalGameData.OnDeserialized();
|
globalGameData.OnDeserialized();
|
||||||
globalGameData.PartTimerElapsed = 0;
|
globalGameData.PartTimerElapsed = 0;
|
||||||
|
|
|
||||||
|
|
@ -213,6 +213,10 @@ public sealed class GameData {
|
||||||
[DataMember(Name = "Data73")]
|
[DataMember(Name = "Data73")]
|
||||||
private int[] usedItemCondition;
|
private int[] usedItemCondition;
|
||||||
public List<int> UsedItemCondition;
|
public List<int> UsedItemCondition;
|
||||||
|
|
||||||
|
[DataMember(Name = "Data74")]
|
||||||
|
private int[] usedScriptCondition;
|
||||||
|
public List<int> UsedScriptCondition;
|
||||||
|
|
||||||
// mission
|
// mission
|
||||||
[DataMember(Name = "Data1001")]
|
[DataMember(Name = "Data1001")]
|
||||||
|
|
@ -584,6 +588,7 @@ public sealed class GameData {
|
||||||
CityGameDataDict = new CityGameDataDict(CityGameDataKeyValues);
|
CityGameDataDict = new CityGameDataDict(CityGameDataKeyValues);
|
||||||
FundingDict = new FundingDict(FundingDictKeyValues);
|
FundingDict = new FundingDict(FundingDictKeyValues);
|
||||||
UsedItemCondition = usedItemCondition?.ToList() ?? new List<int>();
|
UsedItemCondition = usedItemCondition?.ToList() ?? new List<int>();
|
||||||
|
UsedScriptCondition = usedScriptCondition?.ToList() ?? new List<int>();
|
||||||
}
|
}
|
||||||
private Dictionary<int, int> ArrayToDictionary(KeyValueOfintint[] array){
|
private Dictionary<int, int> ArrayToDictionary(KeyValueOfintint[] array){
|
||||||
var dictionary = new Dictionary<int, int>();
|
var dictionary = new Dictionary<int, int>();
|
||||||
|
|
@ -601,6 +606,7 @@ public sealed class GameData {
|
||||||
achievedMission = AchievedMission.ToArray();
|
achievedMission = AchievedMission.ToArray();
|
||||||
deliveredOrder = DeliveredOrder.ToArray();
|
deliveredOrder = DeliveredOrder.ToArray();
|
||||||
usedItemCondition = UsedItemCondition.ToArray();
|
usedItemCondition = UsedItemCondition.ToArray();
|
||||||
|
usedScriptCondition = UsedScriptCondition.ToArray();
|
||||||
CityGameDataKeyValues = CityGameDataDict.ToKeyValues();
|
CityGameDataKeyValues = CityGameDataDict.ToKeyValues();
|
||||||
FundingDictKeyValues = FundingDict.ToKeyValues();
|
FundingDictKeyValues = FundingDict.ToKeyValues();
|
||||||
// CityGameData
|
// CityGameData
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using MyGame.Scripts;
|
||||||
using UniRx;
|
using UniRx;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Analytics;
|
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class HeaderManager : MonoBehaviour
|
public class HeaderManager : MonoBehaviour
|
||||||
|
|
@ -18,6 +17,7 @@ public class HeaderManager : MonoBehaviour
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
|
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
||||||
var isOpenMission = false;
|
var isOpenMission = false;
|
||||||
settingButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
|
settingButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
|
||||||
{
|
{
|
||||||
|
|
@ -39,6 +39,15 @@ public class HeaderManager : MonoBehaviour
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
worldMapButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
|
worldMapButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
|
||||||
{
|
{
|
||||||
|
var shopStock = cityGameData.ShopStock.Count;
|
||||||
|
var tankStock = cityGameData.StorageTanks.Sum(x => x.Stock);
|
||||||
|
var totalStock = shopStock + tankStock;
|
||||||
|
// 最新の都市以外は在庫があるとき他の都市に行けない
|
||||||
|
if (!GameDataUtils.CheckLatestCity(GameDataManager.GameData.CurrentCityId) && totalStock > 0)
|
||||||
|
{
|
||||||
|
// UpdateDialog.ShowDialog();
|
||||||
|
// return;
|
||||||
|
}
|
||||||
TransitionManager.Instance.LoadScene(GameScenes.WorldMap);
|
TransitionManager.Instance.LoadScene(GameScenes.WorldMap);
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
|
|
||||||
|
|
@ -58,5 +67,47 @@ public class HeaderManager : MonoBehaviour
|
||||||
{
|
{
|
||||||
TransitionManager.Instance.LoadScene(GameScenes.Customize);
|
TransitionManager.Instance.LoadScene(GameScenes.Customize);
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
|
|
||||||
|
// 都市ごとの店舗レベルアップチェック
|
||||||
|
var cityShopLevelDataList = SpreadsheetDataManager.Instance.GetBaseDataList<CityShopLevelData>(Const.CityShopLevelDataSheet);
|
||||||
|
var currentCityList = cityShopLevelDataList.Where(data => data.cityId == GameDataManager.GameData.CurrentCityId);
|
||||||
|
var scriptList = SpreadsheetDataManager.Instance.GetBaseDataList<BrotherScriptData>(Const.ScriptDataSheet);
|
||||||
|
GameDataObserver.Instance.HeartObserver.Subscribe(_ =>
|
||||||
|
{
|
||||||
|
if (currentCityList.LastOrDefault(data => data.shopLevel == cityGameData.ViewedShopLevel + 1) is not { } newShopLevelData) return;
|
||||||
|
if (newShopLevelData.heart > cityGameData.Heart) return;
|
||||||
|
if (UnityEngine.SceneManagement.SceneManager.sceneCount != 1) return;
|
||||||
|
// レベルアップ処理
|
||||||
|
cityGameData.ViewedShopLevel = newShopLevelData.shopLevel;
|
||||||
|
GameDataManager.SaveGameData();
|
||||||
|
// シナリオ読み込み
|
||||||
|
if (ItemConditionUtils.GetScriptList(newShopLevelData.cityId, ItemCondition.CityLevel).FirstOrDefault() is not { } conditionData) return;
|
||||||
|
var levelUpScripts = scriptList.Where(data => data.id == conditionData.scriptId).ToList();
|
||||||
|
if (levelUpScripts.Count <= 0) return;
|
||||||
|
BrotherConversation.ShowDialog(levelUpScripts, () =>
|
||||||
|
{
|
||||||
|
// 既読処理(必要なら
|
||||||
|
});
|
||||||
|
}).AddTo(this);
|
||||||
|
|
||||||
|
// 都市開放チェック
|
||||||
|
var cityDataList = SpreadsheetDataManager.Instance.GetBaseDataList<CityData>(Const.CityDataSheet);
|
||||||
|
GameDataObserver.Instance.HeartObserver.Subscribe(x =>
|
||||||
|
{
|
||||||
|
var unlockList = GameDataManager.GameData.CityGameDataDict.Keys.ToList();
|
||||||
|
unlockList.Add(Const.DefaultCityId);
|
||||||
|
if (cityDataList.FirstOrDefault(data => !unlockList.Contains(data.id)) is not { } newCityData) return;
|
||||||
|
if (ItemConditionUtils.GetScriptList(newCityData.id, ItemCondition.CityUnlock, x).FirstOrDefault() is not { } conditionData) return;
|
||||||
|
if (UnityEngine.SceneManagement.SceneManager.sceneCount != 1) return;
|
||||||
|
// 都市開放処理
|
||||||
|
GameDataUtils.CreateCityData(newCityData.id);
|
||||||
|
GameDataManager.SaveGameData();
|
||||||
|
var levelUpScripts = scriptList.Where(data => data.id == conditionData.scriptId).ToList();
|
||||||
|
if (levelUpScripts.Count <= 0) return;
|
||||||
|
BrotherConversation.ShowDialog(levelUpScripts, () =>
|
||||||
|
{
|
||||||
|
// ItemConditionUtils.Use(conditionData);
|
||||||
|
});
|
||||||
|
}).AddTo(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,11 @@ namespace MyGame.Scripts
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Use(ScriptConditionData scriptConditionData)
|
||||||
|
{
|
||||||
|
GameDataManager.GameData.UsedScriptCondition.Add(scriptConditionData.id);
|
||||||
|
}
|
||||||
|
|
||||||
public static void Use(ItemConditionData itemConditionData)
|
public static void Use(ItemConditionData itemConditionData)
|
||||||
{
|
{
|
||||||
GameDataManager.GameData.UsedItemCondition.Add(itemConditionData.id);
|
GameDataManager.GameData.UsedItemCondition.Add(itemConditionData.id);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue