Miscellaneous Tweaks + New Scroll Script (#350)

* meat grinder prefab + sprite cutting/naming done + icon

title :)

* Boss Bop, Miss, & Signal Anims

can you read

* Boss Call Anim

self-explanatory

* fix the z axis + new sprite

still working on getting those bops working. they're a bit weird (not the anim itself)

* Restored Meat Grinder Animations

i have no idea what just happened with github but the animations are back

* All Tack Animations Complete

just missing the meat anims

* Literally two lines changed

skull emoji (forgot to set the light meat for the miss anim to inactive by default)

* Meat Grinder Anims (should be) Done

Added the Meat Hit anims

* goodnight

* bopping every beat
* tons of sfx
* meat calls with their corresponding sfx/animations have been added
* prefunctions...

* inputs + sfx + prefunction

making swift progress here :)

* little commit

more cues and animation stuff so that i can have new animations

* Meat Toss Anims

also fixed up some of tack's hit anims to make the smear more consistent

* night night

* moved all the meat stuff to a new script
 -this should help with instantiating the meat
* animations are a bit more comprehensive
* man, barelies are way easier than i thought they were gonna be

* instantiating works now

committing to work on my pc instead of my laptop

but i have been getting a lot done with the meat! it's just that most of that stuff is learning what i can't do...

* Boss Animation Tweaks

Adjusted Boss' bop and miss animations

* woohoo animation!

hi sean this is for u. tell me anything to tweak :)

* Quick Meat Toss Anim Fix

Prevents meat from playing the toss animation twice

* meat hit animation works!

sometimes there's a frame where the first frame of its animation pops up but i should be able to fix that

also just general improvements + framework for different meats

* it's done! or at least out of wip!

* you can select which meat type is tossed (defaults to random)
* ghost meat has been busted (it looped back to its first frame of anim sometimes right before being destroyed; i just added a single frame idle.)
* overall just optimized code
* removed WIP from game name

* a few touch-ups

* change all sfx to ogg
 -also amplified toss.ogg by 4db, was hard to hear at the same time as hitting a cue
* fixed boss not bopping a beat after a signal
 -a very small bit hacky but it really works fine. will fix if any problems come up (but i added a check so that there shouldn't be)

* i have stashed changes :P

* new bg + remove references

title

* boss weird bopping fixed + game switches fixed

* final touch-ups

* random things just broke

* for whatever reason animation controller for boss got reverted, breaking an animation
* and we forgot to merge two spritesheets instead of just replacing one with the other. oops

* sfx volume lowerd

* ok cool commit time

* added superscroll (MADE BY STARPELLY)
* fixed dog ninja backwards compatibility
* fixed meat grinder's startinterval need
* added d pad controls to dog ninja and meat grinder

* oops forgot to add dpad for dog ninja

* remove d-pad from meat grinder 😢

---------

Co-authored-by: Seanski2 <seanbenedit@gmail.com>
This commit is contained in:
AstrlJelly
2023-03-18 00:40:20 -04:00
committed by GitHub
parent dbce2041c4
commit 33253e3c27
12 changed files with 128 additions and 47 deletions

View File

@ -30,6 +30,11 @@ namespace HeavenStudio.Games.Loaders
},
defaultLength = 0.5f,
priority = 2,
preFunctionLength = 1f,
preFunction = delegate {
var e = eventCaller.currentEntity;
MeatGrinder.PreMeatCall(e.beat);
},
},
new GameAction("StartInterval", "Start Interval")
{
@ -40,6 +45,7 @@ namespace HeavenStudio.Games.Loaders
defaultLength = 4f,
resizable = true,
priority = 1,
preFunctionLength = 2f,
preFunction = delegate {
var e = eventCaller.currentEntity;
MeatGrinder.PreInterval(e.beat, e.length);
@ -69,11 +75,7 @@ namespace HeavenStudio.Games
using Scripts_MeatGrinder;
public class MeatGrinder : Minigame
{
static List<QueuedMeatInput> queuedInputs = new List<QueuedMeatInput>();
struct QueuedMeatInput
{
public float beatAwayFromStart;
}
static List<float> queuedInputs = new List<float>();
[Header("Objects")]
public GameObject MeatBase;
@ -87,6 +89,7 @@ namespace HeavenStudio.Games
float intervalStartBeat;
float beatInterval = 4f;
bool bossBop = true;
bool dontCall = false;
public bool bossAnnoyed = false;
private float lastReportedBeat = 0f;
const string sfxName = "meatGrinder/";
@ -106,24 +109,22 @@ namespace HeavenStudio.Games
void OnDestroy()
{
if (!Conductor.instance.isPlaying || Conductor.instance.isPaused)
{
if (!Conductor.instance.isPlaying || Conductor.instance.isPaused) {
if (queuedInputs.Count > 0) queuedInputs.Clear();
}
}
private void Update()
{
if (!Conductor.instance.isPlaying || Conductor.instance.isPaused)
{
if (!Conductor.instance.isPlaying || Conductor.instance.isPaused) {
if (queuedInputs.Count > 0) queuedInputs.Clear();
}
if (!Conductor.instance.isPlaying && !Conductor.instance.isPaused && intervalStarted)
{
if (!Conductor.instance.isPlaying && !Conductor.instance.isPaused && intervalStarted) {
intervalStarted = false;
}
if (PlayerInput.Pressed() && !IsExpectingInputNow(InputType.STANDARD_DOWN))
{
if (PlayerInput.Pressed() && !IsExpectingInputNow(InputType.STANDARD_DOWN)) {
ScoreMiss();
TackAnim.DoScaledAnimationAsync("TackEmptyHit", 0.5f);
TackAnim.SetBool("tackMeated", false);
@ -168,32 +169,28 @@ namespace HeavenStudio.Games
public static void PreInterval(float beat, float interval)
{
if (!MeatGrinder.instance.intervalStarted && !MeatGrinder.instance.dontCall) {
MultiSound.Play(new MultiSound.Sound[] { new MultiSound.Sound(sfxName+"startSignal", beat - 1f), }, forcePlay: true);
BeatAction.New(instance.gameObject, new List<BeatAction.Action>() {
new BeatAction.Action(beat - 1, delegate { instance.BossAnim.DoScaledAnimationAsync("BossSignal", 0.5f); }), });
}
MeatGrinder.instance.dontCall = true;
MeatGrinder.instance.beatInterval = interval;
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
{
new BeatAction.Action(beat - 1, delegate { instance.BossAnim.DoScaledAnimationAsync("BossSignal", 0.5f); }),
});
MultiSound.Play(new MultiSound.Sound[] {
new MultiSound.Sound(sfxName+"startSignal", beat - 1f),
}, forcePlay: true);
}
public void StartInterval(float beat, float interval)
{
intervalStartBeat = beat;
if (!intervalStarted)
{
intervalStarted = true;
}
if (!intervalStarted) { intervalStarted = true; }
BeatAction.New(gameObject, new List<BeatAction.Action>()
{
new BeatAction.Action(beat + interval - 1, delegate { PassTurn(beat); }),
});
}
public void MeatToss(float beat)
{
Jukebox.PlayOneShotGame(sfxName+"toss");
@ -205,6 +202,15 @@ namespace HeavenStudio.Games
Meat.meatType = "DarkMeat";
}
public static void PreMeatCall(float beat)
{
if (!MeatGrinder.instance.dontCall) {
BeatAction.New(instance.gameObject, new List<BeatAction.Action>() {
new BeatAction.Action(beat - 1, delegate { MeatGrinder.PreInterval(beat, instance.beatInterval); }),
});
}
}
public void MeatCall(float beat)
{
BossAnim.DoScaledAnimationAsync("BossCall", 0.5f);
@ -215,23 +221,21 @@ namespace HeavenStudio.Games
StartInterval(beat, beatInterval);
}
queuedInputs.Add(new QueuedMeatInput()
{
beatAwayFromStart = beat - intervalStartBeat,
});
queuedInputs.Add(beat - intervalStartBeat);
}
public void PassTurn(float beat)
{
dontCall = false;
intervalStarted = false;
foreach (var input in queuedInputs)
{
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
{
new BeatAction.Action(input.beatAwayFromStart + beat, delegate {
new BeatAction.Action(input + beat, delegate {
MeatToss Meat = Instantiate(MeatBase).GetComponent<MeatToss>();
Meat.startBeat = beat;
Meat.cueLength = beatInterval + input.beatAwayFromStart;
Meat.cueLength = beatInterval + input;
Meat.cueBased = false;
Meat.meatType = "LightMeat";
}),