苗を復元する処理を追加
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);
|
.Subscribe(_ => TransitionManager.Instance.LoadScene(GameScenes.CornField)).AddTo(this);
|
||||||
|
|
||||||
// データ
|
// データ
|
||||||
// 解放済みの畑, 畑の質, 収穫機レベル
|
var gameData = GameDataManager.GameData;
|
||||||
var plantSetting = new List<PlantLineType>()
|
gameData.coin = 1000 + Random.Range(0, 1000);
|
||||||
|
// Debug.Log(gameData.coin);
|
||||||
|
// 解放済みの畑
|
||||||
|
if (gameData.PlantLineTypes == null || gameData.PlantLineTypes.Count == 0)
|
||||||
{
|
{
|
||||||
PlantLineType.Center,
|
gameData.PlantLineTypes = new List<(PlantLineType type, CornFieldRank level)>()
|
||||||
PlantLineType.Bottom,
|
|
||||||
};
|
|
||||||
var fieldLevel = (int)CornFieldRank.Rank3;
|
|
||||||
var machineLevel = 1;
|
|
||||||
// コーン株の進行度
|
|
||||||
var progressDataList = new List<SeedlingProgressData>()
|
|
||||||
{
|
{
|
||||||
GenerateSeedlingData(PlantLineType.Center),
|
(PlantLineType.Center, CornFieldRank.Rank1),
|
||||||
|
(PlantLineType.Bottom, CornFieldRank.Rank3)
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
// 畑の質
|
||||||
|
// gameData.FieldLevel = CornFieldRank.Rank3;
|
||||||
|
// 収穫機レベル
|
||||||
|
gameData.MachineLevel = 1;
|
||||||
|
|
||||||
// 畑リセット
|
// 畑リセット
|
||||||
availableLines.Clear();
|
|
||||||
foreach (var line in plantLines)
|
foreach (var line in plantLines)
|
||||||
{
|
{
|
||||||
line.gameObject.SetActive(false);
|
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}");
|
gameData.SeedlingDataList = new List<SeedlingProgressData>();
|
||||||
var plantLine = plantLines.First(x => x.LineName == line);
|
}
|
||||||
|
availableLines.Clear();
|
||||||
|
foreach (var line in gameData.PlantLineTypes)
|
||||||
|
{
|
||||||
|
var plantLine = plantLines.First(x => x.LineName == line.type);
|
||||||
plantLine.gameObject.SetActive(true);
|
plantLine.gameObject.SetActive(true);
|
||||||
|
plantLine.SetFieldLevel(line.level);
|
||||||
availableLines.Add(plantLine);
|
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)
|
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;
|
var i = 0;
|
||||||
foreach (var seedling in line.Seedlings)
|
foreach (var seedling in line.Seedlings)
|
||||||
{
|
{
|
||||||
var index = i;
|
var index = i;
|
||||||
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(_ =>
|
seedling.Harvested.Subscribe(_ =>
|
||||||
{
|
{
|
||||||
// 収穫
|
// 収穫
|
||||||
VibrationManager.Instance.PlayVibrationOnce();
|
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;
|
var harvestedCorn = 20;
|
||||||
harvestedCornCount.Value += harvestedCorn;
|
harvestedCornCount.Value += harvestedCorn;
|
||||||
|
|
@ -107,8 +117,11 @@ public class CornField : MonoBehaviour
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 新しい苗
|
// 新しい苗
|
||||||
lineData.Seedlings[index] = GenerateSeedlingGene();
|
var seedlingDataIndex = gameData.SeedlingDataList.FindIndex(x => x.type == line.LineName);
|
||||||
seedling.SetSeedlingGene(lineData.Seedlings[index].firstTime, lineData.Seedlings[index].period, CornFieldRank.Rank1);
|
var newGene = GenerateSeedlingGene(line.FieldLevel);
|
||||||
|
gameData.SeedlingDataList[seedlingDataIndex].Seedlings[index] = newGene;
|
||||||
|
seedling.SetSeedlingGene(newGene.firstTime, newGene.period, newGene.level);
|
||||||
|
GameDataManager.SaveGameData();
|
||||||
}).AddTo(compositeDisposable);
|
}).AddTo(compositeDisposable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -119,24 +132,29 @@ public class CornField : MonoBehaviour
|
||||||
VibrationManager.Instance.PlayVibrationOnce();
|
VibrationManager.Instance.PlayVibrationOnce();
|
||||||
foreach (var line in availableLines)
|
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;
|
var i = 0;
|
||||||
foreach (var seedling in line.Seedlings)
|
foreach (var seedling in line.Seedlings)
|
||||||
{
|
{
|
||||||
if (Random.Range(0, 2) == 0)
|
if (Random.Range(0, 2) == 0)
|
||||||
{
|
{
|
||||||
var tmpData = lineData.Seedlings[i];
|
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;
|
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);
|
}).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)
|
switch (type)
|
||||||
{
|
{
|
||||||
|
|
@ -144,48 +162,46 @@ public class CornField : MonoBehaviour
|
||||||
return new SeedlingProgressData
|
return new SeedlingProgressData
|
||||||
{
|
{
|
||||||
type = PlantLineType.Top,
|
type = PlantLineType.Top,
|
||||||
Seedlings = new List<(DateTime firstTime, int period)>()
|
Seedlings = new List<(DateTime firstTime, int period, CornFieldRank rank)>()
|
||||||
{
|
{
|
||||||
GenerateSeedlingGene(),
|
GenerateSeedlingGene(level),
|
||||||
GenerateSeedlingGene(),
|
GenerateSeedlingGene(level),
|
||||||
GenerateSeedlingGene(),
|
GenerateSeedlingGene(level),
|
||||||
GenerateSeedlingGene(),
|
GenerateSeedlingGene(level),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case PlantLineType.Center:
|
case PlantLineType.Center:
|
||||||
return new SeedlingProgressData
|
return new SeedlingProgressData
|
||||||
{
|
{
|
||||||
type = PlantLineType.Center,
|
type = PlantLineType.Center,
|
||||||
Seedlings = new List<(DateTime firstTime, int period)>()
|
Seedlings = new List<(DateTime firstTime, int period, CornFieldRank rank)>()
|
||||||
{
|
{
|
||||||
GenerateSeedlingGene(),
|
GenerateSeedlingGene(level),
|
||||||
GenerateSeedlingGene(),
|
GenerateSeedlingGene(level),
|
||||||
GenerateSeedlingGene(),
|
GenerateSeedlingGene(level),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
break;
|
|
||||||
case PlantLineType.Bottom:
|
case PlantLineType.Bottom:
|
||||||
return new SeedlingProgressData
|
return new SeedlingProgressData
|
||||||
{
|
{
|
||||||
type = PlantLineType.Bottom,
|
type = PlantLineType.Bottom,
|
||||||
Seedlings = new List<(DateTime firstTime, int period)>()
|
Seedlings = new List<(DateTime firstTime, int period, CornFieldRank rank)>()
|
||||||
{
|
{
|
||||||
GenerateSeedlingGene(),
|
GenerateSeedlingGene(level),
|
||||||
GenerateSeedlingGene(),
|
GenerateSeedlingGene(level),
|
||||||
GenerateSeedlingGene(),
|
GenerateSeedlingGene(level),
|
||||||
GenerateSeedlingGene(),
|
GenerateSeedlingGene(level),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
throw new ArgumentOutOfRangeException(nameof(type), type, null);
|
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, 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)
|
private int GetHarvestCount(CornFieldRank rank)
|
||||||
|
|
@ -202,10 +218,4 @@ public class CornField : MonoBehaviour
|
||||||
throw new ArgumentOutOfRangeException(nameof(rank), rank, null);
|
throw new ArgumentOutOfRangeException(nameof(rank), rank, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update is called once per frame
|
|
||||||
void Update()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
[Serializable]
|
|
||||||
public class SeedlingProgressData
|
public class SeedlingProgressData
|
||||||
{
|
{
|
||||||
public PlantLineType type;
|
public PlantLineType type;
|
||||||
public List<(DateTime firstTime, int period)> Seedlings;
|
public List<(DateTime firstTime, int period, CornFieldRank level)> Seedlings;
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue