シナリオ再生対応
This commit is contained in:
parent
966c678b32
commit
0bb77d1b3f
|
|
@ -372,6 +372,8 @@ public class DebugOptionManager : MonoBehaviour
|
|||
|
||||
resetWorldMapButton.OnClickAsObservable().Subscribe(_ =>
|
||||
{
|
||||
globalGameData.UsedScriptCondition.Clear();
|
||||
globalGameData.UsedItemCondition.Clear();
|
||||
globalGameData.CityGameDataKeyValues = new CityGameDataDict.CityGameDataKeyValue[]{};
|
||||
globalGameData.OnDeserialized();
|
||||
globalGameData.PartTimerElapsed = 0;
|
||||
|
|
|
|||
|
|
@ -213,6 +213,10 @@ public sealed class GameData {
|
|||
[DataMember(Name = "Data73")]
|
||||
private int[] usedItemCondition;
|
||||
public List<int> UsedItemCondition;
|
||||
|
||||
[DataMember(Name = "Data74")]
|
||||
private int[] usedScriptCondition;
|
||||
public List<int> UsedScriptCondition;
|
||||
|
||||
// mission
|
||||
[DataMember(Name = "Data1001")]
|
||||
|
|
@ -584,6 +588,7 @@ public sealed class GameData {
|
|||
CityGameDataDict = new CityGameDataDict(CityGameDataKeyValues);
|
||||
FundingDict = new FundingDict(FundingDictKeyValues);
|
||||
UsedItemCondition = usedItemCondition?.ToList() ?? new List<int>();
|
||||
UsedScriptCondition = usedScriptCondition?.ToList() ?? new List<int>();
|
||||
}
|
||||
private Dictionary<int, int> ArrayToDictionary(KeyValueOfintint[] array){
|
||||
var dictionary = new Dictionary<int, int>();
|
||||
|
|
@ -601,6 +606,7 @@ public sealed class GameData {
|
|||
achievedMission = AchievedMission.ToArray();
|
||||
deliveredOrder = DeliveredOrder.ToArray();
|
||||
usedItemCondition = UsedItemCondition.ToArray();
|
||||
usedScriptCondition = UsedScriptCondition.ToArray();
|
||||
CityGameDataKeyValues = CityGameDataDict.ToKeyValues();
|
||||
FundingDictKeyValues = FundingDict.ToKeyValues();
|
||||
// CityGameData
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using MyGame.Scripts;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Analytics;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class HeaderManager : MonoBehaviour
|
||||
|
|
@ -18,6 +17,7 @@ public class HeaderManager : MonoBehaviour
|
|||
|
||||
private void Start()
|
||||
{
|
||||
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
||||
var isOpenMission = false;
|
||||
settingButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
|
||||
{
|
||||
|
|
@ -39,6 +39,15 @@ public class HeaderManager : MonoBehaviour
|
|||
}).AddTo(this);
|
||||
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);
|
||||
}).AddTo(this);
|
||||
|
||||
|
|
@ -58,5 +67,47 @@ public class HeaderManager : MonoBehaviour
|
|||
{
|
||||
TransitionManager.Instance.LoadScene(GameScenes.Customize);
|
||||
}).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();
|
||||
}
|
||||
|
||||
public static void Use(ScriptConditionData scriptConditionData)
|
||||
{
|
||||
GameDataManager.GameData.UsedScriptCondition.Add(scriptConditionData.id);
|
||||
}
|
||||
|
||||
public static void Use(ItemConditionData itemConditionData)
|
||||
{
|
||||
GameDataManager.GameData.UsedItemCondition.Add(itemConditionData.id);
|
||||
|
|
|
|||
Loading…
Reference in New Issue