diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs index 84957a2b..4d1c5b1f 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs @@ -26,13 +26,14 @@ public class ProductManagement : MonoBehaviour state.Value = ManagementState.None; WorldMarketManager.Instance.IsPause.Value = true; - var gameData = GameDataManager.GameData; + var globalGameData = GameDataManager.GameData; + var cityGameData = GameDataManager.GetCurrentCityGameData(); - if (!gameData.FinishedFlags.HasFlag(TutorialFlag.Management)) + if (!globalGameData.FinishedFlags.HasFlag(TutorialFlag.Management)) { TutorialManager.Instance.ShowTutorialConversation(9, () => { - gameData.FinishedFlags |= TutorialFlag.Management; + globalGameData.FinishedFlags |= TutorialFlag.Management; GameDataManager.SaveGameData(); }); } @@ -48,15 +49,15 @@ public class ProductManagement : MonoBehaviour .OrderBy(data => data.number) .Select(data => data.price).ToList(); - 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 .DelaySubscription(TimeSpan.FromSeconds(.4f)) .Subscribe(_ => { - ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1); + ShopLevelUp.ShowDialog(globalGameData.ViewedShopLevel + 1); }).AddTo(this); GameDataObserver.Instance.HeartObserver @@ -68,10 +69,10 @@ public class ProductManagement : MonoBehaviour }).AddTo(this); // 補充方法設定 - view.SetRefillType(gameData.RefillMode); + view.SetRefillType(cityGameData.RefillMode); // タンク並び替え - gameData.StorageTanks = gameData.StorageTanks.OrderBy(tank => tank.IsEmpty).ToList(); + cityGameData.StorageTanks = cityGameData.StorageTanks.OrderBy(tank => tank.IsEmpty).ToList(); // タンク設定 var tankList = view.SetTanks(priceList); @@ -80,11 +81,11 @@ public class ProductManagement : MonoBehaviour var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList(Const.ShopDataSheet); foreach (var tankView in tankList) { - tankView.SetArrow(tankView.TankNumber != 4 && tankView.TankNumber != 7 && tankView.TankNumber != gameData.StorageTanks.Count); - if (tankView.TankNumber > gameData.StorageTanks.Count) + tankView.SetArrow(tankView.TankNumber != 4 && tankView.TankNumber != 7 && tankView.TankNumber != cityGameData.StorageTanks.Count); + if (tankView.TankNumber > cityGameData.StorageTanks.Count) { // 価格の一番小さいタンクのみ購入できるようにする - var isSmallest = tankView.TankNumber == gameData.StorageTanks.Count + 1; + var isSmallest = tankView.TankNumber == cityGameData.StorageTanks.Count + 1; tankView.SetState(isSmallest ? TankState.Lock : TankState.Unavailable); // タンク購入 var shopData = shopDataList.First(data => data.id == Const.ShopTankId); @@ -101,11 +102,11 @@ public class ProductManagement : MonoBehaviour void PurchaseAction(int amount) { // タンク追加 - gameData.StorageTanks.Add(new StorageTank { Capacity = Const.TankCapacity }); - tankView.SetData(gameData.StorageTanks[tankView.TankNumber - 1]); + cityGameData.StorageTanks.Add(new StorageTank { Capacity = Const.TankCapacity }); + tankView.SetData(cityGameData.StorageTanks[tankView.TankNumber - 1]); tankView.SetState(TankState.Unlock); CoinManager.Instance.SubCoin(price); - gameData.Coin = CoinManager.Instance.OwnCoin; + cityGameData.Coin = CoinManager.Instance.OwnCoin; GameDataManager.SaveGameData(); // 次に大きいタンクの購入ボタンを表示 if (tankView.TankNumber + 1 <= tankList.Count) @@ -121,15 +122,15 @@ public class ProductManagement : MonoBehaviour } else { - tankView.SetData(gameData.StorageTanks[tankView.TankNumber - 1]); + tankView.SetData(cityGameData.StorageTanks[tankView.TankNumber - 1]); tankView.SetState(TankState.Unlock); } tankView.DetailButtonObservable.Subscribe(_ => { state.Value = ManagementState.None; - var tankData = gameData.StorageTanks[tankView.TankNumber - 1]; - var shopStock = gameData.ShopStock.Count(data => data.FlavorId == tankData.FlavorId); - var tankStock = gameData.StorageTanks.Where(x => x.FlavorId == tankData.FlavorId).Sum(x => x.Stock); + var tankData = cityGameData.StorageTanks[tankView.TankNumber - 1]; + var shopStock = cityGameData.ShopStock.Count(data => data.FlavorId == tankData.FlavorId); + var tankStock = cityGameData.StorageTanks.Where(x => x.FlavorId == tankData.FlavorId).Sum(x => x.Stock); var totalStock = shopStock + tankStock; var productData = productList.FirstOrDefault(data => data.id == tankData.FlavorId); List<(ProductRarity rarity, int price, int stock)> raritySummaryData = rarityDataList.Select(x => @@ -156,7 +157,7 @@ public class ProductManagement : MonoBehaviour break; case ManagementState.Tasting: // ストックのあるタンクのIndex取得。なければ試食モード中止。 - var index = gameData.StorageTanks.FindIndex(tank => !tank.IsEmpty); + var index = cityGameData.StorageTanks.FindIndex(tank => !tank.IsEmpty); if (index == -1) { state.Value = ManagementState.None; @@ -164,7 +165,7 @@ public class ProductManagement : MonoBehaviour } // 選択中のタンクにストックがあればIndex更新 var selectedIndex = tankList.FindIndex(tankView => tankView.State.Value == TankState.Selected); - if (selectedIndex != -1 && !gameData.StorageTanks[selectedIndex].IsEmpty) + if (selectedIndex != -1 && !cityGameData.StorageTanks[selectedIndex].IsEmpty) { index = selectedIndex; } @@ -173,14 +174,14 @@ public class ProductManagement : MonoBehaviour ClearSelectedTank(tankList); tankList[index].SetState(TankState.Selected); - var tankData = gameData.StorageTanks[index]; + var tankData = cityGameData.StorageTanks[index]; selectedTank.Value = (index + 1, productList.FirstOrDefault(data => data.id == tankData.FlavorId)); void TastingAction() { state.Value = ManagementState.None; Tasting(selectedTank.Value.num); - tankList[selectedTank.Value.num - 1].SetData(gameData.StorageTanks[selectedTank.Value.num - 1]); - SetActiveTastingButton(gameData.StorageTanks.Any(tank => !tank.IsEmpty)); + tankList[selectedTank.Value.num - 1].SetData(cityGameData.StorageTanks[selectedTank.Value.num - 1]); + SetActiveTastingButton(cityGameData.StorageTanks.Any(tank => !tank.IsEmpty)); } TastingView.ShowDialog(selectedTank.AsObservable(), () => state.Value = ManagementState.None, TastingAction); break; @@ -206,7 +207,7 @@ public class ProductManagement : MonoBehaviour case ManagementState.Replacing: break; case ManagementState.Tasting: - var tankData = gameData.StorageTanks[tankView.TankNumber - 1]; + var tankData = cityGameData.StorageTanks[tankView.TankNumber - 1]; if (tankData.IsEmpty) { break; @@ -233,12 +234,12 @@ public class ProductManagement : MonoBehaviour { if (tanks.Previous.TankNumber != tanks.Current.TankNumber) { - var tmpData = gameData.StorageTanks[tanks.Previous.TankNumber - 1]; - gameData.StorageTanks[tanks.Previous.TankNumber - 1] = gameData.StorageTanks[tanks.Current.TankNumber - 1]; - gameData.StorageTanks[tanks.Current.TankNumber - 1] = tmpData; + var tmpData = cityGameData.StorageTanks[tanks.Previous.TankNumber - 1]; + cityGameData.StorageTanks[tanks.Previous.TankNumber - 1] = cityGameData.StorageTanks[tanks.Current.TankNumber - 1]; + cityGameData.StorageTanks[tanks.Current.TankNumber - 1] = tmpData; // 再設定 - tanks.Previous.SetData(gameData.StorageTanks[tanks.Previous.TankNumber - 1]); - tanks.Current.SetData(gameData.StorageTanks[tanks.Current.TankNumber - 1]); + tanks.Previous.SetData(cityGameData.StorageTanks[tanks.Previous.TankNumber - 1]); + tanks.Current.SetData(cityGameData.StorageTanks[tanks.Current.TankNumber - 1]); GameDataManager.SaveGameData(); } ClearSelectedTank(tankList); @@ -246,7 +247,7 @@ public class ProductManagement : MonoBehaviour }).AddTo(this); // 空以外のタンクが1つでもあれば有効 - SetActiveTastingButton(gameData.StorageTanks.Any(tank => !tank.IsEmpty)); + SetActiveTastingButton(cityGameData.StorageTanks.Any(tank => !tank.IsEmpty)); // 試食ボタン tastingButton.OnClickAsObservable().Subscribe(_ => { @@ -257,7 +258,7 @@ public class ProductManagement : MonoBehaviour view.RefillType.Subscribe(mode => { // 補充方法変更 - gameData.RefillMode = mode; + cityGameData.RefillMode = mode; GameDataManager.SaveGameData(); }).AddTo(this); } @@ -294,8 +295,8 @@ public class ProductManagement : MonoBehaviour private void Tasting(int tankNumber) { // 試食フラグに終了時間を設定 - var tank = GameDataManager.GameData.StorageTanks[tankNumber - 1]; - GameDataManager.GameData.AddTastingCustomerCount(tank.Stock); + var tank = GameDataManager.GetCurrentCityGameData().StorageTanks[tankNumber - 1]; + GameDataManager.GetCurrentCityGameData().AddTastingCustomerCount(tank.Stock); tank.ClearStock(); GameDataManager.SaveGameData(); BrotherPinkView.Instance.StartTasting();