畑ワールド対応
This commit is contained in:
parent
faa0f8c56e
commit
712208b9d6
|
@ -68,9 +68,10 @@ public class CornField : MonoBehaviour
|
|||
|
||||
SoundManager.Instance.PlayBGM("bgm_Main");
|
||||
// データ
|
||||
var gameData = GameDataManager.GameData;
|
||||
var globalGameData = GameDataManager.GameData;
|
||||
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
||||
|
||||
if (!gameData.FinishedFlags.HasFlag(TutorialFlag.CornField))
|
||||
if (!globalGameData.FinishedFlags.HasFlag(TutorialFlag.CornField))
|
||||
{
|
||||
promoteGrowthButton.gameObject.SetActive(false);
|
||||
TutorialManager.Instance.ShowTutorialConversation(5, () =>
|
||||
|
@ -84,8 +85,8 @@ public class CornField : MonoBehaviour
|
|||
cornFieldMask.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
||||
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
|
||||
CoinManager.Instance.ChangeCoin(cityGameData.Coin);
|
||||
HeartMeter.Instance.Initialize(globalGameData.ViewedShopLevel, cityGameData.Heart);
|
||||
|
||||
// ハートゲージがフルかつダイアログが開いていない場合レベルアップ
|
||||
HeartMeter.Instance.FulledHeart
|
||||
|
@ -95,7 +96,7 @@ public class CornField : MonoBehaviour
|
|||
.DelaySubscription(TimeSpan.FromSeconds(.4f))
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1);
|
||||
ShopLevelUp.ShowDialog(globalGameData.ViewedShopLevel + 1);
|
||||
}).AddTo(this);
|
||||
|
||||
GameDataObserver.Instance.HeartObserver
|
||||
|
@ -106,7 +107,7 @@ public class CornField : MonoBehaviour
|
|||
HeartMeter.Instance.AddHeart(pair.Current - pair.Previous);
|
||||
}).AddTo(this);
|
||||
|
||||
counterView.Initialize(gameData.CornSeed);
|
||||
counterView.Initialize(cityGameData.CornSeed);
|
||||
additionView.Initialize(0);
|
||||
SetData();
|
||||
|
||||
|
@ -130,7 +131,7 @@ public class CornField : MonoBehaviour
|
|||
VibrationManager.Instance.PlayVibrationOnce();
|
||||
foreach (var plantLine in plantLines)
|
||||
{
|
||||
if (!(gameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData))
|
||||
if (!(cityGameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
@ -140,7 +141,7 @@ public class CornField : MonoBehaviour
|
|||
{
|
||||
continue;
|
||||
}
|
||||
var progressData = gameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i];
|
||||
var progressData = cityGameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i];
|
||||
progressData.FirstTime = progressData.FirstTime.AddSeconds(-1);
|
||||
plantLine.Seedlings[i].PromoteGrowth(progressData.FirstTime);
|
||||
}
|
||||
|
@ -156,11 +157,11 @@ public class CornField : MonoBehaviour
|
|||
GetRewardDialog.ShowCornFieldDialog(() =>
|
||||
{
|
||||
isFertilizing.Value = true;
|
||||
gameData.fertilizerTime = DateTime.UtcNow.AddSeconds(fertilizerWaitTime + fertilizerDuration).ToBinary();
|
||||
cityGameData.fertilizerTime = DateTime.UtcNow.AddSeconds(fertilizerWaitTime + fertilizerDuration).ToBinary();
|
||||
#if UNITY_EDITOR
|
||||
gameData.fertilizerTime = DateTime.UtcNow.AddSeconds(10 + fertilizerDuration).ToBinary();
|
||||
cityGameData.fertilizerTime = DateTime.UtcNow.AddSeconds(10 + fertilizerDuration).ToBinary();
|
||||
#endif
|
||||
gameData.AddUseFertiliser();
|
||||
globalGameData.AddUseFertiliser();
|
||||
GameDataManager.SaveGameData();
|
||||
|
||||
additionView.IsStopDisapper = true;
|
||||
|
@ -177,13 +178,13 @@ public class CornField : MonoBehaviour
|
|||
// 既存の株は成長済みにする
|
||||
foreach (var plantLine in plantLines)
|
||||
{
|
||||
if (!(gameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData))
|
||||
if (!(cityGameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
for (int i = 0; i < plantLine.Seedlings.Count; i++)
|
||||
{
|
||||
var progressData = gameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i];
|
||||
var progressData = cityGameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i];
|
||||
progressData.FirstTime = progressData.FirstTime.AddSeconds(-maxPeriod);
|
||||
plantLine.Seedlings[i].PromoteGrowth(progressData.FirstTime);
|
||||
}
|
||||
|
@ -197,7 +198,7 @@ public class CornField : MonoBehaviour
|
|||
brotherFertilizerAnimation.EndAnimation();
|
||||
fertilizerEffectView.SetActive(false);
|
||||
SetCornField();
|
||||
resetFertilizerTimer.OnNext((int)DateTime.FromBinary(gameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds);
|
||||
resetFertilizerTimer.OnNext((int)DateTime.FromBinary(cityGameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds);
|
||||
|
||||
this.CallWaitForSeconds(fertilizerFinishWaitTime, () =>
|
||||
{
|
||||
|
@ -221,14 +222,14 @@ public class CornField : MonoBehaviour
|
|||
}).AddTo(this);
|
||||
|
||||
// 残り時間を取得
|
||||
var remaining = (int)DateTime.FromBinary(gameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds;
|
||||
var remaining = (int)DateTime.FromBinary(cityGameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds;
|
||||
resetFertilizerTimer.OnNext(remaining);
|
||||
|
||||
Observable.EveryApplicationPause()
|
||||
.Where(pause => !pause)
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
resetFertilizerTimer.OnNext((int) DateTime.FromBinary(gameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds);
|
||||
resetFertilizerTimer.OnNext((int) DateTime.FromBinary(cityGameData.fertilizerTime).Subtract(DateTime.UtcNow).TotalSeconds);
|
||||
}).AddTo(this);
|
||||
|
||||
// 収穫カウンター+吸収演出
|
||||
|
@ -277,7 +278,7 @@ public class CornField : MonoBehaviour
|
|||
additionView.AddHarvestedCount(x.count);
|
||||
});
|
||||
}).AddTo(this);
|
||||
var counterTotalCorn = gameData.CornSeed;
|
||||
var counterTotalCorn = cityGameData.CornSeed;
|
||||
additionView.EndObservable.Subscribe(addCount =>
|
||||
{
|
||||
counterTotalCorn += addCount;
|
||||
|
@ -289,32 +290,33 @@ public class CornField : MonoBehaviour
|
|||
private void SetCornField(bool useFertilizer = false)
|
||||
{
|
||||
compositeDisposable.Clear();
|
||||
var gameData = GameDataManager.GameData;
|
||||
var globalGameData = GameDataManager.GameData;
|
||||
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
||||
var fieldData = SpreadsheetDataManager.Instance.GetBaseDataList<FieldUpgradeData>(Const.FieldUpgradeDataSheet);
|
||||
var tmpFieldData = fieldData.Where(data => data.cityId == GameDataManager.GameData.CurrentCityId).ToList();
|
||||
fieldData = tmpFieldData.Count > 0 ? tmpFieldData : fieldData.Where(data => data.cityId == 0).ToList();
|
||||
var machineList = fieldData.Where(data => data.Type == CornFieldUpgradeType.Machine);
|
||||
cornHarvester.SetMachine(machineList.First(data => data.level == gameData.MachineLevel).GetPrefab());
|
||||
cornHarvester.SetMachine(machineList.First(data => data.level == cityGameData.MachineLevel).GetPrefab());
|
||||
|
||||
// コーン株の進行度初回データ作成
|
||||
foreach (var lineData in gameData.PlantLineDataList)
|
||||
foreach (var lineData in cityGameData.PlantLineDataList)
|
||||
{
|
||||
if (gameData.SeedlingDataList.Exists(data => data.type == lineData.Type))
|
||||
if (cityGameData.SeedlingDataList.Exists(data => data.type == lineData.Type))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var plantLine = plantLines.First(line => line.LineName == lineData.Type);
|
||||
gameData.SeedlingDataList.Add(new SeedlingProgressData
|
||||
cityGameData.SeedlingDataList.Add(new SeedlingProgressData
|
||||
{
|
||||
type = lineData.Type,
|
||||
Seedlings = Enumerable.Range(0, plantLine.Seedlings.Count).Select(_ => GenerateSeedlingGene(lineData.Level)).ToList()
|
||||
});
|
||||
}
|
||||
|
||||
if (!gameData.FinishedFlags.HasFlag(TutorialFlag.CornField))
|
||||
if (!globalGameData.FinishedFlags.HasFlag(TutorialFlag.CornField))
|
||||
{
|
||||
// 既に収穫できる状態にする
|
||||
var plantLine = gameData.SeedlingDataList.First(data => data.type == PlantLineType.Center);
|
||||
var plantLine = cityGameData.SeedlingDataList.First(data => data.type == PlantLineType.Center);
|
||||
foreach (var seedling in plantLine.Seedlings)
|
||||
{
|
||||
seedling.FirstTime = DateTime.MinValue;
|
||||
|
@ -333,7 +335,7 @@ public class CornField : MonoBehaviour
|
|||
TutorialManager.Instance.ShowTutorialConversation(6, () =>
|
||||
{
|
||||
promoteGrowthButton.gameObject.SetActive(true);
|
||||
gameData.FinishedFlags |= TutorialFlag.CornField;
|
||||
globalGameData.FinishedFlags |= TutorialFlag.CornField;
|
||||
GameDataManager.SaveGameData();
|
||||
});
|
||||
});
|
||||
|
@ -344,7 +346,7 @@ public class CornField : MonoBehaviour
|
|||
// セーブデータから畑を復元
|
||||
foreach (var plantLine in plantLines)
|
||||
{
|
||||
if (!(gameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData))
|
||||
if (!(cityGameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
@ -353,7 +355,7 @@ public class CornField : MonoBehaviour
|
|||
|
||||
for (int i = 0; i < plantLine.Seedlings.Count; i++)
|
||||
{
|
||||
var progressData = gameData.SeedlingDataList.First(data => data.type == plantLineData.Type).Seedlings[i];
|
||||
var progressData = cityGameData.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
|
||||
|
@ -367,8 +369,8 @@ public class CornField : MonoBehaviour
|
|||
{
|
||||
VibrationManager.Instance.PlayVibrationOnce();
|
||||
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 harvestedCorn = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == cityGameData.MachineLevel)?.harvested ?? 20;
|
||||
cityGameData.CornSeed += harvestedCorn * harvestCount;
|
||||
var seedlingTransform = seedling.transform;
|
||||
|
||||
var harvestEffect = Instantiate(harvestEffectPrefab, seedlingTransform);
|
||||
|
@ -423,7 +425,7 @@ public class CornField : MonoBehaviour
|
|||
|
||||
// 強化ボタン通知
|
||||
var upgradePrice = int.MaxValue;
|
||||
if (fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == gameData.MachineLevel + 1)?.price is int nextMachinePrice)
|
||||
if (fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == cityGameData.MachineLevel + 1)?.price is int nextMachinePrice)
|
||||
{
|
||||
upgradePrice = Mathf.Min(upgradePrice, nextMachinePrice);
|
||||
}
|
||||
|
@ -431,7 +433,7 @@ public class CornField : MonoBehaviour
|
|||
{
|
||||
var upgradeType = FieldUpgradeData.PlantTypeToUpgradeType(plantLine.LineName);
|
||||
var nextRank = CornFieldRank.Rank1;
|
||||
if (gameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData)
|
||||
if (cityGameData.PlantLineDataList.FirstOrDefault(data => data.Type == plantLine.LineName) is PlantLineData plantLineData)
|
||||
{
|
||||
if (plantLineData.Level == CornFieldRank.Rank3)
|
||||
{
|
||||
|
@ -449,21 +451,21 @@ public class CornField : MonoBehaviour
|
|||
|
||||
private void SetData()
|
||||
{
|
||||
var gameData = GameDataManager.GameData;
|
||||
if (gameData.PlantLineDataList == null || gameData.PlantLineDataList.Count == 0)
|
||||
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
||||
if (cityGameData.PlantLineDataList == null || cityGameData.PlantLineDataList.Count == 0)
|
||||
{
|
||||
gameData.PlantLineDataList = new List<PlantLineData>
|
||||
cityGameData.PlantLineDataList = new List<PlantLineData>
|
||||
{
|
||||
new PlantLineData(PlantLineType.Center, CornFieldRank.Rank1),
|
||||
};
|
||||
}
|
||||
if (gameData.SeedlingDataList == null || gameData.SeedlingDataList.Count == 0)
|
||||
if (cityGameData.SeedlingDataList == null || cityGameData.SeedlingDataList.Count == 0)
|
||||
{
|
||||
gameData.SeedlingDataList = new List<SeedlingProgressData>();
|
||||
cityGameData.SeedlingDataList = new List<SeedlingProgressData>();
|
||||
}
|
||||
if (gameData.MachineLevel == 0)
|
||||
if (cityGameData.MachineLevel == 0)
|
||||
{
|
||||
gameData.MachineLevel = 1;
|
||||
cityGameData.MachineLevel = 1;
|
||||
}
|
||||
GameDataManager.SaveGameData();
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ public class CornFieldReinforcement : MonoBehaviour
|
|||
private void SetView()
|
||||
{
|
||||
compositeDisposable.Clear();
|
||||
var gameData = GameDataManager.GameData;
|
||||
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
||||
var fieldData = SpreadsheetDataManager.Instance.GetBaseDataList<FieldUpgradeData>(Const.FieldUpgradeDataSheet);
|
||||
var tmpFieldData = fieldData.Where(data => data.cityId == GameDataManager.GameData.CurrentCityId).ToList();
|
||||
fieldData = tmpFieldData.Count > 0 ? tmpFieldData : fieldData.Where(data => data.cityId == 0).ToList();
|
||||
|
@ -41,7 +41,7 @@ public class CornFieldReinforcement : MonoBehaviour
|
|||
foreach (var view in reinforcementViews)
|
||||
{
|
||||
var upgradeType = FieldUpgradeData.PlantTypeToUpgradeType(view.LineType);
|
||||
if (gameData.PlantLineDataList.FirstOrDefault(x => x.Type == view.LineType) is PlantLineData lineData)
|
||||
if (cityGameData.PlantLineDataList.FirstOrDefault(x => x.Type == view.LineType) is PlantLineData lineData)
|
||||
{
|
||||
// Max
|
||||
if (lineData.Level == CornFieldRank.Rank3)
|
||||
|
@ -89,20 +89,20 @@ public class CornFieldReinforcement : MonoBehaviour
|
|||
// 収穫機
|
||||
// Max
|
||||
var maxLevel = fieldData.Where(x => x.Type == CornFieldUpgradeType.Machine).Max(x => x.level);
|
||||
if (gameData.MachineLevel == maxLevel)
|
||||
if (cityGameData.MachineLevel == maxLevel)
|
||||
{
|
||||
machineUpgradeView.SetMax(maxLevel);
|
||||
}
|
||||
else
|
||||
{
|
||||
var price = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == gameData.MachineLevel + 1)?.price ?? 1;
|
||||
var price = fieldData.FirstOrDefault(x => x.Type == CornFieldUpgradeType.Machine && x.level == cityGameData.MachineLevel + 1)?.price ?? 1;
|
||||
machineUpgradeView.SetButtonActive(price <= CoinManager.Instance.OwnCoin);
|
||||
machineUpgradeView.SetData(gameData.MachineLevel, price);
|
||||
machineUpgradeView.SetData(cityGameData.MachineLevel, price);
|
||||
// 購入ボタン
|
||||
machineUpgradeView.ButtonClickObserve.ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ =>
|
||||
{
|
||||
LocalCacheManager.Save(CornFieldReinforcementDataTypeTag, CornFieldUpgradeType.Machine);
|
||||
LocalCacheManager.Save(CornFieldReinforcementDataTag, (gameData.MachineLevel, price, new Action(() => {
|
||||
LocalCacheManager.Save(CornFieldReinforcementDataTag, (cityGameData.MachineLevel, price, new Action(() => {
|
||||
PurchaseMachine(price);
|
||||
SetView();
|
||||
LocalCacheManager.Load<Action>(CornFieldResetCallbackTag, null)?.Invoke();
|
||||
|
@ -114,26 +114,26 @@ public class CornFieldReinforcement : MonoBehaviour
|
|||
|
||||
private void PurchaseField(int price, PlantLineType type, CornFieldRank nextRank)
|
||||
{
|
||||
var gameData = GameDataManager.GameData;
|
||||
if (gameData.PlantLineDataList.FirstOrDefault(x => x.Type == type) is PlantLineData lineData)
|
||||
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
||||
if (cityGameData.PlantLineDataList.FirstOrDefault(x => x.Type == type) is PlantLineData lineData)
|
||||
{
|
||||
lineData.Level = nextRank;
|
||||
}
|
||||
else
|
||||
{
|
||||
gameData.PlantLineDataList.Add(new PlantLineData(type, CornFieldRank.Rank1));
|
||||
cityGameData.PlantLineDataList.Add(new PlantLineData(type, CornFieldRank.Rank1));
|
||||
}
|
||||
CoinManager.Instance.SubCoin(price);
|
||||
gameData.Coin = CoinManager.Instance.OwnCoin;
|
||||
cityGameData.Coin = CoinManager.Instance.OwnCoin;
|
||||
GameDataManager.SaveGameData();
|
||||
}
|
||||
|
||||
private void PurchaseMachine(int price)
|
||||
{
|
||||
var gameData = GameDataManager.GameData;
|
||||
gameData.MachineLevel++;
|
||||
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
||||
cityGameData.MachineLevel++;
|
||||
CoinManager.Instance.SubCoin(price);
|
||||
gameData.Coin = CoinManager.Instance.OwnCoin;
|
||||
cityGameData.Coin = CoinManager.Instance.OwnCoin;
|
||||
GameDataManager.SaveGameData();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue