update built to scale DS to use PlayerActionEvent
This commit is contained in:
parent
b6b0232a4a
commit
6dd7569a6b
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue