リザルト処理修正

This commit is contained in:
kimura 2021-07-09 10:04:02 +09:00
parent a960f2170a
commit 86fd7c9b2c
1 changed files with 44 additions and 35 deletions

View File

@ -31,7 +31,6 @@ public class PopcornGameManager : MonoBehaviour
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();
// Start is called before the first frame update // Start is called before the first frame update
void Start() void Start()
{ {
@ -59,40 +58,6 @@ public class PopcornGameManager : MonoBehaviour
} }
}).AddTo(this); }).AddTo(this);
cornManager.Result.SkipLatestValueOnSubscribe().Subscribe(x =>
{
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(); ResetGame();
} }
@ -112,6 +77,49 @@ public class PopcornGameManager : MonoBehaviour
private void ResetGame() private void ResetGame()
{ {
compositeDisposable.Clear(); compositeDisposable.Clear();
cornManager.Result.SkipLatestValueOnSubscribe()
.FirstOrDefault()
.DelayFrame(1)
.Subscribe(x =>
{
state.Value = GameState.Result;
thermalControl.StopMeter();
characterFlower.gameObject.SetActive(false);
characterSweat.gameObject.SetActive(false);
this.CallWaitForSeconds(1f, () =>
{
});
// リザルト表示遅延
Observable.Timer(TimeSpan.FromMilliseconds(1000)).Subscribe(a =>
{
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(compositeDisposable);
}).AddTo(compositeDisposable);
}).AddTo(compositeDisposable);
this.UpdateAsObservable() this.UpdateAsObservable()
.Select(_ => Input.GetMouseButton(0)) .Select(_ => Input.GetMouseButton(0))
.DistinctUntilChanged() .DistinctUntilChanged()
@ -121,6 +129,7 @@ public class PopcornGameManager : MonoBehaviour
{ {
StartGame(); StartGame();
}).AddTo(compositeDisposable); }).AddTo(compositeDisposable);
ResetUI(); ResetUI();
thermalControl.ResetMeter(); thermalControl.ResetMeter();
cornManager.RespawnCorn(); cornManager.RespawnCorn();