From 2bfd363f52b52747ef1a7562b065f0d93def15e0 Mon Sep 17 00:00:00 2001 From: kimura Date: Mon, 2 Aug 2021 16:42:23 +0900 Subject: [PATCH] =?UTF-8?q?=E8=8B=97=E3=82=92=E5=BE=A9=E5=85=83=E3=81=99?= =?UTF-8?q?=E3=82=8B=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scenes/CornField/Scripts/CornField.cs | 114 ++++++++++-------- .../CornField/Scripts/SeedlingProgressData.cs | 3 +- 2 files changed, 63 insertions(+), 54 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs index 83428bc9..883b6e92 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs @@ -39,56 +39,66 @@ public class CornField : MonoBehaviour .Subscribe(_ => TransitionManager.Instance.LoadScene(GameScenes.CornField)).AddTo(this); // データ - // 解放済みの畑, 畑の質, 収穫機レベル - var plantSetting = new List() + var gameData = GameDataManager.GameData; + gameData.coin = 1000 + Random.Range(0, 1000); + // Debug.Log(gameData.coin); + // 解放済みの畑 + if (gameData.PlantLineTypes == null || gameData.PlantLineTypes.Count == 0) { - PlantLineType.Center, - PlantLineType.Bottom, - }; - var fieldLevel = (int)CornFieldRank.Rank3; - var machineLevel = 1; - // コーン株の進行度 - var progressDataList = new List() - { - GenerateSeedlingData(PlantLineType.Center), - }; + gameData.PlantLineTypes = new List<(PlantLineType type, CornFieldRank level)>() + { + (PlantLineType.Center, CornFieldRank.Rank1), + (PlantLineType.Bottom, CornFieldRank.Rank3) + }; + } + // 畑の質 + // gameData.FieldLevel = CornFieldRank.Rank3; + // 収穫機レベル + gameData.MachineLevel = 1; // 畑リセット - availableLines.Clear(); foreach (var line in plantLines) { line.gameObject.SetActive(false); } // セーブデータから畑を復元 - foreach (var line in plantSetting) + // gameData.SeedlingDataList = new List(); + if (gameData.SeedlingDataList == null || gameData.SeedlingDataList.Count == 0) { - Debug.Log($"{line}"); - var plantLine = plantLines.First(x => x.LineName == line); + gameData.SeedlingDataList = new List(); + } + availableLines.Clear(); + foreach (var line in gameData.PlantLineTypes) + { + var plantLine = plantLines.First(x => x.LineName == line.type); plantLine.gameObject.SetActive(true); + plantLine.SetFieldLevel(line.level); availableLines.Add(plantLine); - // 初回データ作成 - if (!progressDataList.Exists(x => x.type == line)) + // コーン株の進行度初回データ作成 + if (!gameData.SeedlingDataList.Exists(x => x.type == line.type)) { - progressDataList.Add(GenerateSeedlingData(line)); + gameData.SeedlingDataList.Add(GenerateSeedlingData(line.type, line.level)); } } + GameDataManager.SaveGameData(); + Debug.Log(gameData.SeedlingDataList.Count); // 株設定 foreach (var line in availableLines) { - var lineData = progressDataList.First(x => x.type == line.LineName); + var lineData = gameData.SeedlingDataList.First(x => x.type == line.LineName); var i = 0; foreach (var seedling in line.Seedlings) { var index = i; i++; - seedling.SetSeedlingGene(lineData.Seedlings[index].firstTime, lineData.Seedlings[index].period, (CornFieldRank)fieldLevel); + seedling.SetSeedlingGene(lineData.Seedlings[index].firstTime, lineData.Seedlings[index].period, lineData.Seedlings[index].level); seedling.Harvested.Subscribe(_ => { // 収穫 VibrationManager.Instance.PlayVibrationOnce(); - for (int j = 0; j < GetHarvestCount((CornFieldRank)fieldLevel); j++) + for (int j = 0; j < GetHarvestCount(lineData.Seedlings[index].level); j++) { var harvestedCorn = 20; harvestedCornCount.Value += harvestedCorn; @@ -107,8 +117,11 @@ public class CornField : MonoBehaviour }); } // 新しい苗 - lineData.Seedlings[index] = GenerateSeedlingGene(); - seedling.SetSeedlingGene(lineData.Seedlings[index].firstTime, lineData.Seedlings[index].period, CornFieldRank.Rank1); + var seedlingDataIndex = gameData.SeedlingDataList.FindIndex(x => x.type == line.LineName); + var newGene = GenerateSeedlingGene(line.FieldLevel); + gameData.SeedlingDataList[seedlingDataIndex].Seedlings[index] = newGene; + seedling.SetSeedlingGene(newGene.firstTime, newGene.period, newGene.level); + GameDataManager.SaveGameData(); }).AddTo(compositeDisposable); } } @@ -119,24 +132,29 @@ public class CornField : MonoBehaviour VibrationManager.Instance.PlayVibrationOnce(); foreach (var line in availableLines) { - var lineData = progressDataList.First(x => x.type == line.LineName); + var lineData = gameData.SeedlingDataList.First(x => x.type == line.LineName); var i = 0; foreach (var seedling in line.Seedlings) { if (Random.Range(0, 2) == 0) { var tmpData = lineData.Seedlings[i]; - tmpData.firstTime = lineData.Seedlings[i].firstTime.AddSeconds(-1); + tmpData.firstTime = tmpData.firstTime.AddSeconds(-1); + seedling.PromoteGrowth(tmpData.firstTime); lineData.Seedlings[i] = tmpData; - seedling.PromoteGrowth(lineData.Seedlings[i].firstTime); } } + var seedlingDataIndex = gameData.SeedlingDataList.FindIndex(x => x.type == line.LineName); + gameData.SeedlingDataList[seedlingDataIndex] = lineData; } // 設定のセーブ + Debug.Log($"{gameData.SeedlingDataList[0].Seedlings[2].firstTime} {gameData.SeedlingDataList[0].Seedlings[0].period}"); + GameDataManager.SaveGameData(); }).AddTo(compositeDisposable); + Debug.Log($"{gameData.SeedlingDataList[0].Seedlings[2].firstTime} {gameData.SeedlingDataList[0].Seedlings[0].period}"); } - private SeedlingProgressData GenerateSeedlingData(PlantLineType type) + private SeedlingProgressData GenerateSeedlingData(PlantLineType type, CornFieldRank level) { switch (type) { @@ -144,48 +162,46 @@ public class CornField : MonoBehaviour return new SeedlingProgressData { type = PlantLineType.Top, - Seedlings = new List<(DateTime firstTime, int period)>() + Seedlings = new List<(DateTime firstTime, int period, CornFieldRank rank)>() { - GenerateSeedlingGene(), - GenerateSeedlingGene(), - GenerateSeedlingGene(), - GenerateSeedlingGene(), + GenerateSeedlingGene(level), + GenerateSeedlingGene(level), + GenerateSeedlingGene(level), + GenerateSeedlingGene(level), } }; case PlantLineType.Center: return new SeedlingProgressData { type = PlantLineType.Center, - Seedlings = new List<(DateTime firstTime, int period)>() + Seedlings = new List<(DateTime firstTime, int period, CornFieldRank rank)>() { - GenerateSeedlingGene(), - GenerateSeedlingGene(), - GenerateSeedlingGene(), + GenerateSeedlingGene(level), + GenerateSeedlingGene(level), + GenerateSeedlingGene(level), } }; - break; case PlantLineType.Bottom: return new SeedlingProgressData { type = PlantLineType.Bottom, - Seedlings = new List<(DateTime firstTime, int period)>() + Seedlings = new List<(DateTime firstTime, int period, CornFieldRank rank)>() { - GenerateSeedlingGene(), - GenerateSeedlingGene(), - GenerateSeedlingGene(), - GenerateSeedlingGene(), + GenerateSeedlingGene(level), + GenerateSeedlingGene(level), + GenerateSeedlingGene(level), + GenerateSeedlingGene(level), } }; - break; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } } - private (DateTime, int) GenerateSeedlingGene() + private (DateTime firstTime, int period, CornFieldRank level) GenerateSeedlingGene(CornFieldRank level) { // return (DateTime.Now, Random.Range(minPeriod, maxPeriod + 1)); - return (DateTime.Now.AddSeconds(-Random.Range(0, 15)), 15 + Random.Range(0, 15)); + return (DateTime.Now.AddSeconds(-Random.Range(0, 15)), 15 + Random.Range(0, 15), level); } private int GetHarvestCount(CornFieldRank rank) @@ -202,10 +218,4 @@ public class CornField : MonoBehaviour throw new ArgumentOutOfRangeException(nameof(rank), rank, null); } } - - // Update is called once per frame - void Update() - { - - } } diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/SeedlingProgressData.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/SeedlingProgressData.cs index 8e28ef4e..fd6112c9 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/SeedlingProgressData.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/SeedlingProgressData.cs @@ -1,9 +1,8 @@ using System; using System.Collections.Generic; -[Serializable] public class SeedlingProgressData { public PlantLineType type; - public List<(DateTime firstTime, int period)> Seedlings; + public List<(DateTime firstTime, int period, CornFieldRank level)> Seedlings; } \ No newline at end of file