diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs index 14e0a2a5..e82167cb 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs @@ -57,6 +57,8 @@ public class CornField : MonoBehaviour counterView.Initialize(gameData.cornSeed); SetData(); + var fieldData = SpreadsheetDataManager.Instance.GetBaseDataList(Const.FieldUpgradeDataSheet); + // 畑リセット foreach (var line in plantLines) { @@ -146,8 +148,8 @@ public class CornField : MonoBehaviour seedling.Harvested.Subscribe(_ => { VibrationManager.Instance.PlayVibrationOnce(); - var harvestCount = GetHarvestCount(lineData.Seedlings[index].Level); - var harvestedCorn = GetHarvestedCornCount(gameData.MachineLevel); + var harvestCount = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.FieldCenter && x.level == (int)lineData.Seedlings[index].Level)?.harvested ?? 1; + var harvestedCorn = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == gameData.MachineLevel)?.harvested ?? 20; gameData.cornSeed += harvestedCorn * harvestCount; var seedlingTransform = seedling.transform; for (int j = 0; j < harvestCount; j++) @@ -245,40 +247,4 @@ public class CornField : MonoBehaviour { return new SeedlingData(DateTime.Now, Random.Range(minPeriod, maxPeriod + 1), level); } - - public static int GetHarvestCount(CornFieldRank rank) - { - switch (rank) - { - case CornFieldRank.Rank1: - return 1; - case CornFieldRank.Rank2: - return 2; - case CornFieldRank.Rank3: - return 3; - default: - throw new ArgumentOutOfRangeException(nameof(rank), rank, null); - } - } - - public static int GetHarvestedCornCount(int level) - { - switch (level) - { - case 1: - return 20; - case 2: - return 25; - case 3: - return 30; - case 4: - return 35; - case 5: - return 40; - case 6: - return 45; - default: - throw new ArgumentOutOfRangeException(nameof(level), level, null); - } - } } diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcement.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcement.cs index c9b3fa56..626aaf7b 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcement.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcement.cs @@ -18,26 +18,55 @@ public class CornFieldReinforcement : MonoBehaviour TransitionManager.Instance.UnloadScene(GameScenes.Reinforcement); }).AddTo(this); var gameData = GameDataManager.GameData; - var price = 100; + var fieldData = SpreadsheetDataManager.Instance.GetBaseDataList(Const.FieldUpgradeDataSheet); + foreach (var view in reinforcementViews) { if (gameData.PlantLineDataList.FirstOrDefault(x => x.Type == view.LineType) is PlantLineData lineData) { - view.SetReinforcement(lineData, price); + // Max + if (lineData.Level == CornFieldRank.Rank3) + { + view.SetButtonActive(false); + } + else + { + var nextHarvestPrice = fieldData.FirstOrDefault(x => x.Type == x.PlantTypeToUpgradeType(lineData.Type) && x.level == (int)GetNextRank(lineData.Level))?.price ?? 1; + view.SetButtonActive(nextHarvestPrice <= CoinManager.Instance.OwnCoin); + view.SetReinforcement(lineData, nextHarvestPrice); + } } else { + var price = fieldData.FirstOrDefault(x => x.Type == x.PlantTypeToUpgradeType(view.LineType) && x.level == (int)CornFieldRank.Rank1)?.price ?? 1; + view.SetButtonActive(price <= CoinManager.Instance.OwnCoin); view.SetRelease(price); } } - machineUpgradeView.SetData(gameData.MachineLevel, price); + // Max + var maxLevel = fieldData.Where(x => x.Type == CornFieldUpgradeType.Machine).Max(x => x.level); + if (gameData.MachineLevel == maxLevel) + { + machineUpgradeView.SetButtonActive(false); + } + else + { + var nextMachinePrice = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == gameData.MachineLevel + 1)?.price ?? 1; + machineUpgradeView.SetButtonActive(nextMachinePrice <= CoinManager.Instance.OwnCoin); + machineUpgradeView.SetData(gameData.MachineLevel, nextMachinePrice); + } } -} - -public class UpgradeData -{ - public int category; - public int price; - public int spec; + public static CornFieldRank GetNextRank(CornFieldRank rank) + { + switch (rank) + { + case CornFieldRank.Rank1: + return CornFieldRank.Rank2; + case CornFieldRank.Rank2: + return CornFieldRank.Rank3; + default: + throw new ArgumentOutOfRangeException(nameof(rank), rank, null); + } + } } \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcementView.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcementView.cs index fd0e353a..7a474f2b 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcementView.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcementView.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using TMPro; using UniRx; using UnityEngine; @@ -40,18 +41,16 @@ public class CornFieldReinforcementView : MonoBehaviour { reinforcementWindow.SetActive(true); releaseWindow.SetActive(false); - if (data.Level == CornFieldRank.Rank3) - { - reinforcementWindow.SetActive(false); - disableButton.SetActive(true); - return; - } + var nextRank = CornFieldReinforcement.GetNextRank(data.Level); + var fieldData = SpreadsheetDataManager.Instance.GetBaseDataList(Const.FieldUpgradeDataSheet); + var currentHarvestCount = fieldData.FirstOrDefault(x => x.Type == x.PlantTypeToUpgradeType(data.Type) && x.level == (int)data.Level)?.harvested ?? 1; + var nextHarvestCount = fieldData.FirstOrDefault(x => x.Type == x.PlantTypeToUpgradeType(data.Type) && x.level == (int)nextRank)?.harvested ?? 1; reinforcePriceText.text = price.ToString(); currentSeedling.SetSeedling(data.Level); - currentSignBoard.text = string.Format(SigbBoardFormat, CornField.GetHarvestCount(data.Level)); - nextSeedling.SetSeedling(GetNextRank(data.Level)); - nextSignBoard.text = string.Format(SigbBoardFormat, CornField.GetHarvestCount(GetNextRank(data.Level))); - reinforceText.text = string.Format(ReinforceFormat, CornField.GetHarvestCount(GetNextRank(data.Level))); + currentSignBoard.text = string.Format(SigbBoardFormat, currentHarvestCount); + nextSeedling.SetSeedling(nextRank); + nextSignBoard.text = string.Format(SigbBoardFormat, nextHarvestCount); + reinforceText.text = string.Format(ReinforceFormat, nextHarvestCount); } public void SetRelease(int price) @@ -61,19 +60,15 @@ public class CornFieldReinforcementView : MonoBehaviour releasePriceText.text = price.ToString(); releaseText.text = string.Format(ReleaseFormat, GetPlantTypeText(lineType)); } - - private CornFieldRank GetNextRank(CornFieldRank rank) + + public void SetButtonActive(bool active) { - switch (rank) - { - case CornFieldRank.Rank1: - return CornFieldRank.Rank2; - case CornFieldRank.Rank2: - return CornFieldRank.Rank3; - default: - throw new ArgumentOutOfRangeException(nameof(rank), rank, null); - } + dialogButton.gameObject.SetActive(active); + dialogButton2.gameObject.SetActive(active); + disableButton.SetActive(!active); + disableButton2.SetActive(!active); } + private string GetPlantTypeText(PlantLineType type) { switch (type) diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/MachineUpgradeView.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/MachineUpgradeView.cs index 6bb2b308..46d63c54 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/MachineUpgradeView.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/MachineUpgradeView.cs @@ -1,17 +1,17 @@ using System; +using System.Linq; using UniRx; using UnityEngine; using UnityEngine.UI; public class MachineUpgradeView : MonoBehaviour { - private static readonly string SigbBoardFormat = "x{0}"; + private static readonly string SignBoardFormat = "x{0}"; [SerializeField] private Text priceText; [SerializeField] private Text currentHarvestedText; [SerializeField] private Text nextHarvestedText; [SerializeField] private Button dialogButton; [SerializeField] private GameObject disableButton; - private static readonly int MaxMachineLevel = 6; private void Start() { @@ -24,13 +24,17 @@ public class MachineUpgradeView : MonoBehaviour public void SetData(int level, int price) { - if (level == MaxMachineLevel) - { - disableButton.SetActive(true); - return; - } + var fieldData = SpreadsheetDataManager.Instance.GetBaseDataList(Const.FieldUpgradeDataSheet); + var currentHarvestedCorn = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == level)?.harvested ?? 20; + var nextHarvestedCorn = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == level + 1)?.harvested ?? 20; priceText.text = price.ToString(); - currentHarvestedText.text = CornField.GetHarvestedCornCount(level).ToString(); - nextHarvestedText.text = CornField.GetHarvestedCornCount(level+1).ToString(); + currentHarvestedText.text = string.Format(SignBoardFormat, currentHarvestedCorn.ToString()); + nextHarvestedText.text = string.Format(SignBoardFormat, nextHarvestedCorn.ToString()); + } + + public void SetButtonActive(bool active) + { + dialogButton.gameObject.SetActive(active); + disableButton.SetActive(!active); } }