diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs index e178b3e6..8a0b4f77 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs @@ -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); diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcement.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcement.cs index a17a1399..2c17fe2e 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcement.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornFieldReinforcement.cs @@ -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(); } diff --git a/popcorn/Assets/MyGame/Scenes/DebugOption/Scripts/DebugOptionManager.cs b/popcorn/Assets/MyGame/Scenes/DebugOption/Scripts/DebugOptionManager.cs index afd47c24..fb749ed1 100644 --- a/popcorn/Assets/MyGame/Scenes/DebugOption/Scripts/DebugOptionManager.cs +++ b/popcorn/Assets/MyGame/Scenes/DebugOption/Scripts/DebugOptionManager.cs @@ -50,7 +50,7 @@ public class DebugOptionManager : MonoBehaviour }; gameData.SeedlingDataList = new List();; 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}"; diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/KitchenManager.cs b/popcorn/Assets/MyGame/Scenes/Main/Scripts/KitchenManager.cs index ddae4d03..9c8c44f9 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/Scripts/KitchenManager.cs +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/KitchenManager.cs @@ -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); diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/Market.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/Market.cs index 1afd8082..5c30f1fd 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/Market.cs +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/Market.cs @@ -44,16 +44,14 @@ public class Market : MonoBehaviour orderSubject.AddTo(this); var gameData = GameDataManager.GameData; - CoinManager.Instance.ChangeCoin(gameData.coin); + CoinManager.Instance.ChangeCoin(gameData.Coin); + HeartMeter.Instance.Initialize(); + HeartMeter.Instance.SetHeart(gameData.Heart); var shopLevelList = SpreadsheetDataManager.Instance.GetBaseDataList(Const.ShopLevelDataSheet); var shopLevelToCustomerList = shopLevelList.Select(shopLevel => (level:shopLevel.shopLevel, tenMinCustomer:shopLevel.customer)); - HeartMeter.Instance.Initialize(); - HeartMeter.Instance.SetHeart(gameData.Heart); - - // 在庫数表示 - stockView.SetStock(gameData.StorageTanks); +#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; diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs index d3502653..439936d5 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ProductManagement.cs @@ -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) diff --git a/popcorn/Assets/MyGame/Scenes/recipe/Scripts/RecipeDetailView.cs b/popcorn/Assets/MyGame/Scenes/recipe/Scripts/RecipeDetailView.cs index 5b93adc4..dd67dc79 100644 --- a/popcorn/Assets/MyGame/Scenes/recipe/Scripts/RecipeDetailView.cs +++ b/popcorn/Assets/MyGame/Scenes/recipe/Scripts/RecipeDetailView.cs @@ -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,56 +77,33 @@ 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); - flavor2AmountText.text = string.Format(flavorAmountFormat, flavor2Amount, data.MaterialList[2].amount); - } - else - { - flavor2View.SetActive(false); - } + var flavor2Amount = gameData.Material.FirstOrDefault(x => x.Id == data.MaterialList[2].id)?.Amount ?? 0; + flavor2AmountText.text = string.Format(flavorAmountFormat, flavor2Amount, data.MaterialList[2].amount); + 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) + if (data.GetMaterialCount() == 3 && gameData.Material.Exists(x => x.Id == data.MaterialList[2].id && x.Amount < data.MaterialList[2].amount)) { - var flavorIndex2 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[2].id); - if (flavorIndex2 == -1 || gameData.Material[flavorIndex2].Amount < data.MaterialList[2].amount) - { - flag = false; - flavor2AmountText.color = Color.red; - } + flag = false; + flavor2AmountText.color = Color.red; } return flag; } diff --git a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/Shopping.cs b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/Shopping.cs index 5f94fae9..38ec76d7 100644 --- a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/Shopping.cs +++ b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/Shopping.cs @@ -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); // アイテム購入クリック購読 diff --git a/popcorn/Assets/MyGame/Scripts/GameDataManager.cs b/popcorn/Assets/MyGame/Scripts/GameDataManager.cs index 35f6199d..3421b771 100644 --- a/popcorn/Assets/MyGame/Scripts/GameDataManager.cs +++ b/popcorn/Assets/MyGame/Scripts/GameDataManager.cs @@ -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; + [DataMember(Name = "Data7")] + private int coin; + public int Coin + { + get => coin; + set => ChangeCoin(value); + } + // [DataMember(Name = "Data8")] // private int[] avatarIdArray; // public List avatarIdList; @@ -60,7 +67,12 @@ public sealed class GameData { [DataMember(Name = "Data15")] public List SeedlingDataList = new List(); [DataMember(Name = "Data16")] - public int cornSeed; + private int cornSeed; + public int CornSeed + { + get => cornSeed; + set => ChangeCornSeed(value); + } // Main // 所持レシピ [DataMember(Name = "Data17")] @@ -83,6 +95,65 @@ public sealed class GameData { [DataMember(Name = "Data24")] 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 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() : lastAdRewardTimeArray.ToList(); ShopStock = shopStock?.ToList() ?? new List(); Pans = Pans ?? new int[0]; + TotalSalesList = TotalSalesList ?? new List(); } private Dictionary ArrayToDictionary(KeyValueOfintint[] array){ var dictionary = new Dictionary();