view整理
This commit is contained in:
parent
07af2b779e
commit
72cacb3abd
|
|
@ -17,9 +17,6 @@ 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;
|
||||
|
|
@ -29,7 +26,6 @@ public class PopcornGameManager : MonoBehaviour
|
|||
[SerializeField] private Button resetButton;
|
||||
#endif
|
||||
|
||||
public IReadOnlyReactiveProperty<GameState> State => state;
|
||||
private readonly ReactiveProperty<GameState> state = new ReactiveProperty<GameState>(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<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);
|
||||
|
||||
// 画面タップでスタート
|
||||
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()
|
||||
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 remain = recipe.Volume;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in New Issue