From b5a48e23c555015a6618231d22793e25775917e8 Mon Sep 17 00:00:00 2001 From: kimura Date: Fri, 2 Sep 2022 11:43:55 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=AF=E3=83=BC=E3=83=AB=E3=83=89=E6=AF=8E?= =?UTF-8?q?=E3=81=AE=E3=83=87=E3=83=BC=E3=82=BF=E4=BF=9D=E5=AD=98=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/MyGame/Scripts/CityGameDataDict.cs | 11 ++++++ .../MyGame/Scripts/CityGameDataDict.cs.meta | 3 ++ popcorn/Assets/MyGame/Scripts/Const.cs | 1 + .../Assets/MyGame/Scripts/GameDataManager.cs | 37 ++++++++++++++++++- 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 popcorn/Assets/MyGame/Scripts/CityGameDataDict.cs create mode 100644 popcorn/Assets/MyGame/Scripts/CityGameDataDict.cs.meta diff --git a/popcorn/Assets/MyGame/Scripts/CityGameDataDict.cs b/popcorn/Assets/MyGame/Scripts/CityGameDataDict.cs new file mode 100644 index 00000000..f28a5306 --- /dev/null +++ b/popcorn/Assets/MyGame/Scripts/CityGameDataDict.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace MyGame.Scripts +{ + /// + /// 都市ごとのセーブデータ辞書 + /// + public class CityGameDataDict : Dictionary + { + } +} \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scripts/CityGameDataDict.cs.meta b/popcorn/Assets/MyGame/Scripts/CityGameDataDict.cs.meta new file mode 100644 index 00000000..4385380b --- /dev/null +++ b/popcorn/Assets/MyGame/Scripts/CityGameDataDict.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0e93992cd9584288a973aca23bfc31fb +timeCreated: 1662021947 \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scripts/Const.cs b/popcorn/Assets/MyGame/Scripts/Const.cs index 7075ab9b..958d9152 100644 --- a/popcorn/Assets/MyGame/Scripts/Const.cs +++ b/popcorn/Assets/MyGame/Scripts/Const.cs @@ -10,6 +10,7 @@ public static class Const { public static readonly int DefaultMachineLevel = 1; public static readonly int DefaultRecipeId = 1; public static readonly int DefaultPanId = 1; + public static readonly int DefaultCityId = 1; public static readonly int ShopTankId = 20; public static readonly int MaxShopLevel = 18; public static readonly int TankCapacity = 20; diff --git a/popcorn/Assets/MyGame/Scripts/GameDataManager.cs b/popcorn/Assets/MyGame/Scripts/GameDataManager.cs index e84c2b72..bec82134 100644 --- a/popcorn/Assets/MyGame/Scripts/GameDataManager.cs +++ b/popcorn/Assets/MyGame/Scripts/GameDataManager.cs @@ -186,8 +186,12 @@ public sealed class GameData { [DataMember(Name = "Data65")] public List ScrollGameStageScoreList; + // ワールドマップ追加(v1.7.0) + public int CurrentCityId; // 選択中の都市 + public int[] Cities; // 解放済みの都市 + public CityGameDataDict CityGameDataDict; // 都市ごとのデータ - // mission + // mission [DataMember(Name = "Data1001")] public int TotalAddCoin { get; private set; } [DataMember(Name = "Data1002")] @@ -497,6 +501,16 @@ public sealed class GameData { Const.ShopCustomizeDefaultSignBoardId, }; } + + if (CurrentCityId < 1) + { + CurrentCityId = 1; + } + // CityGameData + foreach (var cityGameData in CityGameDataDict.Values) + { + cityGameData.OnDeserialized(); + } // 追加した要素の初期化用 // TODO Release前にまっさらにする @@ -523,6 +537,7 @@ public sealed class GameData { ShopCustomizeMyItems = ShopCustomizeMyItems ?? Array.Empty(); ScrollGamePlaceScoreList = ScrollGamePlaceScoreList ?? new List(); ScrollGameStageScoreList = ScrollGameStageScoreList ?? new List(); + CityGameDataDict ??= new CityGameDataDict(); } private Dictionary ArrayToDictionary(KeyValueOfintint[] array){ var dictionary = new Dictionary(); @@ -539,6 +554,11 @@ public sealed class GameData { // lastAdRewardTimeArray = lastAdRewardTimeList.ToArray(); achievedMission = AchievedMission.ToArray(); deliveredOrder = DeliveredOrder.ToArray(); + // CityGameData + foreach (var cityGameData in CityGameDataDict.Values) + { + cityGameData.PreSerialize(); + } } private KeyValueOfintint[] DictionaryToArray(Dictionary dictionary){ var array = new KeyValueOfintint[dictionary.Count]; @@ -692,6 +712,21 @@ public static class GameDataManager { .Replace("KVOiIF", "KeyValueOfintInfiniteFloat"); return StringExtensions.XMLToData(str); } + + /// + /// CityIdから都市セーブデータを取得 + /// はじめの都市のみ、別クラスにより透過的にGameData上の値を直接参照 + /// + /// + /// + public static GameData GetCityGameData(int cityId) => + cityId switch + { + 1 => GameData, + _ => GameData.CityGameDataDict[cityId] + }; + + public static GameData GetCurrentCityGameData() => GameData.CityGameDataDict[GameData.CurrentCityId]; #if UNITY_EDITOR || DEVELOPMENT_BUILD public static void ResetData(){