view整理
This commit is contained in:
parent
07af2b779e
commit
72cacb3abd
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue