ResultにPrice表示追加/続けて調理機能を追加
This commit is contained in:
parent
c33f4bc4cd
commit
dfb907eea6
File diff suppressed because it is too large
Load Diff
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue