switch to next state
This commit is contained in:
parent
6e16868f5b
commit
3a632de874
|
|
@ -22,6 +22,8 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
|
||||||
private double _startBeat;
|
private double _startBeat;
|
||||||
private double _onPlayBeat;
|
private double _onPlayBeat;
|
||||||
|
|
||||||
|
private IEnumerator _currentStateCo;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
_anim = GetComponent<Animator>();
|
_anim = GetComponent<Animator>();
|
||||||
|
|
@ -60,7 +62,7 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
|
||||||
{
|
{
|
||||||
bool nextIsTriple = _game.IsTripleBeat(beat + 1);
|
bool nextIsTriple = _game.IsTripleBeat(beat + 1);
|
||||||
bool nextIsHigh = _game.IsHighBeat(beat + 1);
|
bool nextIsHigh = _game.IsHighBeat(beat + 1);
|
||||||
StartCoroutine(JumpCo(beat, miss, nearMiss));
|
SwitchToNextState(JumpCo(beat, miss, nearMiss));
|
||||||
if (beat + 1 >= _game.EndBeat) return;
|
if (beat + 1 >= _game.EndBeat) return;
|
||||||
if (nextIsHigh)
|
if (nextIsHigh)
|
||||||
{
|
{
|
||||||
|
|
@ -74,7 +76,7 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
|
||||||
{
|
{
|
||||||
bool nextIsTriple = _game.IsTripleBeat(beat + 2);
|
bool nextIsTriple = _game.IsTripleBeat(beat + 2);
|
||||||
bool nextIsHigh = _game.IsHighBeat(beat + 2);
|
bool nextIsHigh = _game.IsHighBeat(beat + 2);
|
||||||
StartCoroutine(JumpHighCo(beat, miss));
|
SwitchToNextState(JumpHighCo(beat, miss));
|
||||||
if (beat + 2 >= _game.EndBeat) return;
|
if (beat + 2 >= _game.EndBeat) return;
|
||||||
if (nextIsHigh)
|
if (nextIsHigh)
|
||||||
{
|
{
|
||||||
|
|
@ -86,7 +88,7 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
|
||||||
|
|
||||||
public void TripleJumping(double beat, bool enter, bool miss = false, bool nearMiss = false)
|
public void TripleJumping(double beat, bool enter, bool miss = false, bool nearMiss = false)
|
||||||
{
|
{
|
||||||
StartCoroutine(JumpTripleCo(beat, enter, miss, nearMiss));
|
SwitchToNextState(JumpTripleCo(beat, enter, miss, nearMiss));
|
||||||
if (beat + 0.5 >= _game.EndBeat) return;
|
if (beat + 0.5 >= _game.EndBeat) return;
|
||||||
_game.ScheduleInput(beat, 0.5, Minigame.InputAction_BasicPress, enter ? JustTripleExit : Just, enter ? MissTripleExit : Miss, Empty);
|
_game.ScheduleInput(beat, 0.5, Minigame.InputAction_BasicPress, enter ? JustTripleExit : Just, enter ? MissTripleExit : Miss, Empty);
|
||||||
}
|
}
|
||||||
|
|
@ -296,6 +298,13 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SwitchToNextState(IEnumerator coroutine)
|
||||||
|
{
|
||||||
|
if (_currentStateCo != null) StopCoroutine(_currentStateCo);
|
||||||
|
_currentStateCo = coroutine;
|
||||||
|
StartCoroutine(_currentStateCo);
|
||||||
|
}
|
||||||
|
|
||||||
private void Just(PlayerActionEvent caller, float state)
|
private void Just(PlayerActionEvent caller, float state)
|
||||||
{
|
{
|
||||||
bool isTriple = _game.IsTripleBeat(caller.startBeat + caller.timer);
|
bool isTriple = _game.IsTripleBeat(caller.startBeat + caller.timer);
|
||||||
|
|
@ -341,7 +350,7 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
|
||||||
{
|
{
|
||||||
if (caller.startBeat + caller.timer >= _onPlayBeat) SoundByte.PlayOneShotGame("totemClimb/chargejump");
|
if (caller.startBeat + caller.timer >= _onPlayBeat) SoundByte.PlayOneShotGame("totemClimb/chargejump");
|
||||||
_game.HoldDragonAtBeat(caller.startBeat + caller.timer);
|
_game.HoldDragonAtBeat(caller.startBeat + caller.timer);
|
||||||
StartCoroutine(HoldCo(caller.startBeat + caller.timer));
|
SwitchToNextState(HoldCo(caller.startBeat + caller.timer));
|
||||||
_anim.DoScaledAnimationAsync("Hold", 0.5f);
|
_anim.DoScaledAnimationAsync("Hold", 0.5f);
|
||||||
if (state >= 1f || state <= -1f)
|
if (state >= 1f || state <= -1f)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue