mirror of
https://github.com/RHeavenStudioPlus/HeavenStudioPlus.git
synced 2024-11-12 20:55:08 +00:00
1d18d6a510
* Added sfx, sprites and folders neccesary. And also made an empty game object for working dough * Started work on the background * Implemented all unanimated sprites * Added Init * Added Prefabs * Added Jumping and Idle Animatins for the Dough Dudes * SmallFix * Start Interval Event Implemented * Added Audio and Small and Big Ball events * Code Improvement + starting making the balls * Added bezier curves * Added First Rendition of Balls * Added NPC Balls and starting doing small transporting animations * SmallFixes * SmallSoundChanges * Implemented Audio and prefunction, not done with it though * In process of fixing set interval * Added more prefunction stuff and also started working on player input * Tried adding player balls, not done, many bugs to fix * Reverted trying to make the playerenterdoughball handle inputs, gonna do it through the main script instead * Sat up input code for later * Input works now! Need to add barely and wrong input animations and fix bugs * Tiny fix * Added first draft of wronginput animations * Finished all input anims, trying to fix bugs * Added finished Spaceship animations * Added Mr Game and Watch WIP and lifting dough dudes * Finished GANDW, fixed some bugs and still fixing bugs, almost done! * DONE * Begun development on tambourine * Working Dough Polish * Added many animations for tambourine * Added Events * Inputs added, near completion * Miss Anims * Animation changes * DONE * fix * FIXED??? * FIXED FOR REAL * Begun fixing lockstep, just needs small fixes and features * Smol fix-ish * Started work on mr upbeat * MrUpbeat fixed, finishing up lockstep * Added BG to lockstep * Added bg colour change * Done with my part
191 lines
No EOL
6.9 KiB
C#
191 lines
No EOL
6.9 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
using System;
|
|
using Starpelly;
|
|
|
|
using HeavenStudio.Util;
|
|
|
|
namespace HeavenStudio.Games.Loaders
|
|
{
|
|
using static Minigames;
|
|
public static class AgbUpbeatLoader
|
|
{
|
|
public static Minigame AddGame(EventCaller eventCaller) {
|
|
return new Minigame("mrUpbeat", "Mr. Upbeat", "FFFFFF", false, false, new List<GameAction>()
|
|
{
|
|
new GameAction("stepping", "Start Stepping")
|
|
{
|
|
preFunction = delegate {var e = eventCaller.currentEntity; MrUpbeat.Stepping(e.beat, e.length); },
|
|
defaultLength = 4f,
|
|
resizable = true
|
|
},
|
|
new GameAction("blipping", "Beeping")
|
|
{
|
|
function = delegate {var e = eventCaller.currentEntity; MrUpbeat.instance.Blipping(e.beat, e.length); },
|
|
defaultLength = 4f,
|
|
resizable = true
|
|
},
|
|
new GameAction("ding!", "Ding!")
|
|
{
|
|
function = delegate { MrUpbeat.instance.Ding(eventCaller.currentEntity["toggle"]); },
|
|
defaultLength = 0.5f,
|
|
parameters = new List<Param>()
|
|
{
|
|
new Param("toggle", false, "Applause")
|
|
}
|
|
},
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
namespace HeavenStudio.Games
|
|
{
|
|
using Scripts_MrUpbeat;
|
|
|
|
public class MrUpbeat : Minigame
|
|
{
|
|
[Header("References")]
|
|
public Animator metronomeAnim;
|
|
public UpbeatMan man;
|
|
|
|
[Header("Properties")]
|
|
static List<queuedUpbeatInputs> queuedInputs = new List<queuedUpbeatInputs>();
|
|
public struct queuedUpbeatInputs
|
|
{
|
|
public float beat;
|
|
public bool goRight;
|
|
}
|
|
|
|
public static MrUpbeat instance;
|
|
|
|
private void Awake()
|
|
{
|
|
instance = this;
|
|
}
|
|
|
|
void OnDestroy()
|
|
{
|
|
if (!Conductor.instance.isPlaying || Conductor.instance.isPaused)
|
|
{
|
|
if (queuedInputs.Count > 0) queuedInputs.Clear();
|
|
}
|
|
}
|
|
|
|
public void Update()
|
|
{
|
|
var cond = Conductor.instance;
|
|
if (cond.isPlaying && !cond.isPaused)
|
|
{
|
|
if (queuedInputs.Count > 0)
|
|
{
|
|
foreach (var input in queuedInputs)
|
|
{
|
|
ScheduleInput(cond.songPositionInBeats, input.beat - cond.songPositionInBeats, InputType.STANDARD_DOWN, Success, Miss, Nothing);
|
|
if (input.goRight)
|
|
{
|
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
|
{
|
|
new BeatAction.Action(input.beat - 0.5f, delegate { MrUpbeat.instance.metronomeAnim.DoScaledAnimationAsync("MetronomeGoLeft", 0.5f); }),
|
|
new BeatAction.Action(input.beat - 0.5f, delegate { Jukebox.PlayOneShotGame("mrUpbeat/metronomeRight"); }),
|
|
});
|
|
}
|
|
else
|
|
{
|
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
|
{
|
|
new BeatAction.Action(input.beat - 0.5f, delegate { MrUpbeat.instance.metronomeAnim.DoScaledAnimationAsync("MetronomeGoRight", 0.5f); }),
|
|
new BeatAction.Action(input.beat - 0.5f, delegate { Jukebox.PlayOneShotGame("mrUpbeat/metronomeLeft"); }),
|
|
});
|
|
}
|
|
}
|
|
queuedInputs.Clear();
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Ding(bool applause)
|
|
{
|
|
Jukebox.PlayOneShotGame("mrUpbeat/ding");
|
|
if (applause) Jukebox.PlayOneShot("applause");
|
|
}
|
|
|
|
public void Blipping(float beat, float length)
|
|
{
|
|
for (int i = 0; i < length + 1; i++)
|
|
{
|
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
|
{
|
|
new BeatAction.Action(beat + i, delegate { man.Blip(); }),
|
|
});
|
|
}
|
|
}
|
|
|
|
public static void Stepping(float beat, float length)
|
|
{
|
|
if (GameManager.instance.currentGame == "mrUpbeat")
|
|
{
|
|
float offSet = 0;
|
|
if (!MrUpbeat.instance.isPlaying(MrUpbeat.instance.metronomeAnim, "MetronomeIdle") && !MrUpbeat.instance.isPlaying(MrUpbeat.instance.metronomeAnim, "MetronomeGoRight"))
|
|
{
|
|
offSet = 1;
|
|
}
|
|
for (int i = 0; i < length + 1; i++)
|
|
{
|
|
MrUpbeat.instance.ScheduleInput(beat - 1, 1 + i, InputType.STANDARD_DOWN, MrUpbeat.instance.Success, MrUpbeat.instance.Miss, MrUpbeat.instance.Nothing);
|
|
if ((i + offSet) % 2 == 0)
|
|
{
|
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
|
{
|
|
new BeatAction.Action(beat + i - 0.5f, delegate { MrUpbeat.instance.metronomeAnim.DoScaledAnimationAsync("MetronomeGoLeft", 0.5f); }),
|
|
new BeatAction.Action(beat + i - 0.5f, delegate { Jukebox.PlayOneShotGame("mrUpbeat/metronomeRight"); }),
|
|
});
|
|
}
|
|
else
|
|
{
|
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
|
{
|
|
new BeatAction.Action(beat + i - 0.5f, delegate { MrUpbeat.instance.metronomeAnim.DoScaledAnimationAsync("MetronomeGoRight", 0.5f); }),
|
|
new BeatAction.Action(beat + i - 0.5f, delegate { Jukebox.PlayOneShotGame("mrUpbeat/metronomeLeft"); }),
|
|
});
|
|
}
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int i = 0; i < length + 1; i++)
|
|
{
|
|
queuedInputs.Add(new queuedUpbeatInputs
|
|
{
|
|
beat = beat + i,
|
|
goRight = i % 2 == 0
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Success(PlayerActionEvent caller, float state)
|
|
{
|
|
man.Step();
|
|
}
|
|
|
|
public void Miss(PlayerActionEvent caller)
|
|
{
|
|
man.Fall();
|
|
}
|
|
|
|
bool isPlaying(Animator anim, string stateName)
|
|
{
|
|
if (anim.GetCurrentAnimatorStateInfo(0).IsName(stateName) &&
|
|
anim.GetCurrentAnimatorStateInfo(0).normalizedTime < 1.0f)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
public void Nothing(PlayerActionEvent caller) {}
|
|
}
|
|
} |