HeavenStudioPlus/Assets/Scripts/Games/Airboarder/Wall.cs

122 lines
3.6 KiB
C#
Raw Normal View History

Airboarder initial PR (#765) * started working on bon odori * bon odori is now playable, just no animations and sounds * bon odori is functional now, just missing the art, better audio and animations * nothing new, my git is always 1 commit behind * Revert "nothing new, my git is always 1 commit behind" This reverts commit b96a70004de5964902f7bc87d819a9e6047e77fb. * changed the background im only commiting because saladplainzone is gonna do the anims now * Accurate BG * Good prefab * finalized player prefab * Finalize Prefab * More animation stuff * Bow anim done * text is now functional, passing the project to AstrlJelly * merging w master branch * text scrolling is ALMOST functional * scrolling is ALMOST ALMOST functional * FINALLY!!!! TEXT SCOLLING IS DONE!!!!! * TEXT SCROLLING IS (almost) PERFECT!!!! now we gotta wait for the animations * minor bug fixes * TEXT SCROLLING IS ACTUALLY PERFECT NOW. also updated the font * i forgor to change the outline on the fonts * Setup * more working on stuff * more testing * more testing * more testing * some fixes * fixes * testing stuff * fixed some things * a few more fixes * more testing * More fixes * bops and animation adjustments * camera stuff! * Implementing placeholder icon * recolorable sky * fix that bug + format arch file also change the script name * oops --------- Co-authored-by: streitixy <danilomeiraivo@gmail.com> Co-authored-by: saladplainzone <chocolate2890mail@gmail.com> Co-authored-by: streitixy <85808002+streitixy@users.noreply.github.com> Co-authored-by: AstrlJelly <bdlawson115@gmail.com> Co-authored-by: minenice55 <star.elementa@gmail.com>
2024-03-10 01:47:14 +00:00
using System.Collections;
using System.Collections.Generic;
using HeavenStudio.Util;
using HeavenStudio.InputSystem;
using UnityEngine;
namespace HeavenStudio.Games.Scripts_Airboarder
{
public class Wall : MonoBehaviour
{
public Airboarder game;
public double targetBeat;
public double appearBeat;
public float normalizedWall;
public float cueStart;
[Header("Components")]
[SerializeField] Animator wallAnim;
private bool isCrouch;
// Start is called before the first frame update
private void Awake()
{
game = Airboarder.instance;
}
public void CueJump(double jumpBeat)
{
game.ScheduleInput(jumpBeat, 3f, Airboarder.InputAction_FlickRelease, JumpSuccess, JumphMiss, JumpEmpty);
BeatAction.New(game, new List<BeatAction.Action>() {
new BeatAction.Action(jumpBeat+1, delegate
{
game.CPU1.DoScaledAnimationAsync("jump", 1f, 0, 1);
SoundByte.PlayOneShotGame("airboarder/jump");
SoundByte.PlayOneShotGame("airboarder/jumpvox");
}),
new BeatAction.Action(jumpBeat+2, delegate {
game.CPU2.DoScaledAnimationAsync("jump", 1f, 0, 1);
SoundByte.PlayOneShotGame("airboarder/jump");
SoundByte.PlayOneShotGame("airboarder/jumpvox");
}),
new BeatAction.Action(jumpBeat+2.5, delegate {game.cpu1CantBop = false;} ),
new BeatAction.Action(jumpBeat+3.5, delegate {game.cpu2CantBop = false;} ),
});
}
// Update is called once per frame
void Update()
{
var cond = Conductor.instance;
var currentBeat = cond.songPositionInBeatsAsDouble;
float normalizedWall = Conductor.instance.GetPositionFromBeat(appearBeat, 40f);
wallAnim.GetComponent<Animator>().DoNormalizedAnimation("move", normalizedWall, 0);
if (normalizedWall > 1) Destroy(gameObject);
}
public void JumpSuccess(PlayerActionEvent caller, float state)
{
game.Player.DoScaledAnimationAsync("jump", 1f, 0, 1);
if (state is >= 1 or <= -1)
{
wallAnim.DoScaledAnimationAsync("shake", 1f, 0, 1);
SoundByte.PlayOneShotGame("airboarder/barely");
SoundByte.PlayOneShotGame("airboarder/barelyvox");
}
else
{
SoundByte.PlayOneShotGame("airboarder/jump");
SoundByte.PlayOneShotGame("airboarder/jumpvox");
}
double beat = caller.startBeat + caller.timer;
BeatAction.New(this, new() {
new(beat, ()=>game.playerCantBop = true),
new(beat+1.5f, ()=>game.playerCantBop = false)});
game.wantsCrouch = false;
}
public void JumphMiss(PlayerActionEvent caller){
game.playerCantBop = true;
game.wantsCrouch = false;
game.Player.DoScaledAnimationAsync("hit2", 1f, 0, 1);
wallAnim.DoScaledAnimationAsync("break", 1f, 0, 1);
double beat = caller.startBeat + caller.timer;
game.MissSound(beat);
BeatAction.New(this, new() {
new(beat+1.5f, ()=>game.playerCantBop = false)});
}
public void JumpEmpty(PlayerActionEvent caller){
}
}
}