ResultにPrice表示追加/続けて調理機能を追加

This commit is contained in:
kimura 2021-11-22 18:02:15 +09:00
parent c33f4bc4cd
commit dfb907eea6
2 changed files with 68 additions and 984 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Linq; using System.Linq;
using MyGame.Scenes.Cooking.Scripts;
using MyGame.Scripts; using MyGame.Scripts;
using TMPro; using TMPro;
using UniRx; using UniRx;
@ -10,12 +11,13 @@ public class CookingResult : MonoBehaviour
{ {
private static readonly string BulkOrderRarityTextFormat = "大成功ボーナス獲得"; private static readonly string BulkOrderRarityTextFormat = "大成功ボーナス獲得";
private static readonly string QuantityTextFormat = "x{0}"; private static readonly string QuantityTextFormat = "x{0}";
private static readonly float BulkOrderExplainHeight = 200f;
[SerializeField] private GameObject smokeEffect; [SerializeField] private GameObject smokeEffect;
[SerializeField] private GameObject glitterEffect; [SerializeField] private GameObject glitterEffect;
[SerializeField] private Button centerOkButton;
[SerializeField] private Button perfectButton; [SerializeField] private Button perfectButton;
[SerializeField] private Button leftOkButton; [SerializeField] private Button okButton;
[SerializeField] private Button destructionButton; [SerializeField] private Button destructionButton;
[SerializeField] private Button makeOneButton;
[SerializeField] private Transform popcornTarget; [SerializeField] private Transform popcornTarget;
[SerializeField] private Text popcornText; [SerializeField] private Text popcornText;
[SerializeField] private Text popcornTextPerfect; [SerializeField] private Text popcornTextPerfect;
@ -28,6 +30,7 @@ public class CookingResult : MonoBehaviour
[SerializeField] private GameObject perfectResultObject; [SerializeField] private GameObject perfectResultObject;
[SerializeField] private GameObject goodResultObject; [SerializeField] private GameObject goodResultObject;
[SerializeField] private GameObject failureResultObject; [SerializeField] private GameObject failureResultObject;
[SerializeField] private ResultCoinView coinView;
ReactiveProperty<CornResult> result = new ReactiveProperty<CornResult>(); ReactiveProperty<CornResult> result = new ReactiveProperty<CornResult>();
@ -42,10 +45,18 @@ public class CookingResult : MonoBehaviour
result.Value = resultData; result.Value = resultData;
SetData(productData, rarityData, viewType); SetData(productData, rarityData, viewType);
// 続けて料理を作ることができるかどうか判定
var hasSpace = RecipeDetailView.CheckTank(productData);
var checkResult = RecipeDetailView.CheckAmount(productData);
var hasMaterials = checkResult.material1 && checkResult.material2 && checkResult.material3;
var isMakeOne = hasSpace && hasMaterials;
if (GameDataManager.GameData.isFirstPlay) if (GameDataManager.GameData.isFirstPlay)
{ {
SetUI(resultData, rarityData.Rarity != ProductRarity.Normal, true);
// ボタン非表示 // ボタン非表示
SetUI(resultData, viewType, isMakeOne, true);
// 失敗したら再チャレンジ
if (resultData == CornResult.Failure) if (resultData == CornResult.Failure)
{ {
TutorialManager.Instance.ShowTutorialConversation(9, () => TutorialManager.Instance.ShowTutorialConversation(9, () =>
@ -54,31 +65,22 @@ public class CookingResult : MonoBehaviour
TransitionManager.Instance.UnloadScene(GameScenes.CookingResults); TransitionManager.Instance.UnloadScene(GameScenes.CookingResults);
LocalCacheManager.Load<Action>(PopcornGameManager.RestartCallbackTag, null)?.Invoke(); LocalCacheManager.Load<Action>(PopcornGameManager.RestartCallbackTag, null)?.Invoke();
}); });
return;
} }
else
{
successAction?.Invoke(); successAction?.Invoke();
centerOkButton.gameObject.SetActive(true); okButton.gameObject.SetActive(true);
centerOkButton.OnClickAsObservable().Subscribe(_ => okButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{ {
// 獲得、遷移 // 獲得、遷移
if (resultData == CornResult.Perfect) AddStock(productData, resultData == CornResult.Perfect ? rarityData.Rarity : ProductRarity.Normal);
{
AddStock(productData, rarityData.Rarity);
}
else
{
AddStock(productData);
}
TransitionManager.Instance.LoadScene(GameScenes.Main); TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this); }).AddTo(this);
}
return; return;
} }
result.Subscribe(r => result.Subscribe(r =>
{ {
SetUI(r, rarityData.Rarity != ProductRarity.Normal); SetUI(r, viewType, isMakeOne);
if (r != CornResult.Failure) if (r != CornResult.Failure)
{ {
successAction?.Invoke(); successAction?.Invoke();
@ -89,17 +91,10 @@ public class CookingResult : MonoBehaviour
if (viewType == ProductViewType.Default) if (viewType == ProductViewType.Default)
{ {
Market.Instance.IsPause.Value = true; Market.Instance.IsPause.Value = true;
centerOkButton.OnClickAsObservable().Subscribe(_ => okButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{ {
// 獲得、遷移 // 獲得、遷移
AddStock(productData, rarityData.Rarity); AddStock(productData, result.Value == CornResult.Perfect ? rarityData.Rarity : ProductRarity.Normal);
Market.Instance.IsPause.Value = false;
TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this);
leftOkButton.OnClickAsObservable().Subscribe(_ =>
{
// 獲得、遷移
AddStock(productData);
Market.Instance.IsPause.Value = false; Market.Instance.IsPause.Value = false;
TransitionManager.Instance.LoadScene(GameScenes.Main); TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this); }).AddTo(this);
@ -108,22 +103,13 @@ public class CookingResult : MonoBehaviour
{ {
// 大量注文時処理 // 大量注文時処理
var materialNumber = LocalCacheManager.Load<int>(BulkOrder.MaterialNumberTag); var materialNumber = LocalCacheManager.Load<int>(BulkOrder.MaterialNumberTag);
centerOkButton.OnClickAsObservable().Take(1).Subscribe(_ => okButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{ {
// 獲得、遷移 // 獲得、遷移
if (!GameDataManager.GameData.CompletedProductList.Exists(data => data.Number == materialNumber)) if (!GameDataManager.GameData.CompletedProductList.Exists(data => data.Number == materialNumber))
{ {
GameDataManager.GameData.CompletedProductList.Add(new BulkOrderResultData(){Number = materialNumber, Rarity = rarityData.Rarity}); var rarity = result.Value == CornResult.Perfect ? rarityData.Rarity : ProductRarity.Normal;
GameDataManager.SaveGameData(); GameDataManager.GameData.CompletedProductList.Add(new BulkOrderResultData(){Number = materialNumber, Rarity = rarity});
}
TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this);
leftOkButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
// 獲得、遷移
if (!GameDataManager.GameData.CompletedProductList.Exists(data => data.Number == materialNumber))
{
GameDataManager.GameData.CompletedProductList.Add(new BulkOrderResultData(){Number = materialNumber, Rarity = ProductRarity.Normal});
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
} }
TransitionManager.Instance.LoadScene(GameScenes.Main); TransitionManager.Instance.LoadScene(GameScenes.Main);
@ -143,6 +129,15 @@ public class CookingResult : MonoBehaviour
// 遷移 // 遷移
TransitionManager.Instance.LoadScene(GameScenes.Main); TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this); }).AddTo(this);
makeOneButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
// 獲得、遷移
AddStock(productData, result.Value == CornResult.Perfect ? rarityData.Rarity : ProductRarity.Normal);
Market.Instance.IsPause.Value = false;
SoundManager.Instance.ChangeVolumeUniqueBGM(1f);
TransitionManager.Instance.UnloadScene(GameScenes.CookingResults);
LocalCacheManager.Load<Action>(PopcornGameManager.RestartCallbackTag, null)?.Invoke();
}).AddTo(this);
} }
private void SetData(ProductData recipe, RarityData rarity, ProductViewType viewType) private void SetData(ProductData recipe, RarityData rarity, ProductViewType viewType)
@ -151,6 +146,7 @@ public class CookingResult : MonoBehaviour
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);
coinView.SetPrice(recipe.GetRarityPrice(ProductRarity.Normal), recipe.GetRarityPrice(rarity.Rarity));
var rarityFormat = viewType == ProductViewType.Default ? rarity.text : BulkOrderRarityTextFormat; var rarityFormat = viewType == ProductViewType.Default ? rarity.text : BulkOrderRarityTextFormat;
rarityText.text = rarityFormat; rarityText.text = rarityFormat;
rarityView.SetRarity(rarity.Rarity); rarityView.SetRarity(rarity.Rarity);
@ -158,42 +154,45 @@ public class CookingResult : MonoBehaviour
Instantiate(recipe.GetLargePrefab(), popcornTarget); Instantiate(recipe.GetLargePrefab(), popcornTarget);
} }
private void SetUI(CornResult result, bool hasRarity, bool isTutorial = false) private void SetUI(CornResult cornResult, ProductViewType viewType, bool isMakeOne, bool isTutorial = false)
{ {
centerOkButton.gameObject.SetActive(false);
perfectButton.gameObject.SetActive(false); perfectButton.gameObject.SetActive(false);
leftOkButton.gameObject.SetActive(false); okButton.gameObject.SetActive(false);
destructionButton.gameObject.SetActive(false); destructionButton.gameObject.SetActive(false);
makeOneButton.gameObject.SetActive(false);
if (!isTutorial) if (!isTutorial)
{ {
this.CallWaitForSeconds(1.25f, () => this.CallWaitForSeconds(1.25f, () =>
{ {
centerOkButton.gameObject.SetActive(result == CornResult.Perfect); makeOneButton.gameObject.SetActive(viewType == ProductViewType.Default && isMakeOne);
perfectButton.gameObject.SetActive(result != CornResult.Perfect); perfectButton.gameObject.SetActive(cornResult != CornResult.Perfect);
leftOkButton.gameObject.SetActive(result == CornResult.Good); destructionButton.gameObject.SetActive(cornResult == CornResult.Failure);
destructionButton.gameObject.SetActive(result == CornResult.Failure); okButton.gameObject.SetActive(cornResult != CornResult.Failure);
}); });
} }
perfectResultObject.SetActive(result == CornResult.Perfect); perfectResultObject.SetActive(cornResult == CornResult.Perfect);
goodResultObject.SetActive(result == CornResult.Good); goodResultObject.SetActive(cornResult == CornResult.Good);
failureResultObject.SetActive(result == CornResult.Failure); failureResultObject.SetActive(cornResult == CornResult.Failure);
if (result == CornResult.Failure) if (cornResult == CornResult.Failure)
{ {
VibrationManager.Instance.PlayVibrationDoubleStrong(); VibrationManager.Instance.PlayVibrationDoubleStrong();
} }
smokeEffect.SetActive(result == CornResult.Failure); smokeEffect.SetActive(cornResult == CornResult.Failure);
glitterEffect.SetActive(result == CornResult.Perfect); glitterEffect.SetActive(cornResult == CornResult.Perfect);
detailObject.SetActive(result != CornResult.Failure); detailObject.SetActive(cornResult != CornResult.Failure);
explainObject.SetActive(result == CornResult.Good); explainObject.SetActive(cornResult == CornResult.Good);
explainWithRarityObject.SetActive(false); explainWithRarityObject.SetActive(cornResult == CornResult.Perfect);
if (result == CornResult.Perfect)
if (viewType != ProductViewType.Default)
{ {
explainWithRarityObject.SetActive(hasRarity); coinView.gameObject.SetActive(false);
explainObject.SetActive(!hasRarity); // 高さ調整
var rect = explainWithRarityObject.transform as RectTransform;
rect.sizeDelta = new Vector2(rect.sizeDelta.x, BulkOrderExplainHeight);
} }
} }