レシピ選択にフライパンを追加

This commit is contained in:
kimura 2021-09-24 14:44:17 +09:00
parent 314ba8ecd7
commit 9b3af3217b
10 changed files with 124 additions and 117 deletions

View File

@ -30,9 +30,9 @@ public class CookingResult : MonoBehaviour
private void Start() private void Start()
{ {
var (recipe, rarityData, resultData, successAction) = LocalCacheManager.Load<(RecipeData, RarityData, CornResult, Action)>(PopcornGameManager.CookingResultDataTag); var (productData, rarityData, resultData, successAction) = LocalCacheManager.Load<(ProductData, RarityData, CornResult, Action)>(PopcornGameManager.CookingResultDataTag);
var result = new ReactiveProperty<CornResult>(resultData).AddTo(this); var result = new ReactiveProperty<CornResult>(resultData).AddTo(this);
SetData(recipe, rarityData); SetData(productData, rarityData);
result.Subscribe(r => result.Subscribe(r =>
{ {
SetUI(r); SetUI(r);
@ -46,13 +46,13 @@ public class CookingResult : MonoBehaviour
centerOkButton.OnClickAsObservable().Subscribe(_ => centerOkButton.OnClickAsObservable().Subscribe(_ =>
{ {
// 獲得、遷移 // 獲得、遷移
AddStock(recipe, rarityData.Rarity); AddStock(productData, rarityData.Rarity);
TransitionManager.Instance.LoadScene(GameScenes.Main); TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this); }).AddTo(this);
leftOkButton.OnClickAsObservable().Subscribe(_ => leftOkButton.OnClickAsObservable().Subscribe(_ =>
{ {
// 獲得、遷移 // 獲得、遷移
AddStock(recipe); AddStock(productData);
TransitionManager.Instance.LoadScene(GameScenes.Main); TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this); }).AddTo(this);
perfectButton.OnClickAsObservable().Subscribe(_ => perfectButton.OnClickAsObservable().Subscribe(_ =>
@ -67,12 +67,12 @@ public class CookingResult : MonoBehaviour
}).AddTo(this); }).AddTo(this);
} }
private void SetData(RecipeData recipe, RarityData rarity) private void SetData(ProductData recipe, RarityData rarity)
{ {
// popcornImage // popcornImage
popcornText.text = recipe.Name; popcornText.text = recipe.name;
popcornTextPerfect.text = recipe.Name; popcornTextPerfect.text = recipe.name;
quantityText.text = string.Format(QuantityTextFormat, recipe.Volume); quantityText.text = string.Format(QuantityTextFormat, recipe.volume);
rarityText.text = string.Format(RarityTextFormat, rarity.rate - 100); rarityText.text = string.Format(RarityTextFormat, rarity.rate - 100);
rarityView.SetRarity(rarity.Rarity); rarityView.SetRarity(rarity.Rarity);
} }
@ -104,14 +104,14 @@ public class CookingResult : MonoBehaviour
explainWithRarityObject.SetActive(result == CornResult.Perfect); explainWithRarityObject.SetActive(result == CornResult.Perfect);
} }
private void AddStock(RecipeData recipe, ProductRarity rarity = ProductRarity.Normal) private void AddStock(ProductData productData, ProductRarity rarity = ProductRarity.Normal)
{ {
var gameData = GameDataManager.GameData; var gameData = GameDataManager.GameData;
// 店頭の空きに追加 // 店頭の空きに追加
var remain = recipe.Volume; var remain = productData.volume;
var shopSpace = Market.ShopStockCount - gameData.ShopStock.Count; var shopSpace = Market.ShopStockCount - gameData.ShopStock.Count;
var stockCount = Mathf.Min(shopSpace, remain); var stockCount = Mathf.Min(shopSpace, remain);
gameData.ShopStock.AddRange(Enumerable.Repeat(recipe.RecipeId, stockCount)); gameData.ShopStock.AddRange(Enumerable.Repeat(productData.id, stockCount));
remain -= stockCount; remain -= stockCount;
// 空タンク並び替え // 空タンク並び替え
@ -119,7 +119,7 @@ public class CookingResult : MonoBehaviour
// 空きのタンクを確認 // 空きのタンクを確認
gameData.StorageTanks gameData.StorageTanks
.Select((tank, i) => (tank, i)) .Select((tank, i) => (tank, i))
.Where(x => x.tank.IsEmpty || x.tank.FlavorId == recipe.RecipeId && !x.tank.IsFull) .Where(x => x.tank.IsEmpty || x.tank.FlavorId == productData.id && !x.tank.IsFull)
.Select(x => (x.i, space: x.tank.Capacity - x.tank.Stock)) .Select(x => (x.i, space: x.tank.Capacity - x.tank.Stock))
.OrderBy(x => x.space) .OrderBy(x => x.space)
.ToList() .ToList()
@ -132,7 +132,7 @@ public class CookingResult : MonoBehaviour
// タンクが空ならフレーバー設定 // タンクが空ならフレーバー設定
if (gameData.StorageTanks[x.i].IsEmpty) if (gameData.StorageTanks[x.i].IsEmpty)
{ {
gameData.StorageTanks[x.i].FlavorId = recipe.RecipeId; gameData.StorageTanks[x.i].FlavorId = productData.id;
} }
// タンクに追加 // タンクに追加
stockCount = Mathf.Min(x.space, remain); stockCount = Mathf.Min(x.space, remain);

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using UniRx; using UniRx;
using UniRx.Triggers; using UniRx.Triggers;
using UnityEngine; using UnityEngine;
@ -16,6 +17,7 @@ public enum GameState
public class PopcornGameManager : MonoBehaviour public class PopcornGameManager : MonoBehaviour
{ {
public static readonly string CookingDataTag = "CookingData"; public static readonly string CookingDataTag = "CookingData";
public static readonly string PanDataTag = "PanData";
public static readonly string CookingResultDataTag = "CookingResultData"; public static readonly string CookingResultDataTag = "CookingResultData";
// View // View
[SerializeField] private PopcornGameView gameView; [SerializeField] private PopcornGameView gameView;
@ -101,6 +103,8 @@ public class PopcornGameManager : MonoBehaviour
private void ResetGame() private void ResetGame()
{ {
// フライパン設定
var panData = LocalCacheManager.Load<PanData>(PanDataTag);
cornManager.SetCornsActive(true); cornManager.SetCornsActive(true);
compositeDisposable.Clear(); compositeDisposable.Clear();
cornManager.Result.SkipLatestValueOnSubscribe() cornManager.Result.SkipLatestValueOnSubscribe()
@ -112,8 +116,10 @@ public class PopcornGameManager : MonoBehaviour
// リザルト表示遅延 // リザルト表示遅延
this.CallWaitForSeconds(1.2f, () => this.CallWaitForSeconds(1.2f, () =>
{ {
var recipe = LocalCacheManager.Load<RecipeData>(CookingDataTag); var rarityList = SpreadsheetDataManager.Instance.GetBaseDataList<RarityData>(Const.RarityDataSheet);
LocalCacheManager.Save(CookingResultDataTag, (recipe, new RarityData{id = 5, rate = 120}, result, new Action(() => cornManager.SetCornsActive(false)))); var rarityData = rarityList.First(data => data.Rarity == panData.Rarity);
var productData = LocalCacheManager.Load<ProductData>(CookingDataTag);
LocalCacheManager.Save(CookingResultDataTag, (productData, rarityData, result, new Action(() => cornManager.SetCornsActive(false))));
TransitionManager.Instance.LoadSceneAdditive(GameScenes.CookingResults); TransitionManager.Instance.LoadSceneAdditive(GameScenes.CookingResults);
}); });
}).AddTo(compositeDisposable); }).AddTo(compositeDisposable);

View File

@ -66,7 +66,7 @@ public class DebugOptionManager : MonoBehaviour
gameData.ShopStock.AddRange(Enumerable.Repeat(2, 10).ToList()); gameData.ShopStock.AddRange(Enumerable.Repeat(2, 10).ToList());
gameData.StorageTanks = new List<StorageTank> gameData.StorageTanks = new List<StorageTank>
{ {
new StorageTank(){Id = 1, Capacity = 50, FlavorId = 1, Stocks = new List<ProductStockData>{new ProductStockData{Rarity = ProductRarity.Normal, Stock = 0}}}, // new StorageTank(){Id = 1, Capacity = 50, FlavorId = 1, Stocks = new List<ProductStockData>{new ProductStockData{Rarity = ProductRarity.Normal, Stock = 0}}},
new StorageTank(){Id = 2, Capacity = 50, FlavorId = 2, Stocks = new List<ProductStockData> new StorageTank(){Id = 2, Capacity = 50, FlavorId = 2, Stocks = new List<ProductStockData>
{ {
new ProductStockData{Rarity = ProductRarity.Normal, Stock = 1}, new ProductStockData{Rarity = ProductRarity.Normal, Stock = 1},
@ -74,7 +74,9 @@ public class DebugOptionManager : MonoBehaviour
}}, }},
new StorageTank(){Id = 3, Capacity = 50, FlavorId = 1, Stocks = new List<ProductStockData> new StorageTank(){Id = 3, Capacity = 50, FlavorId = 1, Stocks = new List<ProductStockData>
{ {
new ProductStockData{Rarity = ProductRarity.Copper, Stock = 1}, new ProductStockData{Rarity = ProductRarity.Normal, Stock = 1},
new ProductStockData{Rarity = ProductRarity.Yellow, Stock = 9},
new ProductStockData{Rarity = ProductRarity.Copper, Stock = 5},
new ProductStockData{Rarity = ProductRarity.Silver, Stock = 5}, new ProductStockData{Rarity = ProductRarity.Silver, Stock = 5},
new ProductStockData{Rarity = ProductRarity.Gold, Stock = 10}, new ProductStockData{Rarity = ProductRarity.Gold, Stock = 10},
new ProductStockData{Rarity = ProductRarity.Rainbow, Stock = 20}, new ProductStockData{Rarity = ProductRarity.Rainbow, Stock = 20},

View File

@ -664,6 +664,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
lockPanel: {fileID: 3261803197014340250} lockPanel: {fileID: 3261803197014340250}
lockPanelText: {fileID: 1139637482908115965}
detailButton: {fileID: 8320108874302735811} detailButton: {fileID: 8320108874302735811}
flavorName: {fileID: 2929932626752093611} flavorName: {fileID: 2929932626752093611}
flavorPrice: {fileID: 2929932627123125673} flavorPrice: {fileID: 2929932627123125673}
@ -671,6 +672,7 @@ MonoBehaviour:
flavor1AmountText: {fileID: 2929932625557648441} flavor1AmountText: {fileID: 2929932625557648441}
flavor2AmountText: {fileID: 367551539734858426} flavor2AmountText: {fileID: 367551539734858426}
flavor2View: {fileID: 367551539495355422} flavor2View: {fileID: 367551539495355422}
lockPanelTextFormat: "\u5E97\u8217\u30EC\u30D9\u30EB{0}\u3067\u958B\u653E"
--- !u!1 &2997770120253274331 --- !u!1 &2997770120253274331
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -1,4 +1,5 @@
using System; using System;
using UniRx;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
@ -11,11 +12,38 @@ public class PanSelector : MonoBehaviour
[SerializeField] private Text panName; [SerializeField] private Text panName;
[SerializeField] private Text panText; [SerializeField] private Text panText;
[SerializeField] private Image panIcon; [SerializeField] private Image panIcon;
public IReadOnlyReactiveProperty<PanData> SelectedPanData => selectedPanData;
private readonly ReactiveProperty<PanData> selectedPanData = new ReactiveProperty<PanData>();
private readonly ReactiveProperty<int> selectedIndex = new ReactiveProperty<int>();
private void Start() private void Start()
{ {
// 所持フライパン読み込み selectedPanData.AddTo(this);
// 設定中のフライパン表示 selectedIndex.AddTo(this);
// フライパン変更通知 var panList = SpreadsheetDataManager.Instance.GetBaseDataList<PanData>(Const.PanDataSheet);
var panCount = panList.Count;
selectedPanData.Value = panList[0];
selectedPanData.Subscribe(data =>
{
SetData(data);
}).AddTo(this);
selectedIndex.Subscribe(x =>
{
selectedPanData.Value = panList[x];
}).AddTo(this);
prevPanButton.OnClickAsObservable().Subscribe(_ =>
{
selectedIndex.Value = selectedIndex.Value == 0 ? panCount - 1 : selectedIndex.Value - 1;
}).AddTo(this);
nextPanButton.OnClickAsObservable().Subscribe(_ =>
{
selectedIndex.Value = selectedIndex.Value == panCount - 1 ? 0 : selectedIndex.Value + 1;
}).AddTo(this);
}
private void SetData(PanData data)
{
panName.text = data.name;
panText.text = data.text;
} }
} }

View File

@ -18,57 +18,14 @@ public class RecipeData
public static List<RecipeData> GetAllRecipe() public static List<RecipeData> GetAllRecipe()
{ {
return new List<RecipeData> return SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet).Select(data => new RecipeData
{ {
new RecipeData RecipeId = data.id,
{ Name = data.name,
RecipeId = 1, Price = data.price,
Name = "塩コケコーン", Volume = data.volume,
Price = 5, CornAmount = data.MaterialList[0].amount,
Volume = 10, Flavors = data.MaterialList
CornAmount = 150, }).ToList();
Flavors = new List<(int id, int amount)>
{
(2, 1)
}
},
new RecipeData
{
RecipeId = 2,
Name = "キャラメルコケコーン",
Price = 15,
Volume = 10,
CornAmount = 150,
Flavors = new List<(int id, int amount)>
{
(7, 1)
}
},
new RecipeData
{
RecipeId = 3,
Name = "ブラックペッパーコケコーン",
Price = 9,
Volume = 10,
CornAmount = 150,
Flavors = new List<(int id, int amount)>
{
(3, 1)
}
},
new RecipeData
{
RecipeId = 13,
Name = "塩キャラメルコケコーン",
Price = 19,
Volume = 10,
CornAmount = 150,
Flavors = new List<(int id, int amount)>
{
(2, 1),
(7, 1),
}
},
};
} }
} }

View File

@ -28,7 +28,7 @@ public class RecipeDetailView : MonoBehaviour
private void Start() private void Start()
{ {
var data = LocalCacheManager.Load<RecipeData>(PopcornGameManager.CookingDataTag); var data = LocalCacheManager.Load<ProductData>(PopcornGameManager.CookingDataTag);
cancelButton.OnClickAsObservable().Subscribe(_ => cancelButton.OnClickAsObservable().Subscribe(_ =>
{ {
@ -42,20 +42,17 @@ public class RecipeDetailView : MonoBehaviour
nextButton.OnClickAsObservable().Subscribe(_ => nextButton.OnClickAsObservable().Subscribe(_ =>
{ {
LocalCacheManager.Save(PopcornGameManager.PanDataTag, panSelector.SelectedPanData.Value);
// 消費
var gameData = GameDataManager.GameData; var gameData = GameDataManager.GameData;
gameData.cornSeed -= data.CornAmount; gameData.cornSeed -= data.MaterialList[0].amount;
var flavorIndex1 = gameData.Material.FindIndex(x => x.Id == data.Flavors[0].id); var flavorIndex1 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[1].id);
var stockMaterial1 = gameData.Material[flavorIndex1]; gameData.Material[flavorIndex1].Amount -= data.MaterialList[1].amount;
stockMaterial1.Amount -= data.Flavors[0].amount; if (data.GetMaterialCount() == 3)
gameData.Material[flavorIndex1] = stockMaterial1;
if (data.Flavors.Count == 2)
{ {
var flavorIndex2 = gameData.Material.FindIndex(x => x.Id == data.Flavors[1].id); var flavorIndex2 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[2].id);
var stockMaterial2 = gameData.Material[flavorIndex2]; gameData.Material[flavorIndex2].Amount -= data.MaterialList[2].amount;
stockMaterial2.Amount -= data.Flavors[1].amount;
gameData.Material[flavorIndex2] = stockMaterial2;
} }
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
TransitionManager.Instance.LoadScene(GameScenes.Cooking); TransitionManager.Instance.LoadScene(GameScenes.Cooking);
}).AddTo(this); }).AddTo(this);
@ -69,37 +66,36 @@ public class RecipeDetailView : MonoBehaviour
tankCaution.SetActive(!isPassedTank); tankCaution.SetActive(!isPassedTank);
} }
public void SetRecipe(RecipeData data) public void SetRecipe(ProductData data)
{ {
var gameData = GameDataManager.GameData; var gameData = GameDataManager.GameData;
// 在庫 // 在庫
// 店頭の空きがない var shopStock = gameData.ShopStock.FindAll(x => x == data.id).Count;
var shopStock = gameData.ShopStock.FindAll(x => x == data.RecipeId).Count; var tankStock = gameData.StorageTanks.FindAll(x => x.FlavorId == data.id).Sum(x => x.Stock);
var tankStock = gameData.StorageTanks.FindAll(x => x.FlavorId == data.RecipeId).Sum(x => x.Stock);
flavorStock.text = string.Format(flavorStockFormat, shopStock + tankStock); flavorStock.text = string.Format(flavorStockFormat, shopStock + tankStock);
flavorName.text = data.Name; flavorName.text = data.name;
flavorPrice.text = data.Price.ToString(); flavorPrice.text = data.price.ToString();
cornAmountText.text = string.Format(cornAmountFormat, gameData.cornSeed, data.CornAmount); cornAmountText.text = string.Format(cornAmountFormat, gameData.cornSeed, data.MaterialList[0].amount);
var flavor1Amount = 0; var flavor1Amount = 0;
var flavorIndex1 = gameData.Material.FindIndex(x => x.Id == data.Flavors[0].id); var flavorIndex1 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[1].id);
if (flavorIndex1 != -1) if (flavorIndex1 != -1)
{ {
flavor1Amount = gameData.Material[flavorIndex1].Amount; flavor1Amount = gameData.Material[flavorIndex1].Amount;
} }
flavor1AmountText.text = string.Format(flavorAmountFormat, flavor1Amount, data.Flavors[0].amount); flavor1AmountText.text = string.Format(flavorAmountFormat, flavor1Amount, data.MaterialList[1].amount);
var flavor2Amount = 0; var flavor2Amount = 0;
if (data.Flavors.Count == 2) if (data.GetMaterialCount() == 3)
{ {
var flavorIndex2 = gameData.Material.FindIndex(x => x.Id == data.Flavors[1].id); var flavorIndex2 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[2].id);
if (flavorIndex2 != -1) if (flavorIndex2 != -1)
{ {
flavor2Amount = gameData.Material[flavorIndex2].Amount; flavor2Amount = gameData.Material[flavorIndex2].Amount;
} }
flavor2View.SetActive(true); flavor2View.SetActive(true);
flavor2AmountText.text = string.Format(flavorAmountFormat, flavor2Amount, data.Flavors[1].amount); flavor2AmountText.text = string.Format(flavorAmountFormat, flavor2Amount, data.MaterialList[2].amount);
} }
else else
{ {
@ -107,25 +103,25 @@ public class RecipeDetailView : MonoBehaviour
} }
} }
private bool CheckAmount(RecipeData data) private bool CheckAmount(ProductData data)
{ {
var flag = true; var flag = true;
var gameData = GameDataManager.GameData; var gameData = GameDataManager.GameData;
if (gameData.cornSeed < data.CornAmount) if (gameData.cornSeed < data.MaterialList[0].amount)
{ {
flag = false; flag = false;
cornAmountText.color = Color.red; cornAmountText.color = Color.red;
} }
var flavorIndex1 = gameData.Material.FindIndex(x => x.Id == data.Flavors[0].id); var flavorIndex1 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[1].id);
if (flavorIndex1 == -1 || gameData.Material[flavorIndex1].Amount < data.Flavors[0].amount) if (flavorIndex1 == -1 || gameData.Material[flavorIndex1].Amount < data.MaterialList[1].amount)
{ {
flag = false; flag = false;
flavor1AmountText.color = Color.red; flavor1AmountText.color = Color.red;
} }
if (data.Flavors.Count == 2) if (data.GetMaterialCount() == 3)
{ {
var flavorIndex2 = gameData.Material.FindIndex(x => x.Id == data.Flavors[1].id); var flavorIndex2 = gameData.Material.FindIndex(x => x.Id == data.MaterialList[2].id);
if (flavorIndex2 == -1 || gameData.Material[flavorIndex2].Amount < data.Flavors[1].amount) if (flavorIndex2 == -1 || gameData.Material[flavorIndex2].Amount < data.MaterialList[2].amount)
{ {
flag = false; flag = false;
flavor2AmountText.color = Color.red; flavor2AmountText.color = Color.red;
@ -134,18 +130,18 @@ public class RecipeDetailView : MonoBehaviour
return flag; return flag;
} }
private bool CheckTank(RecipeData data) private bool CheckTank(ProductData data)
{ {
var gameData = GameDataManager.GameData; var gameData = GameDataManager.GameData;
// 店頭の空き確認 // 店頭の空き確認
if (data.Volume <= Market.ShopStockCount - gameData.ShopStock.Count) if (data.volume <= Market.ShopStockCount - gameData.ShopStock.Count)
{ {
return true; return true;
} }
// 空のタンク、同じフレーバーのタンク空き確認 // 空のタンク、同じフレーバーのタンク空き確認
return gameData.StorageTanks return gameData.StorageTanks
.Where(tank => tank.IsEmpty || tank.FlavorId == data.RecipeId && !tank.IsFull) .Where(tank => tank.IsEmpty || tank.FlavorId == data.id && !tank.IsFull)
.Any(tank => data.Volume <= tank.Capacity - tank.Stock); .Any(tank => data.volume <= tank.Capacity - tank.Stock);
} }
} }

View File

@ -21,17 +21,18 @@ public class RecipeSelectDialog : MonoBehaviour
// レシピ一覧生成 // レシピ一覧生成
var content = scrollRect.content; var content = scrollRect.content;
content.transform.DestroyAllChildrens(); content.transform.DestroyAllChildrens();
foreach (var recipeData in RecipeData.GetAllRecipe()) var data = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet);
foreach (var productData in data)
{ {
var view = Instantiate(recipePrefab, content.transform); var view = Instantiate(recipePrefab, content.transform);
view.SetRecipe(recipeData); view.SetRecipe(productData);
// 所持レシピ確認 // 所持レシピ確認
if (GameDataManager.GameData.MyRecipes.Contains(recipeData.RecipeId)) if (GameDataManager.GameData.MyRecipes.Contains(productData.id))
{ {
view.SetLockPanel(false); view.SetLockPanel(false);
view.RecipeClickObservable.Subscribe(_ => view.RecipeClickObservable.Subscribe(_ =>
{ {
LocalCacheManager.Save(PopcornGameManager.CookingDataTag, recipeData); LocalCacheManager.Save(PopcornGameManager.CookingDataTag, productData);
TransitionManager.Instance.LoadSceneAdditive(GameScenes.RecipeChoice); TransitionManager.Instance.LoadSceneAdditive(GameScenes.RecipeChoice);
}).AddTo(this); }).AddTo(this);
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Linq;
using UniRx; using UniRx;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
@ -6,6 +7,7 @@ using UnityEngine.UI;
public class RecipeView : MonoBehaviour public class RecipeView : MonoBehaviour
{ {
[SerializeField] private GameObject lockPanel; [SerializeField] private GameObject lockPanel;
[SerializeField] private Text lockPanelText;
[SerializeField] private Button detailButton; [SerializeField] private Button detailButton;
[SerializeField] private Text flavorName; [SerializeField] private Text flavorName;
[SerializeField] private Text flavorPrice; [SerializeField] private Text flavorPrice;
@ -14,27 +16,38 @@ public class RecipeView : MonoBehaviour
[SerializeField] private Text flavor2AmountText; [SerializeField] private Text flavor2AmountText;
[SerializeField] private GameObject flavor2View; [SerializeField] private GameObject flavor2View;
private static readonly string amountFormat = "x{0}"; private static readonly string amountFormat = "x{0}";
private static readonly string lockPanelTextFormat = "店舗レベル{0}で開放";
private static readonly string lockPanelTextShopFormat = "仕入れから購入可能";
public IObservable<Unit> RecipeClickObservable => detailButton.OnClickAsObservable().TakeUntilDestroy(this); public IObservable<Unit> RecipeClickObservable => detailButton.OnClickAsObservable().TakeUntilDestroy(this);
private void Start() private void Start()
{ {
} }
public void SetRecipe(RecipeData data) public void SetRecipe(ProductData data)
{ {
flavorName.text = data.Name; flavorName.text = data.name;
flavorPrice.text = data.Price.ToString(); flavorPrice.text = data.price.ToString();
cornAmountText.text = string.Format(amountFormat, data.CornAmount); cornAmountText.text = string.Format(amountFormat, data.MaterialList[0].amount);
flavor1AmountText.text = string.Format(amountFormat, data.Flavors[0].amount); flavor1AmountText.text = string.Format(amountFormat, data.MaterialList[1].amount);
if (data.Flavors.Count == 2) if (data.GetMaterialCount() == 3)
{ {
flavor2View.SetActive(true); flavor2View.SetActive(true);
flavor2AmountText.text = string.Format(amountFormat, data.Flavors[1].amount); flavor2AmountText.text = string.Format(amountFormat, data.MaterialList[2].amount);
} }
else else
{ {
flavor2View.SetActive(false); flavor2View.SetActive(false);
} }
if (data.shopLevel == Const.SpecialShopLevel)
{
lockPanelText.text = string.Format(lockPanelTextShopFormat, data.shopLevel);
}
else
{
lockPanelText.text = string.Format(lockPanelTextFormat, data.shopLevel);
}
} }
public void SetLockPanel(bool hasRecipe) public void SetLockPanel(bool hasRecipe)

View File

@ -8,6 +8,8 @@ public static class Const {
// parameter // parameter
public static readonly int DefaultPanId = 1; public static readonly int DefaultPanId = 1;
public static readonly int SpecialShopLevel = 9999;
public static readonly int NotSetMaterialId = 0;
// tag // tag
public static readonly string GameDataTag = "GameData"; public static readonly string GameDataTag = "GameData";