苗を復元する処理を追加
This commit is contained in:
parent
88f3f85cbd
commit
2bfd363f52
|
|
@ -39,56 +39,66 @@ public class CornField : MonoBehaviour
|
|||
.Subscribe(_ => TransitionManager.Instance.LoadScene(GameScenes.CornField)).AddTo(this);
|
||||
|
||||
// データ
|
||||
// 解放済みの畑, 畑の質, 収穫機レベル
|
||||
var plantSetting = new List<PlantLineType>()
|
||||
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<SeedlingProgressData>()
|
||||
{
|
||||
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<SeedlingProgressData>();
|
||||
if (gameData.SeedlingDataList == null || gameData.SeedlingDataList.Count == 0)
|
||||
{
|
||||
Debug.Log($"{line}");
|
||||
var plantLine = plantLines.First(x => x.LineName == line);
|
||||
gameData.SeedlingDataList = new List<SeedlingProgressData>();
|
||||
}
|
||||
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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
Loading…
Reference in New Issue