mirror of
https://github.com/RHeavenStudio/HeavenStudio.git
synced 2025-06-13 11:37:40 +02:00
First PlayerActionEvent Pass (#202)
* update blue bear to use PlayerActionEvent * update built to scale DS to use PlayerActionEvent * update clappy trio to use PlayerActionEvent * update crop stomp to use PlayerActionEvent * update drumming practice to use PlayerActionEvent * update fork lifter to use PlayerActionEvent * update minigame icons * update wizard waltz' icon
This commit is contained in:
@ -14,60 +14,74 @@ namespace HeavenStudio.Games.Scripts_BuiltToScaleDS
|
||||
|
||||
private bool moving = true;
|
||||
private BuiltToScaleDS game;
|
||||
float windupBeat;
|
||||
float hitBeat;
|
||||
float sinkBeat;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
game = BuiltToScaleDS.instance;
|
||||
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
windupBeat = createBeat + (createLength * 4f);
|
||||
hitBeat = windupBeat + createLength;
|
||||
sinkBeat = hitBeat + (createLength * 2f);
|
||||
|
||||
game.ScheduleInput(windupBeat, createLength, InputType.STANDARD_DOWN, Just, Miss, Out);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (!moving) return;
|
||||
|
||||
var windupBeat = createBeat + (createLength * 4f);
|
||||
var hitBeat = windupBeat + createLength;
|
||||
var currentBeat = Conductor.instance.songPositionInBeats;
|
||||
float currentBeat = Conductor.instance.songPositionInBeats;
|
||||
|
||||
var shooterState = game.shooterAnim.GetCurrentAnimatorStateInfo(0);
|
||||
if (currentBeat > windupBeat && currentBeat < hitBeat
|
||||
&& !shooterState.IsName("Windup")
|
||||
&& game.shooterAnim.IsAnimationNotPlaying())
|
||||
&& !game.lastShotOut)
|
||||
{
|
||||
game.shooterAnim.Play("Windup", 0, 0);
|
||||
}
|
||||
|
||||
float stateBeat = Conductor.instance.GetPositionFromMargin(hitBeat, 2f);
|
||||
StateCheck(stateBeat);
|
||||
|
||||
if (PlayerInput.Pressed())
|
||||
{
|
||||
if (state.perfect)
|
||||
{
|
||||
Ace();
|
||||
}
|
||||
else if (state.notPerfect())
|
||||
{
|
||||
Miss();
|
||||
}
|
||||
}
|
||||
|
||||
if (moving)
|
||||
{
|
||||
var sinkBeat = hitBeat + (createLength * 2f);
|
||||
|
||||
if (currentBeat < sinkBeat)
|
||||
{
|
||||
game.SetBlockTime(this, createBeat, createLength);
|
||||
}
|
||||
else
|
||||
{
|
||||
moving = false;
|
||||
Jukebox.PlayOneShotGame("builtToScaleDS/Sink");
|
||||
}
|
||||
}
|
||||
if (moving && currentBeat < sinkBeat)
|
||||
game.SetBlockTime(this, createBeat, createLength);
|
||||
}
|
||||
|
||||
void Ace()
|
||||
private void Just(PlayerActionEvent caller, float state)
|
||||
{
|
||||
var shooterState = game.shooterAnim.GetCurrentAnimatorStateInfo(0);
|
||||
if (!shooterState.IsName("Windup")) return;
|
||||
|
||||
// near miss
|
||||
if (state >= 1f || state <= -1f) {
|
||||
NearMiss();
|
||||
return;
|
||||
}
|
||||
// hit
|
||||
Hit();
|
||||
}
|
||||
|
||||
private void Miss(PlayerActionEvent caller)
|
||||
{
|
||||
float sinkBeat = hitBeat + (createLength * 2f);
|
||||
MultiSound.Play(
|
||||
new MultiSound.Sound[] {
|
||||
new MultiSound.Sound("builtToScaleDS/Sink", sinkBeat),
|
||||
}, forcePlay: true
|
||||
);
|
||||
|
||||
BeatAction.New(this.gameObject, new List<BeatAction.Action>()
|
||||
{
|
||||
new BeatAction.Action(sinkBeat, delegate { moving = false; }),
|
||||
});
|
||||
}
|
||||
|
||||
private void Out(PlayerActionEvent caller) {}
|
||||
|
||||
void Hit()
|
||||
{
|
||||
moving = false;
|
||||
game.shootingThisFrame = true;
|
||||
@ -79,7 +93,7 @@ namespace HeavenStudio.Games.Scripts_BuiltToScaleDS
|
||||
Jukebox.PlayOneShotGame("builtToScaleDS/Hit");
|
||||
}
|
||||
|
||||
void Miss()
|
||||
void NearMiss()
|
||||
{
|
||||
moving = false;
|
||||
game.shootingThisFrame = true;
|
||||
@ -90,10 +104,5 @@ namespace HeavenStudio.Games.Scripts_BuiltToScaleDS
|
||||
|
||||
Jukebox.PlayOneShotGame("builtToScaleDS/Crumble");
|
||||
}
|
||||
|
||||
public override void OnAce()
|
||||
{
|
||||
Ace();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user