畑挙動改善/強化後のパラメータ反映処理追加
This commit is contained in:
parent
1fc93ab040
commit
97ef5f222b
|
|
@ -29,7 +29,6 @@ public class CornField : MonoBehaviour
|
|||
[SerializeField] private Transform animationTarget;
|
||||
[Space]
|
||||
[SerializeField] private List<PlantLine> plantLines = new List<PlantLine>();
|
||||
private readonly List<PlantLine> availableLines = new List<PlantLine>();
|
||||
private static readonly int maxPeriod = 60;
|
||||
private static readonly int minPeriod = 45;
|
||||
private static readonly int harvestedFrameInterval = 3;
|
||||
|
|
@ -59,33 +58,19 @@ public class CornField : MonoBehaviour
|
|||
counterView.Initialize(gameData.cornSeed);
|
||||
SetData();
|
||||
|
||||
var fieldData = SpreadsheetDataManager.Instance.GetBaseDataList<FieldUpgradeData>(Const.FieldUpgradeDataSheet);
|
||||
|
||||
// 畑リセット
|
||||
foreach (var line in plantLines)
|
||||
{
|
||||
line.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
// セーブデータから畑を復元
|
||||
availableLines.Clear();
|
||||
foreach (var lineData in gameData.PlantLineDataList)
|
||||
SetCornField();
|
||||
|
||||
upgradeButton.OnClickAsObservable().Subscribe(_ =>
|
||||
{
|
||||
var plantLine = plantLines.First(x => x.LineName == lineData.Type);
|
||||
plantLine.gameObject.SetActive(true);
|
||||
plantLine.SetFieldLevel(lineData.Level);
|
||||
availableLines.Add(plantLine);
|
||||
// コーン株の進行度初回データ作成
|
||||
if (!gameData.SeedlingDataList.Exists(x => x.type == lineData.Type))
|
||||
{
|
||||
gameData.SeedlingDataList.Add(new SeedlingProgressData
|
||||
{
|
||||
type = lineData.Type,
|
||||
Seedlings = Enumerable.Repeat(GenerateSeedlingGene(lineData.Level), plantLine.Seedlings.Count).ToList()
|
||||
});
|
||||
}
|
||||
}
|
||||
GameDataManager.SaveGameData();
|
||||
LocalCacheManager.Save(CornFieldReinforcement.CornFieldResetCallbackTag, new Action(SetCornField));
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.Reinforcement);
|
||||
}).AddTo(this);
|
||||
|
||||
// 収穫カウンター+吸収演出
|
||||
cornHarvester.FinishHarvested
|
||||
|
|
@ -130,28 +115,55 @@ public class CornField : MonoBehaviour
|
|||
counterView.SetHarvestedCount(x.count);
|
||||
});
|
||||
}).AddTo(this);
|
||||
// 株設定
|
||||
foreach (var line in availableLines)
|
||||
}
|
||||
|
||||
public void SetCornField()
|
||||
{
|
||||
var seedlingDataIndex = gameData.SeedlingDataList.FindIndex(x => x.type == line.LineName);
|
||||
var lineData = gameData.SeedlingDataList[seedlingDataIndex];
|
||||
var i = 0;
|
||||
foreach (var seedling in line.Seedlings)
|
||||
compositeDisposable.Clear();
|
||||
var gameData = GameDataManager.GameData;
|
||||
var fieldData = SpreadsheetDataManager.Instance.GetBaseDataList<FieldUpgradeData>(Const.FieldUpgradeDataSheet);
|
||||
|
||||
// コーン株の進行度初回データ作成
|
||||
foreach (var lineData in gameData.PlantLineDataList)
|
||||
{
|
||||
var index = i;
|
||||
i++;
|
||||
seedling.SetSeedlingGene(lineData.Seedlings[index].FirstTime, lineData.Seedlings[index].Period, lineData.Seedlings[index].Level);
|
||||
// コーン株の進行度初回データ作成
|
||||
if (!gameData.SeedlingDataList.Exists(data => data.type == lineData.Type))
|
||||
{
|
||||
var plantLine = plantLines.First(line => line.LineName == lineData.Type);
|
||||
gameData.SeedlingDataList.Add(new SeedlingProgressData
|
||||
{
|
||||
type = lineData.Type,
|
||||
Seedlings = Enumerable.Range(0, plantLine.Seedlings.Count).Select(_ => GenerateSeedlingGene(lineData.Level)).ToList()
|
||||
});
|
||||
}
|
||||
}
|
||||
GameDataManager.SaveGameData();
|
||||
|
||||
|
||||
// セーブデータから畑を復元
|
||||
foreach (var plantLine in plantLines)
|
||||
{
|
||||
if (gameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData)
|
||||
{
|
||||
plantLine.gameObject.SetActive(true);
|
||||
plantLine.SetFieldLevel(plantLineData.Level);
|
||||
|
||||
for (int i = 0; i < plantLine.Seedlings.Count; i++)
|
||||
{
|
||||
var progressData = gameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i];
|
||||
var seedling = plantLine.Seedlings[i];
|
||||
seedling.SetSeedlingGene(progressData.FirstTime, progressData.Period, progressData.Level);
|
||||
#if DEVELOPMENT_BUILD || UNITY_EDITOR
|
||||
if (UsayaStorageManager.LoadOrDefault(UsayaStorageFilename.Settings_Data, "DebugFastGrowing", false))
|
||||
{
|
||||
seedling.SetSeedlingGene(lineData.Seedlings[index].FirstTime, lineData.Seedlings[index].Period / 3, lineData.Seedlings[index].Level);
|
||||
seedling.SetSeedlingGene(progressData.FirstTime, progressData.Period / 3, progressData.Level);
|
||||
}
|
||||
#endif
|
||||
// 収穫通知
|
||||
seedling.Harvested.Subscribe(_ =>
|
||||
{
|
||||
VibrationManager.Instance.PlayVibrationOnce();
|
||||
var harvestCount = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.FieldCenter && x.level == (int)lineData.Seedlings[index].Level)?.harvested ?? 1;
|
||||
var harvestCount = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.FieldCenter && x.level == (int)progressData.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;
|
||||
|
|
@ -184,7 +196,7 @@ public class CornField : MonoBehaviour
|
|||
});
|
||||
}
|
||||
// 新しい苗
|
||||
var newGene = GenerateSeedlingGene(line.FieldLevel);
|
||||
var newGene = GenerateSeedlingGene(plantLineData.Level);
|
||||
seedling.SetSeedlingGene(newGene.FirstTime, newGene.Period, newGene.Level);
|
||||
#if DEVELOPMENT_BUILD || UNITY_EDITOR
|
||||
if (UsayaStorageManager.LoadOrDefault(UsayaStorageFilename.Settings_Data, "DebugFastGrowing", false))
|
||||
|
|
@ -192,38 +204,40 @@ public class CornField : MonoBehaviour
|
|||
seedling.SetSeedlingGene(newGene.FirstTime, newGene.Period / 3, newGene.Level);
|
||||
}
|
||||
#endif
|
||||
gameData.SeedlingDataList[seedlingDataIndex].Seedlings[index] = newGene;
|
||||
progressData.Level = newGene.Level;
|
||||
progressData.Period = newGene.Period;
|
||||
progressData.FirstTime = newGene.FirstTime;
|
||||
GameDataManager.SaveGameData();
|
||||
}).AddTo(compositeDisposable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 時短ボタン
|
||||
promoteGrowthButton.OnClickAsObservable().Subscribe(_ =>
|
||||
{
|
||||
VibrationManager.Instance.PlayVibrationOnce();
|
||||
foreach (var line in availableLines)
|
||||
foreach (var plantLine in plantLines)
|
||||
{
|
||||
var seedlingDataIndex = gameData.SeedlingDataList.FindIndex(x => x.type == line.LineName);
|
||||
for (int i = 0; i < line.Seedlings.Count; i++)
|
||||
if (gameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData)
|
||||
{
|
||||
for (int i = 0; i < plantLine.Seedlings.Count; i++)
|
||||
{
|
||||
if (Random.Range(0, 2) == 0)
|
||||
{
|
||||
var tmpData = gameData.SeedlingDataList[seedlingDataIndex].Seedlings[i];
|
||||
tmpData.FirstTime = tmpData.FirstTime.AddSeconds(-1);
|
||||
line.Seedlings[i].PromoteGrowth(tmpData.FirstTime);
|
||||
gameData.SeedlingDataList[seedlingDataIndex].Seedlings[i] = tmpData;
|
||||
continue;
|
||||
}
|
||||
var progressData = gameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i];
|
||||
var seedling = plantLine.Seedlings[i];
|
||||
progressData.FirstTime = progressData.FirstTime.AddSeconds(-1);
|
||||
seedling.PromoteGrowth(progressData.FirstTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 設定のセーブ
|
||||
GameDataManager.SaveGameData();
|
||||
}).AddTo(compositeDisposable);
|
||||
|
||||
upgradeButton.OnClickAsObservable().Subscribe(_ =>
|
||||
{
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.Reinforcement);
|
||||
}).AddTo(this);
|
||||
}
|
||||
|
||||
private void SetData()
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ public class CornFieldReinforcement : MonoBehaviour
|
|||
{
|
||||
public static readonly string CornFieldReinforcementDataTypeTag = "CornFieldReinforcementDataType";
|
||||
public static readonly string CornFieldReinforcementDataTag = "CornFieldReinforcementData";
|
||||
public static readonly string CornFieldResetCallbackTag = "CornFieldResetCallback";
|
||||
[SerializeField] private List<CornFieldReinforcementView> reinforcementViews;
|
||||
[SerializeField] private MachineUpgradeView machineUpgradeView;
|
||||
[SerializeField] private Button closeButton;
|
||||
|
|
@ -20,9 +21,10 @@ public class CornFieldReinforcement : MonoBehaviour
|
|||
compositeDisposable.AddTo(this);
|
||||
closeButton.OnClickAsObservable().Subscribe(_ =>
|
||||
{
|
||||
TransitionManager.Instance.UnloadScene(GameScenes.Reinforcement);
|
||||
LocalCacheManager.Remove(CornFieldReinforcementDataTypeTag);
|
||||
LocalCacheManager.Remove(CornFieldReinforcementDataTag);
|
||||
LocalCacheManager.Remove(CornFieldResetCallbackTag);
|
||||
TransitionManager.Instance.UnloadScene(GameScenes.Reinforcement);
|
||||
}).AddTo(this);
|
||||
SetView();
|
||||
}
|
||||
|
|
@ -57,6 +59,7 @@ public class CornFieldReinforcement : MonoBehaviour
|
|||
LocalCacheManager.Save(CornFieldReinforcementDataTag, (lineData, price, new Action(() => {
|
||||
PurchaseField(price, view.LineType, nextRank);
|
||||
SetView();
|
||||
LocalCacheManager.Load<Action>(CornFieldResetCallbackTag, null)?.Invoke();
|
||||
})));
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.ReinforcementDetail);
|
||||
}).AddTo(compositeDisposable);
|
||||
|
|
@ -74,6 +77,7 @@ public class CornFieldReinforcement : MonoBehaviour
|
|||
LocalCacheManager.Save(CornFieldReinforcementDataTag, (lineData = null, price, new Action(() => {
|
||||
PurchaseField(price, view.LineType, CornFieldRank.Rank1);
|
||||
SetView();
|
||||
LocalCacheManager.Load<Action>(CornFieldResetCallbackTag, null)?.Invoke();
|
||||
})));
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.ReinforcementDetail);
|
||||
}).AddTo(compositeDisposable);
|
||||
|
|
@ -99,6 +103,7 @@ public class CornFieldReinforcement : MonoBehaviour
|
|||
LocalCacheManager.Save(CornFieldReinforcementDataTag, (gameData.MachineLevel, price, new Action(() => {
|
||||
PurchaseMachine(price);
|
||||
SetView();
|
||||
LocalCacheManager.Load<Action>(CornFieldResetCallbackTag, null)?.Invoke();
|
||||
})));
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.ReinforcementDetail);
|
||||
}).AddTo(compositeDisposable);
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public class CornSeedling : MonoBehaviour, IPointerEnterHandler
|
|||
{
|
||||
completed = false;
|
||||
compositeDisposable.Clear();
|
||||
seedlingStage.SetValueAndForceNotify(SeedlingStage.Stage0);
|
||||
UpdateStage();
|
||||
beginTime = dateTime;
|
||||
period = periodTime;
|
||||
|
||||
|
|
@ -69,6 +69,7 @@ public class CornSeedling : MonoBehaviour, IPointerEnterHandler
|
|||
|
||||
// 更新
|
||||
seedlingStage
|
||||
.SkipLatestValueOnSubscribe()
|
||||
.TakeWhile(_ => !completed)
|
||||
.Subscribe(x =>
|
||||
{
|
||||
|
|
|
|||
|
|
@ -16,12 +16,10 @@ public class PlantLine : MonoBehaviour
|
|||
[SerializeField] private List<CornSeedling> seedlings = new List<CornSeedling>();
|
||||
public PlantLineType LineName => lineName;
|
||||
public List<CornSeedling> Seedlings => seedlings;
|
||||
public CornFieldRank FieldLevel { get; private set; }
|
||||
private readonly string boardFormat = "x{0}";
|
||||
|
||||
public void SetFieldLevel(CornFieldRank rank)
|
||||
{
|
||||
FieldLevel = rank;
|
||||
switch (rank)
|
||||
{
|
||||
case CornFieldRank.Rank1:
|
||||
|
|
|
|||
Loading…
Reference in New Issue