update built to scale DS to use PlayerActionEvent

This commit is contained in:
minenice55 2023-01-14 18:06:40 -05:00
parent b6b0232a4a
commit 6dd7569a6b
3 changed files with 60 additions and 43 deletions

View file

@ -25,7 +25,10 @@ namespace HeavenStudio.Games.Scripts_BlueBear
private void Awake()
{
game = BlueBear.instance;
}
private void Start()
{
flyBeats = isCake ? 3f : 2f;
game.ScheduleInput(startBeat, flyBeats, isCake ? InputType.DIRECTION_DOWN : InputType.STANDARD_DOWN, EatJust, EatOut, EatOut);
}

View file

@ -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();
}
}
}

View file

@ -65,6 +65,7 @@ namespace HeavenStudio.Games
private float currentBeltOffset;
[NonSerialized] public bool shootingThisFrame;
[NonSerialized] public bool lastShotOut = false;
public static BuiltToScaleDS instance;
@ -118,10 +119,14 @@ namespace HeavenStudio.Games
void LateUpdate()
{
var shooterState = shooterAnim.GetCurrentAnimatorStateInfo(0);
bool canShoot = !shooterState.IsName("Shoot") || shooterAnim.IsAnimationNotPlaying();
bool canShoot = (!shooterState.IsName("Shoot") || shooterAnim.IsAnimationNotPlaying()) && !shootingThisFrame;
if (canShoot && PlayerInput.Pressed() && !shootingThisFrame)
if (canShoot && lastShotOut)
lastShotOut = false;
if (canShoot && !lastShotOut && PlayerInput.Pressed() && !IsExpectingInputNow(InputType.STANDARD_DOWN))
{
lastShotOut = true;
shootingThisFrame = true;
Shoot();
SpawnObject(BTSObject.FlyingRod);