diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs index 4c8aab3c..965bc9eb 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs @@ -68,9 +68,10 @@ public class CornField : MonoBehaviour SoundManager.Instance.PlayBGM("bgm_Main"); // データ - var gameData = GameDataManager.GameData; + var globalGameData = GameDataManager.GameData; + var cityGameData = GameDataManager.GetCurrentCityGameData(); - if (!gameData.FinishedFlags.HasFlag(TutorialFlag.CornField)) + if (!globalGameData.FinishedFlags.HasFlag(TutorialFlag.CornField)) { promoteGrowthButton.gameObject.SetActive(false); TutorialManager.Instance.ShowTutorialConversation(5, () => @@ -84,8 +85,8 @@ public class CornField : MonoBehaviour cornFieldMask.gameObject.SetActive(false); } - CoinManager.Instance.ChangeCoin(gameData.Coin); - HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart); + CoinManager.Instance.ChangeCoin(cityGameData.Coin); + HeartMeter.Instance.Initialize(globalGameData.ViewedShopLevel, cityGameData.Heart); // ハートゲージがフルかつダイアログが開いていない場合レベルアップ HeartMeter.Instance.FulledHeart @@ -95,7 +96,7 @@ public class CornField : MonoBehaviour .DelaySubscription(TimeSpan.FromSeconds(.4f)) .Subscribe(_ => { - ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1); + ShopLevelUp.ShowDialog(globalGameData.ViewedShopLevel + 1); }).AddTo(this); GameDataObserver.Instance.HeartObserver @@ -106,7 +107,7 @@ public class CornField : MonoBehaviour HeartMeter.Instance.AddHeart(pair.Current - pair.Previous); }).AddTo(this); - counterView.Initialize(gameData.CornSeed); + counterView.Initialize(cityGameData.CornSeed); additionView.Initialize(0); SetData(); @@ -130,7 +131,7 @@ public class CornField : MonoBehaviour VibrationManager.Instance.PlayVibrationOnce(); foreach (var plantLine in plantLines) { - if (!(gameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData)) + if (!(cityGameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData)) { continue; } @@ -140,7 +141,7 @@ public class CornField : MonoBehaviour { continue; } - var progressData = gameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i]; + var progressData = cityGameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i]; progressData.FirstTime = progressData.FirstTime.AddSeconds(-1); plantLine.Seedlings[i].PromoteGrowth(progressData.FirstTime); } @@ -156,11 +157,11 @@ public class CornField : MonoBehaviour GetRewardDialog.ShowCornFieldDialog(() => { isFertilizing.Value = true; - gameData.fertilizerTime = DateTime.UtcNow.AddSeconds(fertilizerWaitTime + fertilizerDuration).ToBinary(); + cityGameData.fertilizerTime = DateTime.UtcNow.AddSeconds(fertilizerWaitTime + fertilizerDuration).ToBinary(); #if UNITY_EDITOR - gameData.fertilizerTime = DateTime.UtcNow.AddSeconds(10 + fertilizerDuration).ToBinary(); + cityGameData.fertilizerTime = DateTime.UtcNow.AddSeconds(10 + fertilizerDuration).ToBinary(); #endif - gameData.AddUseFertiliser(); + globalGameData.AddUseFertiliser(); GameDataManager.SaveGameData(); additionView.IsStopDisapper = true; @@ -177,13 +178,13 @@ public class CornField : MonoBehaviour // 既存の株は成長済みにする foreach (var plantLine in plantLines) { - if (!(gameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData)) + if (!(cityGameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData)) { continue; } for (int i = 0; i < plantLine.Seedlings.Count; i++) { - var progressData = gameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i]; + var progressData = cityGameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i]; progressData.FirstTime = progressData.FirstTime.AddSeconds(-maxPeriod); plantLine.Seedlings[i].PromoteGrowth(progressData.FirstTime); } @@ -197,7 +198,7 @@ public class CornField : MonoBehaviour brotherFertilizerAnimation.EndAnimation(); fertilizerEffectView.SetActive(false); SetCornField(); - resetFertilizerTimer.OnNext((int)DateTime.FromBinary(gameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds); + resetFertilizerTimer.OnNext((int)DateTime.FromBinary(cityGameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds); this.CallWaitForSeconds(fertilizerFinishWaitTime, () => { @@ -221,14 +222,14 @@ public class CornField : MonoBehaviour }).AddTo(this); // 残り時間を取得 - var remaining = (int)DateTime.FromBinary(gameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds; + var remaining = (int)DateTime.FromBinary(cityGameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds; resetFertilizerTimer.OnNext(remaining); Observable.EveryApplicationPause() .Where(pause => !pause) .Subscribe(_ => { - resetFertilizerTimer.OnNext((int) DateTime.FromBinary(gameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds); + resetFertilizerTimer.OnNext((int) DateTime.FromBinary(cityGameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds); }).AddTo(this); // 収穫カウンター+吸収演出 @@ -277,7 +278,7 @@ public class CornField : MonoBehaviour additionView.AddHarvestedCount(x.count); }); }).AddTo(this); - var counterTotalCorn = gameData.CornSeed; + var counterTotalCorn = cityGameData.CornSeed; additionView.EndObservable.Subscribe(addCount => { counterTotalCorn += addCount; @@ -289,32 +290,33 @@ public class CornField : MonoBehaviour private void SetCornField(bool useFertilizer = false) { compositeDisposable.Clear(); - var gameData = GameDataManager.GameData; + var globalGameData = GameDataManager.GameData; + var cityGameData = GameDataManager.GetCurrentCityGameData(); var fieldData = SpreadsheetDataManager.Instance.GetBaseDataList(Const.FieldUpgradeDataSheet); var tmpFieldData = fieldData.Where(data => data.cityId == GameDataManager.GameData.CurrentCityId).ToList(); fieldData = tmpFieldData.Count > 0 ? tmpFieldData : fieldData.Where(data => data.cityId == 0).ToList(); var machineList = fieldData.Where(data => data.Type == CornFieldUpgradeType.Machine); - cornHarvester.SetMachine(machineList.First(data => data.level == gameData.MachineLevel).GetPrefab()); + cornHarvester.SetMachine(machineList.First(data => data.level == cityGameData.MachineLevel).GetPrefab()); // コーン株の進行度初回データ作成 - foreach (var lineData in gameData.PlantLineDataList) + foreach (var lineData in cityGameData.PlantLineDataList) { - if (gameData.SeedlingDataList.Exists(data => data.type == lineData.Type)) + if (cityGameData.SeedlingDataList.Exists(data => data.type == lineData.Type)) { continue; } var plantLine = plantLines.First(line => line.LineName == lineData.Type); - gameData.SeedlingDataList.Add(new SeedlingProgressData + cityGameData.SeedlingDataList.Add(new SeedlingProgressData { type = lineData.Type, Seedlings = Enumerable.Range(0, plantLine.Seedlings.Count).Select(_ => GenerateSeedlingGene(lineData.Level)).ToList() }); } - if (!gameData.FinishedFlags.HasFlag(TutorialFlag.CornField)) + if (!globalGameData.FinishedFlags.HasFlag(TutorialFlag.CornField)) { // 既に収穫できる状態にする - var plantLine = gameData.SeedlingDataList.First(data => data.type == PlantLineType.Center); + var plantLine = cityGameData.SeedlingDataList.First(data => data.type == PlantLineType.Center); foreach (var seedling in plantLine.Seedlings) { seedling.FirstTime = DateTime.MinValue; @@ -333,7 +335,7 @@ public class CornField : MonoBehaviour TutorialManager.Instance.ShowTutorialConversation(6, () => { promoteGrowthButton.gameObject.SetActive(true); - gameData.FinishedFlags |= TutorialFlag.CornField; + globalGameData.FinishedFlags |= TutorialFlag.CornField; GameDataManager.SaveGameData(); }); }); @@ -344,7 +346,7 @@ public class CornField : MonoBehaviour // セーブデータから畑を復元 foreach (var plantLine in plantLines) { - if (!(gameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData)) + if (!(cityGameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData)) { continue; } @@ -353,7 +355,7 @@ public class CornField : MonoBehaviour for (int i = 0; i < plantLine.Seedlings.Count; i++) { - var progressData = gameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i]; + var progressData = cityGameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i]; var seedling = plantLine.Seedlings[i]; seedling.SetSeedlingGene(progressData.FirstTime, progressData.Period, progressData.Level); #if DEVELOPMENT_BUILD || UNITY_EDITOR @@ -367,8 +369,8 @@ public class CornField : MonoBehaviour { VibrationManager.Instance.PlayVibrationOnce(); var harvestCount = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.FieldCenter && x.level == (int)progressData.Level)?.harvested ?? 1; - var harvestedCorn = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == gameData.MachineLevel)?.harvested ?? 20; - gameData.CornSeed += harvestedCorn * harvestCount; + var harvestedCorn = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == cityGameData.MachineLevel)?.harvested ?? 20; + cityGameData.CornSeed += harvestedCorn * harvestCount; var seedlingTransform = seedling.transform; var harvestEffect = Instantiate(harvestEffectPrefab, seedlingTransform); @@ -423,7 +425,7 @@ public class CornField : MonoBehaviour // 強化ボタン通知 var upgradePrice = int.MaxValue; - if (fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == gameData.MachineLevel + 1)?.price is int nextMachinePrice) + if (fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == cityGameData.MachineLevel + 1)?.price is int nextMachinePrice) { upgradePrice = Mathf.Min(upgradePrice, nextMachinePrice); } @@ -431,7 +433,7 @@ public class CornField : MonoBehaviour { var upgradeType = FieldUpgradeData.PlantTypeToUpgradeType(plantLine.LineName); var nextRank = CornFieldRank.Rank1; - if (gameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData) + if (cityGameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData) { if (plantLineData.Level == CornFieldRank.Rank3) { @@ -449,21 +451,21 @@ public class CornField : MonoBehaviour private void SetData() { - var gameData = GameDataManager.GameData; - if (gameData.PlantLineDataList == null || gameData.PlantLineDataList.Count == 0) + var cityGameData = GameDataManager.GetCurrentCityGameData(); + if (cityGameData.PlantLineDataList == null || cityGameData.PlantLineDataList.Count == 0) { - gameData.PlantLineDataList = new List + cityGameData.PlantLineDataList = new List { new PlantLineData(PlantLineType.Center, CornFieldRank.Rank1), }; } - if (gameData.SeedlingDataList == null || gameData.SeedlingDataList.Count == 0) + if (cityGameData.SeedlingDataList == null || cityGameData.SeedlingDataList.Count == 0) { - gameData.SeedlingDataList = new List(); + cityGameData.SeedlingDataList = new List(); } - if (gameData.MachineLevel == 0) + if (cityGameData.MachineLevel == 0) { - gameData.MachineLevel = 1; + cityGameData.MachineLevel = 1; } GameDataManager.SaveGameData(); } diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcement.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcement.cs index 55c0b99e..212e8dbc 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcement.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcement.cs @@ -32,7 +32,7 @@ public class CornFieldReinforcement : MonoBehaviour private void SetView() { compositeDisposable.Clear(); - var gameData = GameDataManager.GameData; + var cityGameData = GameDataManager.GetCurrentCityGameData(); var fieldData = SpreadsheetDataManager.Instance.GetBaseDataList(Const.FieldUpgradeDataSheet); var tmpFieldData = fieldData.Where(data => data.cityId == GameDataManager.GameData.CurrentCityId).ToList(); fieldData = tmpFieldData.Count > 0 ? tmpFieldData : fieldData.Where(data => data.cityId == 0).ToList(); @@ -41,7 +41,7 @@ public class CornFieldReinforcement : MonoBehaviour foreach (var view in reinforcementViews) { var upgradeType = FieldUpgradeData.PlantTypeToUpgradeType(view.LineType); - if (gameData.PlantLineDataList.FirstOrDefault(x => x.Type == view.LineType) is PlantLineData lineData) + if (cityGameData.PlantLineDataList.FirstOrDefault(x => x.Type == view.LineType) is PlantLineData lineData) { // Max if (lineData.Level == CornFieldRank.Rank3) @@ -89,20 +89,20 @@ public class CornFieldReinforcement : MonoBehaviour // 収穫機 // Max var maxLevel = fieldData.Where(x => x.Type == CornFieldUpgradeType.Machine).Max(x => x.level); - if (gameData.MachineLevel == maxLevel) + if (cityGameData.MachineLevel == maxLevel) { machineUpgradeView.SetMax(maxLevel); } else { - var price = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == gameData.MachineLevel + 1)?.price ?? 1; + var price = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == cityGameData.MachineLevel + 1)?.price ?? 1; machineUpgradeView.SetButtonActive(price <= CoinManager.Instance.OwnCoin); - machineUpgradeView.SetData(gameData.MachineLevel, price); + machineUpgradeView.SetData(cityGameData.MachineLevel, price); // 購入ボタン machineUpgradeView.ButtonClickObserve.ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => { LocalCacheManager.Save(CornFieldReinforcementDataTypeTag, CornFieldUpgradeType.Machine); - LocalCacheManager.Save(CornFieldReinforcementDataTag, (gameData.MachineLevel, price, new Action(() => { + LocalCacheManager.Save(CornFieldReinforcementDataTag, (cityGameData.MachineLevel, price, new Action(() => { PurchaseMachine(price); SetView(); LocalCacheManager.Load(CornFieldResetCallbackTag, null)?.Invoke(); @@ -114,26 +114,26 @@ public class CornFieldReinforcement : MonoBehaviour private void PurchaseField(int price, PlantLineType type, CornFieldRank nextRank) { - var gameData = GameDataManager.GameData; - if (gameData.PlantLineDataList.FirstOrDefault(x => x.Type == type) is PlantLineData lineData) + var cityGameData = GameDataManager.GetCurrentCityGameData(); + if (cityGameData.PlantLineDataList.FirstOrDefault(x => x.Type == type) is PlantLineData lineData) { lineData.Level = nextRank; } else { - gameData.PlantLineDataList.Add(new PlantLineData(type, CornFieldRank.Rank1)); + cityGameData.PlantLineDataList.Add(new PlantLineData(type, CornFieldRank.Rank1)); } CoinManager.Instance.SubCoin(price); - gameData.Coin = CoinManager.Instance.OwnCoin; + cityGameData.Coin = CoinManager.Instance.OwnCoin; GameDataManager.SaveGameData(); } private void PurchaseMachine(int price) { - var gameData = GameDataManager.GameData; - gameData.MachineLevel++; + var cityGameData = GameDataManager.GetCurrentCityGameData(); + cityGameData.MachineLevel++; CoinManager.Instance.SubCoin(price); - gameData.Coin = CoinManager.Instance.OwnCoin; + cityGameData.Coin = CoinManager.Instance.OwnCoin; GameDataManager.SaveGameData(); }