GameData追加 & コインとコーンrename

This commit is contained in:
kimura 2021-10-01 12:16:44 +09:00
parent 07eefe472d
commit eba9c17b55
9 changed files with 111 additions and 63 deletions

View File

@ -52,10 +52,10 @@ public class CornField : MonoBehaviour
// データ
var gameData = GameDataManager.GameData;
CoinManager.Instance.ChangeCoin(gameData.coin);
CoinManager.Instance.ChangeCoin(gameData.Coin);
HeartMeter.Instance.Initialize();
HeartMeter.Instance.SetHeart(gameData.Heart);
counterView.Initialize(gameData.cornSeed);
counterView.Initialize(gameData.CornSeed);
SetData();
// 畑リセット
@ -167,7 +167,7 @@ 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;
gameData.CornSeed += harvestedCorn * harvestCount;
var seedlingTransform = seedling.transform;
var harvestEffect = Instantiate(harvestEffectPrefab, seedlingTransform);

View File

@ -122,7 +122,7 @@ public class CornFieldReinforcement : MonoBehaviour
gameData.PlantLineDataList.Add(new PlantLineData(type, CornFieldRank.Rank1));
}
CoinManager.Instance.SubCoin(price);
gameData.coin = CoinManager.Instance.OwnCoin;
gameData.Coin = CoinManager.Instance.OwnCoin;
GameDataManager.SaveGameData();
}
@ -131,7 +131,7 @@ public class CornFieldReinforcement : MonoBehaviour
var gameData = GameDataManager.GameData;
gameData.MachineLevel++;
CoinManager.Instance.SubCoin(price);
gameData.coin = CoinManager.Instance.OwnCoin;
gameData.Coin = CoinManager.Instance.OwnCoin;
GameDataManager.SaveGameData();
}

View File

@ -50,7 +50,7 @@ public class DebugOptionManager : MonoBehaviour
};
gameData.SeedlingDataList = new List<SeedlingProgressData>();;
gameData.MachineLevel = 1;
gameData.cornSeed = 0;
gameData.CornSeed = 0;
}).AddTo(this);
resetMaterialButton.OnClickAsObservable().Subscribe(_ =>
@ -100,10 +100,10 @@ public class DebugOptionManager : MonoBehaviour
gameData.ShopStock.AddRange(Enumerable.Repeat(2, 10).ToList());
}).AddTo(this);
coinCount.text = $"{gameData.coin}";
coinCount.text = $"{gameData.Coin}";
coinCount.OnValueChangedAsObservable().Subscribe(x =>
{
gameData.coin = Int32.Parse(x);
gameData.Coin = Int32.Parse(x);
}).AddTo(this);
heartCount.text = $"{gameData.Heart}";

View File

@ -21,7 +21,7 @@ public class KitchenManager : MonoBehaviour
});
var gameData = GameDataManager.GameData;
CoinManager.Instance.ChangeCoin(gameData.coin);
CoinManager.Instance.ChangeCoin(gameData.Coin);
HeartMeter.Instance.Initialize();
HeartMeter.Instance.SetHeart(gameData.Heart);

View File

@ -44,16 +44,14 @@ public class Market : MonoBehaviour
orderSubject.AddTo(this);
var gameData = GameDataManager.GameData;
CoinManager.Instance.ChangeCoin(gameData.coin);
var shopLevelList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopLevelData>(Const.ShopLevelDataSheet);
var shopLevelToCustomerList = shopLevelList.Select(shopLevel => (level:shopLevel.shopLevel, tenMinCustomer:shopLevel.customer));
CoinManager.Instance.ChangeCoin(gameData.Coin);
HeartMeter.Instance.Initialize();
HeartMeter.Instance.SetHeart(gameData.Heart);
// 在庫数表示
stockView.SetStock(gameData.StorageTanks);
var shopLevelList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopLevelData>(Const.ShopLevelDataSheet);
var shopLevelToCustomerList = shopLevelList.Select(shopLevel => (level:shopLevel.shopLevel, tenMinCustomer:shopLevel.customer));
#if UNITY_EDITOR || DEVELOPMENT_BUILD
CheckAndFixStock();
StockFlavorLog();
@ -222,7 +220,7 @@ public class Market : MonoBehaviour
blueView.SellAction();
// コイン獲得
CoinManager.Instance.AddCoinWithEffect(coin, () => { });
gameData.coin = CoinManager.Instance.OwnCoin;
gameData.Coin = CoinManager.Instance.OwnCoin;
gameData.Heart += customers.Count;
GameDataManager.SaveGameData();
shopState.Value = gameData.ShopStock.Count == 0 ? ShopState.Close : ShopState.Open;

View File

@ -22,7 +22,7 @@ public class ProductManagement : MonoBehaviour
state.AddTo(this);
state.Value = ManagementState.None;
var gameData = GameDataManager.GameData;
CoinManager.Instance.ChangeCoin(gameData.coin);
CoinManager.Instance.ChangeCoin(gameData.Coin);
HeartMeter.Instance.Initialize();
HeartMeter.Instance.SetHeart(gameData.Heart);
@ -84,7 +84,7 @@ public class ProductManagement : MonoBehaviour
tankView.SetData(gameData.StorageTanks[tankView.TankNumber - 1]);
tankView.SetState(TankState.Unlock);
CoinManager.Instance.SubCoin(shopData.price);
gameData.coin = CoinManager.Instance.OwnCoin;
gameData.Coin = CoinManager.Instance.OwnCoin;
GameDataManager.SaveGameData();
// 次に大きいタンクの購入ボタンを表示
if (tankView.TankNumber + 1 <= tankList.Count)

View File

@ -45,13 +45,14 @@ public class RecipeDetailView : MonoBehaviour
LocalCacheManager.Save(PopcornGameManager.PanDataTag, panSelector.SelectedPanData.Value);
// 消費
var gameData = GameDataManager.GameData;
gameData.cornSeed -= data.MaterialList[0].amount;
var flavorIndex1 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[1].id);
gameData.Material[flavorIndex1].Amount -= data.MaterialList[1].amount;
if (data.GetMaterialCount() == 3)
gameData.CornSeed -= data.MaterialList[0].amount;
if (gameData.Material.FirstOrDefault(x => x.Id == data.MaterialList[1].id) is MaterialData material1)
{
var flavorIndex2 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[2].id);
gameData.Material[flavorIndex2].Amount -= data.MaterialList[2].amount;
material1.Amount -= data.MaterialList[1].amount;
}
if (data.GetMaterialCount() == 3 && gameData.Material.FirstOrDefault(x => x.Id == data.MaterialList[2].id) is MaterialData material2)
{
material2.Amount -= data.MaterialList[2].amount;
}
GameDataManager.SaveGameData();
TransitionManager.Instance.LoadScene(GameScenes.Cooking);
@ -76,57 +77,34 @@ public class RecipeDetailView : MonoBehaviour
flavorStock.text = string.Format(flavorStockFormat, shopStock + tankStock);
flavorName.text = data.name;
flavorPrice.text = data.price.ToString();
cornAmountText.text = string.Format(cornAmountFormat, gameData.cornSeed, data.MaterialList[0].amount);
cornAmountText.text = string.Format(cornAmountFormat, gameData.CornSeed, data.MaterialList[0].amount);
var flavor1Amount = 0;
var flavorIndex1 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[1].id);
if (flavorIndex1 != -1)
{
flavor1Amount = gameData.Material[flavorIndex1].Amount;
}
var flavor1Amount = gameData.Material.FirstOrDefault(x => x.Id == data.MaterialList[1].id)?.Amount ?? 0;
flavor1AmountText.text = string.Format(flavorAmountFormat, flavor1Amount, data.MaterialList[1].amount);
var flavor2Amount = 0;
if (data.GetMaterialCount() == 3)
{
var flavorIndex2 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[2].id);
if (flavorIndex2 != -1)
{
flavor2Amount = gameData.Material[flavorIndex2].Amount;
}
flavor2View.SetActive(true);
var flavor2Amount = gameData.Material.FirstOrDefault(x => x.Id == data.MaterialList[2].id)?.Amount ?? 0;
flavor2AmountText.text = string.Format(flavorAmountFormat, flavor2Amount, data.MaterialList[2].amount);
}
else
{
flavor2View.SetActive(false);
}
flavor2View.SetActive(data.GetMaterialCount() == 3);
}
private bool CheckAmount(ProductData data)
{
var flag = true;
var gameData = GameDataManager.GameData;
if (gameData.cornSeed < data.MaterialList[0].amount)
if (gameData.CornSeed < data.MaterialList[0].amount)
{
flag = false;
cornAmountText.color = Color.red;
}
var flavorIndex1 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[1].id);
if (flavorIndex1 == -1 || gameData.Material[flavorIndex1].Amount < data.MaterialList[1].amount)
if (gameData.Material.Exists(x => x.Id == data.MaterialList[1].id && x.Amount < data.MaterialList[1].amount))
{
flag = false;
flavor1AmountText.color = Color.red;
}
if (data.GetMaterialCount() == 3)
{
var flavorIndex2 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[2].id);
if (flavorIndex2 == -1 || gameData.Material[flavorIndex2].Amount < data.MaterialList[2].amount)
if (data.GetMaterialCount() == 3 && gameData.Material.Exists(x => x.Id == data.MaterialList[2].id && x.Amount < data.MaterialList[2].amount))
{
flag = false;
flavor2AmountText.color = Color.red;
}
}
return flag;
}

View File

@ -15,7 +15,7 @@ public class Shopping : MonoBehaviour
changeCoinSubject.AddTo(this);
var gameData = GameDataManager.GameData;
CoinManager.Instance.ChangeCoin(gameData.coin);
CoinManager.Instance.ChangeCoin(gameData.Coin);
HeartMeter.Instance.Initialize();
HeartMeter.Instance.SetHeart(gameData.Heart);
@ -39,8 +39,8 @@ public class Shopping : MonoBehaviour
AddItem(shopData, amount);
itemView.SetStockCount(GetItemAmount(shopData));
CoinManager.Instance.SubCoin(shopData.price * amount);
gameData.coin = CoinManager.Instance.OwnCoin;
changeCoinSubject.OnNext(gameData.coin);
gameData.Coin = CoinManager.Instance.OwnCoin;
changeCoinSubject.OnNext(gameData.Coin);
GameDataManager.SaveGameData();
}).AddTo(itemView);
// アイテム購入クリック購読

View File

@ -37,10 +37,17 @@ public sealed class GameData {
public int adCount;
[DataMember(Name = "Data5")]
public int stage = 1;
// [DataMember(Name = "Data6")]
// public int avatarId = Const.DefaultAvatarId;
[DataMember(Name = "Data7")]
public int coin;
private int coin;
public int Coin
{
get => coin;
set => ChangeCoin(value);
}
// [DataMember(Name = "Data8")]
// private int[] avatarIdArray;
// public List<int> avatarIdList;
@ -60,7 +67,12 @@ public sealed class GameData {
[DataMember(Name = "Data15")]
public List<SeedlingProgressData> SeedlingDataList = new List<SeedlingProgressData>();
[DataMember(Name = "Data16")]
public int cornSeed;
private int cornSeed;
public int CornSeed
{
get => cornSeed;
set => ChangeCornSeed(value);
}
// Main
// 所持レシピ
[DataMember(Name = "Data17")]
@ -84,6 +96,65 @@ public sealed class GameData {
public ProductRefillMode RefillMode;
// [DataMember(Name = "Data25")]
// mission
[DataMember(Name = "Data1001")]
public int TotalAddCoin { get; private set; }
[DataMember(Name = "Data1002")]
public int TotalSubCoin { get; private set; }
[DataMember(Name = "Data1003")]
public int TotalAddCornSeed { get; private set; }
[DataMember(Name = "Data1004")]
public int TotalCustomerCount { get; private set; }
[DataMember(Name = "Data1005")]
public List<ProductStockData> TotalSalesList { get; private set; }
public int TotalSales => TotalSalesList.Sum(data => data.Stock);
public int RareTotalSales => TotalSalesList.Where(data => data.Rarity != ProductRarity.Normal).Sum(data => data.Stock);
private void ChangeCornSeed(int value)
{
if (cornSeed < value)
{
TotalAddCornSeed += value - cornSeed;
}
cornSeed = value;
}
private void ChangeCoin(int value)
{
Debug.Log($"{coin} {value}");
if (coin < value)
{
TotalAddCoin += value - coin;
}
else
{
TotalSubCoin += coin - value;
}
coin = value;
}
public void AddCustomerCount(int value)
{
TotalCustomerCount += value;
}
public void AddSalesCount(int id, int stock, ProductRarity rarity)
{
if (TotalSalesList.FirstOrDefault(x => x.Rarity == rarity) is ProductStockData stockData)
{
stockData.Stock += stock;
}
else
{
TotalSalesList.Add(new ProductStockData{FlavorId = id, Rarity = rarity, Stock = stock});
}
}
public int GetTotalSalesByFlavor(int id)
{
return TotalSalesList.Where(data => data.FlavorId == id).Sum(data => data.Stock);
}
// public void ChangeAvatar(AvatarData avatarData){
// newAvatarIdList.Remove(avatarData.id);
// }
@ -123,6 +194,7 @@ public sealed class GameData {
// lastAdRewardTimeList = lastAdRewardTimeArray == null ? new List<long>() : lastAdRewardTimeArray.ToList();
ShopStock = shopStock?.ToList() ?? new List<int>();
Pans = Pans ?? new int[0];
TotalSalesList = TotalSalesList ?? new List<ProductStockData>();
}
private Dictionary<int, int> ArrayToDictionary(KeyValueOfintint[] array){
var dictionary = new Dictionary<int, int>();