view整理

This commit is contained in:
kimura 2021-09-21 12:24:43 +09:00
parent 07af2b779e
commit 72cacb3abd
3 changed files with 62 additions and 80 deletions

View File

@ -17,9 +17,6 @@ public class PopcornGameManager : MonoBehaviour
{ {
// View // View
[SerializeField] private PopcornGameView gameView; [SerializeField] private PopcornGameView gameView;
[SerializeField] private GameObject perfectResultObject;
[SerializeField] private GameObject goodResultObject;
[SerializeField] private GameObject failureResultObject;
[SerializeField] private ThermalControl thermalControl; [SerializeField] private ThermalControl thermalControl;
[SerializeField] private ThermoMeter thermoMeter; [SerializeField] private ThermoMeter thermoMeter;
@ -29,7 +26,6 @@ public class PopcornGameManager : MonoBehaviour
[SerializeField] private Button resetButton; [SerializeField] private Button resetButton;
#endif #endif
public IReadOnlyReactiveProperty<GameState> State => state;
private readonly ReactiveProperty<GameState> state = new ReactiveProperty<GameState>(GameState.Guide); private readonly ReactiveProperty<GameState> state = new ReactiveProperty<GameState>(GameState.Guide);
private readonly CompositeDisposable compositeDisposable = new CompositeDisposable(); private readonly CompositeDisposable compositeDisposable = new CompositeDisposable();
@ -37,14 +33,36 @@ public class PopcornGameManager : MonoBehaviour
void Start() void Start()
{ {
compositeDisposable.AddTo(this); compositeDisposable.AddTo(this);
state.AddTo(this);
thermalControl.Condition.Subscribe(x => thermalControl.Condition.Subscribe(x =>
{ {
cornManager.ChangeGrowSpeed(x); cornManager.ChangeGrowSpeed(x);
gameView.ChangeCharactorState(x); gameView.ChangeCharacterState(x);
}).AddTo(this); }).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(); ResetGame();
@ -87,33 +105,22 @@ public class PopcornGameManager : MonoBehaviour
.Subscribe(x => .Subscribe(x =>
{ {
state.Value = GameState.Result; state.Value = GameState.Result;
thermalControl.StopMeter();
gameView.ChangeCharactorState(ThermalCondition.Cold);
gameView.ChangeFireState(false);
gameView.ChangeStreamState(true);
// リザルト表示遅延 // リザルト表示遅延
this.CallWaitForSeconds(1.2f, () => this.CallWaitForSeconds(1.2f, () =>
{ {
SetResult(x); // popup
// CornResult
// 動画を見たあと、大成功にするための処理・・・?
// というか1つのシーンにしてしまうか
if (x != CornResult.Failure) if (x != CornResult.Failure)
{ {
AddStock(); var recipe = LocalCacheManager.Load<RecipeData>(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); }).AddTo(compositeDisposable);
// 画面タップでスタート
this.UpdateAsObservable() this.UpdateAsObservable()
.Select(_ => Input.GetMouseButton(0)) .Select(_ => Input.GetMouseButton(0))
.DistinctUntilChanged() .DistinctUntilChanged()
@ -121,56 +128,14 @@ public class PopcornGameManager : MonoBehaviour
.FirstOrDefault(b => b) .FirstOrDefault(b => b)
.Subscribe(_ => .Subscribe(_ =>
{ {
StartGame(); state.Value = GameState.Playing;
}).AddTo(compositeDisposable); }).AddTo(compositeDisposable);
ResetUI();
thermalControl.ResetMeter();
cornManager.RespawnCorn();
state.Value = GameState.Guide; state.Value = GameState.Guide;
} }
private void ResetUI() private void AddStock(RecipeData recipe)
{ {
gameView.ResetUI();
perfectResultObject.SetActive(false);
goodResultObject.SetActive(false);
failureResultObject.SetActive(false);
thermalControl.StopMeter();
thermoMeter.gameObject.SetActive(false);
}
private void StartGame()
{
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<RecipeData>(RecipeDetailView.DetailRecipeTag);
var gameData = GameDataManager.GameData; var gameData = GameDataManager.GameData;
// 店頭の空きに追加 // 店頭の空きに追加
var remain = recipe.Volume; var remain = recipe.Volume;

View File

@ -10,31 +10,47 @@ public class PopcornGameView : MonoBehaviour
[SerializeField] private GameObject characterSweat; [SerializeField] private GameObject characterSweat;
[SerializeField] private GameObject characterFlower; [SerializeField] private GameObject characterFlower;
public void ResetUI() public void ChangeUI(GameState state)
{ {
ChangeGuideState(true); switch (state)
ChangeFireState(false); {
ChangeCharactorState(ThermalCondition.Cold); case GameState.Guide:
ChangeStreamState(false); 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); startingGuide.SetActive(isActive);
} }
public void ChangeFireState(bool isActive) private void ChangeFireState(bool isActive)
{ {
fire.SetActive(isActive); fire.SetActive(isActive);
oilEffect.SetActive(isActive); oilEffect.SetActive(isActive);
} }
public void ChangeStreamState(bool isActive) private void ChangeStreamState(bool isActive)
{ {
streamEffect.SetActive(isActive); streamEffect.SetActive(isActive);
} }
public void ChangeCharactorState(ThermalCondition condition) public void ChangeCharacterState(ThermalCondition condition)
{ {
switch (condition) switch (condition)
{ {

View File

@ -156,9 +156,10 @@ public class ThermalControl : MonoBehaviour
public void ResetMeter() public void ResetMeter()
{ {
isMove = false;
temperatureSpeed = 0f;
temperature = 0f; temperature = 0f;
thermoMeter.SetValue(temperature); thermoMeter.SetValue(temperature);
temperatureSpeed = 0f;
SetMeterValue(); SetMeterValue();
thermoMeter.SetScale(coldValue, hotValue); thermoMeter.SetScale(coldValue, hotValue);
panController.ResetTargetPosition(); panController.ResetTargetPosition();