畑強化データからの読み込みに対応

This commit is contained in:
kimura 2021-09-28 18:06:30 +09:00
parent 62856fe7e8
commit 5a8fb41fcb
4 changed files with 72 additions and 78 deletions

View File

@ -57,6 +57,8 @@ public class CornField : MonoBehaviour
counterView.Initialize(gameData.cornSeed);
SetData();
var fieldData = SpreadsheetDataManager.Instance.GetBaseDataList<FieldUpgradeData>(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);
}
}
}

View File

@ -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<FieldUpgradeData>(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);
}
}
public class UpgradeData
// Max
var maxLevel = fieldData.Where(x => x.Type == CornFieldUpgradeType.Machine).Max(x => x.level);
if (gameData.MachineLevel == maxLevel)
{
public int category;
public int price;
public int spec;
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 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);
}
}
}

View File

@ -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<FieldUpgradeData>(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)
@ -62,18 +61,14 @@ public class CornFieldReinforcementView : MonoBehaviour
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)

View File

@ -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<FieldUpgradeData>(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);
}
}