diff --git a/popcorn/Assets/MyGame/Scenes/Cooking/Cooking.unity b/popcorn/Assets/MyGame/Scenes/Cooking/Cooking.unity index 8890332b..84bd29fc 100644 --- a/popcorn/Assets/MyGame/Scenes/Cooking/Cooking.unity +++ b/popcorn/Assets/MyGame/Scenes/Cooking/Cooking.unity @@ -620,7 +620,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &460945447 RectTransform: m_ObjectHideFlags: 0 @@ -1028,7 +1028,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &642263094 RectTransform: m_ObjectHideFlags: 0 @@ -1513,7 +1513,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &832390347 RectTransform: m_ObjectHideFlags: 0 @@ -2612,7 +2612,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1370567322 RectTransform: m_ObjectHideFlags: 0 @@ -7923,7 +7923,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: startingGuide: {fileID: 8786490829224139677} - gameResultText: {fileID: 1003859323} + perfectResultObject: {fileID: 642263093} + goodResultObject: {fileID: 1370567321} + failureResultObject: {fileID: 460945446} characterSweat: {fileID: 580170368} characterFlower: {fileID: 785034261} thermalControl: {fileID: 1870432535} @@ -7986,7 +7988,7 @@ MonoBehaviour: baseGrowSpeed: 1 hotGrowSpeed: 1.5 baseCornPopTime: 10 - cornBurntDuration: 3 + cornBurntDuration: 1 --- !u!1 &1928679189 GameObject: m_ObjectHideFlags: 0 diff --git a/popcorn/Assets/PopcornGameManager.cs b/popcorn/Assets/PopcornGameManager.cs index b43d7fd8..70fe4ba3 100644 --- a/popcorn/Assets/PopcornGameManager.cs +++ b/popcorn/Assets/PopcornGameManager.cs @@ -17,8 +17,9 @@ public enum GameState public class PopcornGameManager : MonoBehaviour { [SerializeField] private GameObject startingGuide; - // [SerializeField] private Text powerResultText; - [SerializeField] private Text gameResultText; + [SerializeField] private GameObject perfectResultObject; + [SerializeField] private GameObject goodResultObject; + [SerializeField] private GameObject failureResultObject; [SerializeField] private GameObject characterSweat; [SerializeField] private GameObject characterFlower; @@ -28,6 +29,7 @@ public class PopcornGameManager : MonoBehaviour public IReadOnlyReactiveProperty State => state; private readonly ReactiveProperty state = new ReactiveProperty(GameState.Guide); + private readonly CompositeDisposable compositeDisposable = new CompositeDisposable(); // Start is called before the first frame update @@ -54,37 +56,73 @@ public class PopcornGameManager : MonoBehaviour throw new ArgumentOutOfRangeException(nameof(x), x, null); } }).AddTo(this); - - this.UpdateAsObservable().Where(_ => Input.GetMouseButton(0)).FirstOrDefault().Subscribe(_ => + + cornManager.Result.SkipLatestValueOnSubscribe().Subscribe(x => { - StartGame(); + state.Value = GameState.Result; + thermalControl.StopMeter(); + characterFlower.gameObject.SetActive(false); + characterSweat.gameObject.SetActive(false); + switch (x) + { + case CornResult.Perfect: + perfectResultObject.SetActive(true); + break; + case CornResult.Good: + + goodResultObject.SetActive(true); + break; + case CornResult.Failure: + failureResultObject.SetActive(true); + break; + default: + throw new ArgumentOutOfRangeException(nameof(x), x, null); + } + + // 再度画面タップでリセット + this.UpdateAsObservable() + .Select(_ => Input.GetMouseButton(0)) + .DistinctUntilChanged() + .Skip(1) + .FirstOrDefault(b => b) + .Subscribe(_ => + { + ResetGame(); + }).AddTo(this); }).AddTo(this); ResetGame(); - - // コーンマネージャからResultきたらStateもResult - - } - - private void Update() - { } private void ResetUI() { startingGuide.SetActive(true); - thermoMeter.gameObject.SetActive(false); - gameResultText.text = ""; + perfectResultObject.SetActive(false); + goodResultObject.SetActive(false); + failureResultObject.SetActive(false); + thermalControl.StopMeter(); + thermoMeter.gameObject.SetActive(false); characterFlower.gameObject.SetActive(false); characterSweat.gameObject.SetActive(false); } private void ResetGame() { + compositeDisposable.Clear(); + this.UpdateAsObservable() + .Select(_ => Input.GetMouseButton(0)) + .DistinctUntilChanged() + .Skip(1) + .FirstOrDefault(b => b) + .Subscribe(_ => + { + StartGame(); + }).AddTo(compositeDisposable); ResetUI(); thermalControl.ResetMeter(); cornManager.RespawnCorn(); + state.Value = GameState.Guide; } private void StartGame()