Modernized Bops & WIP Stomps/Slaps

Made the bop system to have automatic/stretchy settings like all new games. Also got a WIP implementation of stomping/slapping
This commit is contained in:
RaffyTaffy14 2023-12-05 22:32:01 -05:00
parent c347ae4032
commit 31ced8d426

View file

@ -14,13 +14,16 @@ namespace HeavenStudio.Games.Loaders
{ {
new GameAction("bop", "Bop") new GameAction("bop", "Bop")
{ {
function = delegate { var e = eventCaller.currentEntity; SumoBrothers.instance.Bop(e["inuT"], e["sumoT"]); }, function = delegate { var e = eventCaller.currentEntity; SumoBrothers.instance.Bop(e.beat, e.length, e["bopInu"], e["bopSumo"], e["bopInuAuto"], e["bopSumoAuto"]); },
parameters = new List<Param>() parameters = new List<Param>()
{ {
new Param("inuT", true, "Inu Sensei", "Whether Inu Sensei bops or not."), new Param("bopInu", true, "Bop Inu", "Whether Inu Sensei should bop or not."),
new Param("sumoT", true, "Sumo Brothers", "Whether the Sumo Brothers bop or not.") new Param("bopSumo", true, "Bop Sumo", "Whether the Sumo Brothers should bop or not."),
new Param("bopInuAuto", false, "Bop Inu (Auto)", "Whether Inu Sensei should bop automatically or not."),
new Param("bopSumoAuto", false, "Bop Sumo (Auto)", "Whether the Sumo Brothers should bop automatically or not."),
}, },
defaultLength = 0.5f defaultLength = 1f,
resizable = true
}, },
new GameAction("crouch", "Crouch") new GameAction("crouch", "Crouch")
@ -139,60 +142,76 @@ namespace HeavenStudio.Games
{ {
var cond = Conductor.instance; var cond = Conductor.instance;
if (cond.ReportBeat(ref lastReportedBeat))
{
// Bop Code - Inu Sensei
if (allowBopInu)
{
if (goBopInu)
{
// Bop
inuSensei.DoScaledAnimationAsync("InuBop", 0.5f);
}
else
{
// Reset to Idle if Bop is off
inuSensei.DoScaledAnimationAsync("InuIdle", 0.5f);
}
}
// Bop Code - Sumo Brothers
if (allowBopSumo)
{
if(goBopSumo)
{
// Bop
sumoBrotherP.DoScaledAnimationAsync("SumoBop", 0.5f);
sumoBrotherG.DoScaledAnimationAsync("SumoBop", 0.5f);
}
else
{
// Reset to Idle if Bop is off
sumoBrotherP.DoScaledAnimationAsync("SumoIdle", 0.5f);
sumoBrotherG.DoScaledAnimationAsync("SumoIdle", 0.5f);
}
}
}
if (PlayerInput.Pressed() && !IsExpectingInputNow()) if (PlayerInput.Pressed() && !IsExpectingInputNow())
{ {
} }
} }
public void Bop(bool inu, bool sumo) public override void OnBeatPulse(double beat)
{ {
goBopInu = inu; if (allowBopInu)
goBopSumo = sumo; {
if (goBopInu)
{
inuSensei.DoScaledAnimationAsync("InuBop", 0.5f);
}
else
{
inuSensei.DoScaledAnimationAsync("InuIdle", 0.5f);
}
}
if (allowBopSumo)
{
if(goBopSumo)
{
sumoBrotherP.DoScaledAnimationAsync("SumoBop", 0.5f);
sumoBrotherG.DoScaledAnimationAsync("SumoBop", 0.5f);
}
else
{
sumoBrotherP.DoScaledAnimationAsync("SumoIdle", 0.5f);
sumoBrotherG.DoScaledAnimationAsync("SumoIdle", 0.5f);
}
}
}
public void Bop(double beat, float length, bool inu, bool sumo, bool inuAuto, bool sumoAuto)
{
goBopInu = inuAuto;
goBopSumo = sumoAuto;
if (inu || sumo)
{
List<BeatAction.Action> bops = new List<BeatAction.Action>();
for (int i = 0; i < length; i++)
{
bops.Add(new BeatAction.Action(beat + i, delegate
{
if (inu)
{
inuSensei.DoScaledAnimationAsync("InuBop", 0.5f);
}
if (sumo)
{
sumoBrotherP.DoScaledAnimationAsync("SumoBop", 0.5f);
sumoBrotherG.DoScaledAnimationAsync("SumoBop", 0.5f);
}
}));
}
BeatAction.New(instance, bops);
}
} }
public void StompSignal(double beat, bool mute) public void StompSignal(double beat, bool mute)
{ {
if (mute == false) if (mute == false)
{ {
BeatAction.New(instance.gameObject, new List<BeatAction.Action>() BeatAction.New(instance, new List<BeatAction.Action>()
{ {
new BeatAction.Action(beat, delegate { inuSensei.DoScaledAnimationAsync("InuBounce", 0.5f); }), new BeatAction.Action(beat, delegate { inuSensei.DoScaledAnimationAsync("InuBounce", 0.5f); }),
new BeatAction.Action(beat + 2, delegate { inuSensei.DoScaledAnimationAsync("InuBounce", 0.5f); }) new BeatAction.Action(beat + 2, delegate { inuSensei.DoScaledAnimationAsync("InuBounce", 0.5f); })
@ -206,13 +225,24 @@ namespace HeavenStudio.Games
} }
StompRecursive(beat + 4);
}
private void StompRecursive(double beat)
{
ScheduleInput(beat - 1, 1, InputAction_BasicPress, StompHit, StompMiss, Nothing);
BeatAction.New(instance, new List<BeatAction.Action>()
{
new BeatAction.Action(beat, delegate { StompRecursive(beat + 2); })
});
} }
public void SlapSignal(double beat, bool mute) public void SlapSignal(double beat, bool mute)
{ {
if (mute == false) if (mute == false)
{ {
BeatAction.New(instance.gameObject, new List<BeatAction.Action>() BeatAction.New(instance, new List<BeatAction.Action>()
{ {
new BeatAction.Action(beat, delegate { inuSensei.DoScaledAnimationAsync("InuBounce", 0.5f); }), new BeatAction.Action(beat, delegate { inuSensei.DoScaledAnimationAsync("InuBounce", 0.5f); }),
new BeatAction.Action(beat + 1, delegate { inuSensei.DoScaledAnimationAsync("InuBounce", 0.5f); }), new BeatAction.Action(beat + 1, delegate { inuSensei.DoScaledAnimationAsync("InuBounce", 0.5f); }),
@ -229,6 +259,18 @@ namespace HeavenStudio.Games
}, forcePlay: true); }, forcePlay: true);
} }
SlapRecursive(beat + 4);
}
private void SlapRecursive(double beat)
{
ScheduleInput(beat - 1, 1, InputAction_BasicPress, SlapHit, SlapMiss, Nothing);
BeatAction.New(instance, new List<BeatAction.Action>()
{
new BeatAction.Action(beat, delegate { SlapRecursive(beat + 1); })
});
} }
public void Crouch(double beat, float length, bool inu, bool sumo) public void Crouch(double beat, float length, bool inu, bool sumo)
@ -242,7 +284,7 @@ namespace HeavenStudio.Games
allowBopSumo = false; allowBopSumo = false;
} }
BeatAction.New(instance.gameObject, new List<BeatAction.Action>() { BeatAction.New(instance, new List<BeatAction.Action>() {
new BeatAction.Action(beat, delegate { if (inu == true) inuSensei.DoScaledAnimationAsync("InuCrouch", 0.5f); }), new BeatAction.Action(beat, delegate { if (inu == true) inuSensei.DoScaledAnimationAsync("InuCrouch", 0.5f); }),
new BeatAction.Action(beat, delegate { if (sumo == true) sumoBrotherP.DoScaledAnimationAsync("SumoCrouch", 0.5f); }), new BeatAction.Action(beat, delegate { if (sumo == true) sumoBrotherP.DoScaledAnimationAsync("SumoCrouch", 0.5f); }),
new BeatAction.Action(beat, delegate { if (sumo == true) sumoBrotherG.DoScaledAnimationAsync("SumoCrouch", 0.5f); }), new BeatAction.Action(beat, delegate { if (sumo == true) sumoBrotherG.DoScaledAnimationAsync("SumoCrouch", 0.5f); }),
@ -258,27 +300,8 @@ namespace HeavenStudio.Games
public void EndPose(double beat) public void EndPose(double beat)
{ {
var cond = Conductor.instance; var cond = Conductor.instance;
#region Old Goofy as Hell Tweet Code
/* var loopAmount = Math.Round((3 * cond.secPerBeat - 0.208) / 0.395);
var beatsPerSecond = cond.songBpm / 60;
var soundBeatLength = beatsPerSecond * 0.395;
List<MultiSound.Sound> sound = new List<MultiSound.Sound>(); ScheduleInput(beat, 4f, InputAction_FlickPress, PoseHit, PoseMiss, Nothing);
sound.Add(new MultiSound.Sound("sumoBrothers/posesignalBegin", beat));
for (int i = 1; i <= loopAmount; i++)
{
sound.Add(new MultiSound.Sound("sumoBrothers/posesignalLoop", i * (float)soundBeatLength + beat - (float)soundBeatLength + ((float)beatsPerSecond * 0.208f)));
}
MultiSound.Play(sound.ToArray());
var tweetLength = (float)loopAmount * (float)soundBeatLength - (float)soundBeatLength + ((float)beatsPerSecond * 0.208f);
print(tweetLength);*/
#endregion
ScheduleInput(beat, 4f, InputType.STANDARD_ALT_DOWN, PoseHit, PoseMiss, Nothing);
var tweet = SoundByte.PlayOneShotGame("sumoBrothers/posesignal", -1, 1f, 1f, true); var tweet = SoundByte.PlayOneShotGame("sumoBrothers/posesignal", -1, 1f, 1f, true);
tweet.SetLoopParams(beat + 3, 0.05f); tweet.SetLoopParams(beat + 3, 0.05f);
@ -286,7 +309,7 @@ namespace HeavenStudio.Games
allowBopInu = false; allowBopInu = false;
inuSensei.DoScaledAnimationAsync("InuTweet", 0.5f); inuSensei.DoScaledAnimationAsync("InuTweet", 0.5f);
BeatAction.New(instance.gameObject, new List<BeatAction.Action>() { BeatAction.New(instance, new List<BeatAction.Action>() {
new BeatAction.Action(beat + 3, delegate { allowBopInu = true; }), new BeatAction.Action(beat + 3, delegate { allowBopInu = true; }),
new BeatAction.Action(beat + 3, delegate { if (goBopInu == true) inuSensei.DoScaledAnimationAsync("InuBop", 0.5f); }) new BeatAction.Action(beat + 3, delegate { if (goBopInu == true) inuSensei.DoScaledAnimationAsync("InuBop", 0.5f); })
}); });
@ -313,6 +336,52 @@ namespace HeavenStudio.Games
SoundByte.PlayOneShotGame("sumoBrothers/miss"); SoundByte.PlayOneShotGame("sumoBrothers/miss");
}
void SlapHit(PlayerActionEvent caller, float state)
{
if (state >= 1f || state <= -1f)
{
SoundByte.PlayOneShotGame("nearmiss");
SoundByte.PlayOneShotGame("sumoBrothers/slap");
}
else
{
}
SoundByte.PlayOneShotGame("sumoBrothers/slap");
}
void SlapMiss(PlayerActionEvent caller)
{
SoundByte.PlayOneShotGame("sumoBrothers/miss");
}
void StompHit(PlayerActionEvent caller, float state)
{
if (state >= 1f || state <= -1f)
{
SoundByte.PlayOneShotGame("nearmiss");
SoundByte.PlayOneShotGame("sumoBrothers/stomp");
}
else
{
}
SoundByte.PlayOneShotGame("sumoBrothers/stomp");
}
void StompMiss(PlayerActionEvent caller)
{
SoundByte.PlayOneShotGame("sumoBrothers/miss");
} }
void Nothing(PlayerActionEvent caller) { } void Nothing(PlayerActionEvent caller) { }