diff --git a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/PopcornGameManager.cs b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/PopcornGameManager.cs index eccfb93e..c50f78ba 100644 --- a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/PopcornGameManager.cs +++ b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/PopcornGameManager.cs @@ -17,10 +17,7 @@ public class PopcornGameManager : MonoBehaviour { // View [SerializeField] private PopcornGameView gameView; - [SerializeField] private GameObject perfectResultObject; - [SerializeField] private GameObject goodResultObject; - [SerializeField] private GameObject failureResultObject; - + [SerializeField] private ThermalControl thermalControl; [SerializeField] private ThermoMeter thermoMeter; [SerializeField] private CornManager cornManager; @@ -29,7 +26,6 @@ public class PopcornGameManager : MonoBehaviour [SerializeField] private Button resetButton; #endif - public IReadOnlyReactiveProperty State => state; private readonly ReactiveProperty state = new ReactiveProperty(GameState.Guide); private readonly CompositeDisposable compositeDisposable = new CompositeDisposable(); @@ -37,14 +33,36 @@ public class PopcornGameManager : MonoBehaviour void Start() { compositeDisposable.AddTo(this); + state.AddTo(this); thermalControl.Condition.Subscribe(x => { cornManager.ChangeGrowSpeed(x); - gameView.ChangeCharactorState(x); + gameView.ChangeCharacterState(x); }).AddTo(this); - state.Subscribe(x => cornManager.GameState.Value = x); + state.Subscribe(x => + { + cornManager.GameState.Value = x; + gameView.ChangeUI(x); + switch (x) + { + case GameState.Guide: + thermalControl.ResetMeter(); + cornManager.RespawnCorn(); + thermoMeter.gameObject.SetActive(false); + break; + case GameState.Playing: + thermoMeter.gameObject.SetActive(true); + thermalControl.StartMeter(); + break; + case GameState.Result: + thermalControl.StopMeter(); + break; + default: + throw new ArgumentOutOfRangeException(nameof(x), x, null); + } + }); ResetGame(); @@ -87,33 +105,22 @@ public class PopcornGameManager : MonoBehaviour .Subscribe(x => { state.Value = GameState.Result; - thermalControl.StopMeter(); - gameView.ChangeCharactorState(ThermalCondition.Cold); - gameView.ChangeFireState(false); - gameView.ChangeStreamState(true); // リザルト表示遅延 this.CallWaitForSeconds(1.2f, () => { - SetResult(x); + // popup + // CornResult + // 動画を見たあと、大成功にするための処理・・・? + // というか1つのシーンにしてしまうか if (x != CornResult.Failure) { - AddStock(); + var recipe = LocalCacheManager.Load(RecipeDetailView.DetailRecipeTag); + AddStock(recipe); } - // 画面タップで次へ - this.UpdateAsObservable() - .Select(_ => Input.GetMouseButton(0)) - .DistinctUntilChanged() - .Skip(1) - .FirstOrDefault(b => b) - .DelaySubscription(TimeSpan.FromSeconds(1f)) - .Subscribe(_ => - { - // ResetGame(); - TransitionManager.Instance.LoadScene(GameScenes.Main); - }).AddTo(compositeDisposable); }); }).AddTo(compositeDisposable); + // 画面タップでスタート this.UpdateAsObservable() .Select(_ => Input.GetMouseButton(0)) .DistinctUntilChanged() @@ -121,56 +128,14 @@ public class PopcornGameManager : MonoBehaviour .FirstOrDefault(b => b) .Subscribe(_ => { - StartGame(); + state.Value = GameState.Playing; }).AddTo(compositeDisposable); - ResetUI(); - thermalControl.ResetMeter(); - cornManager.RespawnCorn(); state.Value = GameState.Guide; } - - private void ResetUI() - { - gameView.ResetUI(); - perfectResultObject.SetActive(false); - goodResultObject.SetActive(false); - failureResultObject.SetActive(false); - - thermalControl.StopMeter(); - thermoMeter.gameObject.SetActive(false); - } - private void StartGame() + private void AddStock(RecipeData recipe) { - gameView.ChangeGuideState(false); - gameView.ChangeFireState(true); - thermoMeter.gameObject.SetActive(true); - thermalControl.StartMeter(); - state.Value = GameState.Playing; - } - - private void SetResult(CornResult result) - { - switch (result) - { - 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(result), result, null); - } - } - - private void AddStock() - { - var recipe = LocalCacheManager.Load(RecipeDetailView.DetailRecipeTag); var gameData = GameDataManager.GameData; // 店頭の空きに追加 var remain = recipe.Volume; diff --git a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/PopcornGameView.cs b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/PopcornGameView.cs index a266e19c..fa4b4be8 100644 --- a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/PopcornGameView.cs +++ b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/PopcornGameView.cs @@ -10,31 +10,47 @@ public class PopcornGameView : MonoBehaviour [SerializeField] private GameObject characterSweat; [SerializeField] private GameObject characterFlower; - public void ResetUI() + public void ChangeUI(GameState state) { - ChangeGuideState(true); - ChangeFireState(false); - ChangeCharactorState(ThermalCondition.Cold); - ChangeStreamState(false); + switch (state) + { + case GameState.Guide: + ChangeGuideState(true); + ChangeFireState(false); + ChangeStreamState(false); + ChangeCharacterState(ThermalCondition.Cold); + break; + case GameState.Playing: + ChangeGuideState(false); + ChangeFireState(true); + break; + case GameState.Result: + ChangeFireState(false); + ChangeStreamState(true); + ChangeCharacterState(ThermalCondition.Cold); + break; + default: + throw new ArgumentOutOfRangeException(nameof(state), state, null); + } } - - public void ChangeGuideState(bool isActive) + + private void ChangeGuideState(bool isActive) { startingGuide.SetActive(isActive); } - public void ChangeFireState(bool isActive) + private void ChangeFireState(bool isActive) { fire.SetActive(isActive); oilEffect.SetActive(isActive); } - public void ChangeStreamState(bool isActive) + private void ChangeStreamState(bool isActive) { streamEffect.SetActive(isActive); } - public void ChangeCharactorState(ThermalCondition condition) + public void ChangeCharacterState(ThermalCondition condition) { switch (condition) { diff --git a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/ThermalControl.cs b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/ThermalControl.cs index de58c728..d713df38 100644 --- a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/ThermalControl.cs +++ b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/ThermalControl.cs @@ -156,9 +156,10 @@ public class ThermalControl : MonoBehaviour public void ResetMeter() { + isMove = false; + temperatureSpeed = 0f; temperature = 0f; thermoMeter.SetValue(temperature); - temperatureSpeed = 0f; SetMeterValue(); thermoMeter.SetScale(coldValue, hotValue); panController.ResetTargetPosition();