diff --git a/Assets/Scripts/Games/LaunchParty/LaunchParty.cs b/Assets/Scripts/Games/LaunchParty/LaunchParty.cs
index eaf7edcb1..af8034511 100644
--- a/Assets/Scripts/Games/LaunchParty/LaunchParty.cs
+++ b/Assets/Scripts/Games/LaunchParty/LaunchParty.cs
@@ -22,7 +22,7 @@ namespace HeavenStudio.Games.Loaders
{
new GameAction("rocket", "Family Model")
{
- preFunction = delegate { var e = eventCaller.currentEntity; LaunchParty.instance.LaunchRocket(e.beat, e["offset"], e["note1"], e["note2"], e["note3"], e["note4"]); },
+ preFunction = delegate { var e = eventCaller.currentEntity; LaunchParty.LaunchRocket(e.beat, e["offset"], e["note1"], e["note2"], e["note3"], e["note4"]); },
defaultLength = 4f,
parameters = new List()
{
@@ -35,7 +35,7 @@ namespace HeavenStudio.Games.Loaders
},
new GameAction("partyCracker", "Party-Popper")
{
- preFunction = delegate { var e = eventCaller.currentEntity; LaunchParty.instance.LaunchPartyCracker(e.beat, e["offset"], e["note1"], e["note2"], e["note3"], e["note4"], e["note5"], e["note6"]); },
+ preFunction = delegate { var e = eventCaller.currentEntity; LaunchParty.LaunchPartyCracker(e.beat, e["offset"], e["note1"], e["note2"], e["note3"], e["note4"], e["note5"], e["note6"]); },
defaultLength = 3f,
parameters = new List()
{
@@ -50,7 +50,7 @@ namespace HeavenStudio.Games.Loaders
},
new GameAction("bell", "Bell")
{
- preFunction = delegate { var e = eventCaller.currentEntity; LaunchParty.instance.LaunchBell(e.beat, e["offset"], e["note1"], e["note2"], e["note3"], e["note4"], e["note5"], e["note6"], e["note7"], e["note8"],
+ preFunction = delegate { var e = eventCaller.currentEntity; LaunchParty.LaunchBell(e.beat, e["offset"], e["note1"], e["note2"], e["note3"], e["note4"], e["note5"], e["note6"], e["note7"], e["note8"],
e["note9"]); },
defaultLength = 3f,
parameters = new List()
@@ -69,7 +69,7 @@ namespace HeavenStudio.Games.Loaders
},
new GameAction("bowlingPin", "Bowling Pin")
{
- preFunction = delegate { var e = eventCaller.currentEntity; LaunchParty.instance.LaunchBowlingPin(e.beat, e["offset"], e["note1"], e["note2"], e["note3"], e["note4"], e["note5"], e["note6"], e["note7"],
+ preFunction = delegate { var e = eventCaller.currentEntity; LaunchParty.LaunchBowlingPin(e.beat, e["offset"], e["note1"], e["note2"], e["note3"], e["note4"], e["note5"], e["note6"], e["note7"],
e["note8"], e["note9"], e["note10"], e["note11"], e["note12"], e["note13"], e["note14"], e["note15"]); },
defaultLength = 3f,
parameters = new List()
@@ -94,7 +94,6 @@ namespace HeavenStudio.Games.Loaders
},
new GameAction("posMove", "Change Launch Pad Position")
{
- function = delegate { LaunchParty.instance.Nothing(); },
defaultLength = 4f,
resizable = true,
parameters = new List()
@@ -107,7 +106,6 @@ namespace HeavenStudio.Games.Loaders
},
new GameAction("rotMove", "Change Launch Pad Rotation")
{
- function = delegate { LaunchParty.instance.Nothing(); },
defaultLength = 4f,
resizable = true,
parameters = new List()
@@ -173,6 +171,21 @@ namespace HeavenStudio.Games
private float currentPadRotation;
private EasingFunction.Ease lastPosEase;
private EasingFunction.Ease lastRotEase;
+ public enum RocketType
+ {
+ Family = 0,
+ Cracker = 1,
+ Bell = 2,
+ BowlingPin = 3
+ }
+ public struct QueuedRocket
+ {
+ public RocketType type;
+ public float beat;
+ public float offSet;
+ public List notes;
+ }
+ private static List queuedRockets = new List();
private int currentPosIndex;
@@ -184,6 +197,11 @@ namespace HeavenStudio.Games
public static LaunchParty instance;
+ void OnDestroy()
+ {
+ if (queuedRockets.Count > 0) queuedRockets.Clear();
+ }
+
void Awake()
{
instance = this;
@@ -219,6 +237,17 @@ namespace HeavenStudio.Games
void Update()
{
var cond = Conductor.instance;
+ if (cond.isPlaying && !cond.isPaused)
+ {
+ if (queuedRockets.Count > 0)
+ {
+ foreach (var rocket in queuedRockets)
+ {
+ SpawnRocket(rocket.beat, rocket.offSet, rocket.type, rocket.notes);
+ }
+ queuedRockets.Clear();
+ }
+ }
if (allPosEvents.Count > 0)
{
if (currentPosIndex < allPosEvents.Count && currentPosIndex >= 0)
@@ -322,88 +351,141 @@ namespace HeavenStudio.Games
}
}
- public void LaunchRocket(float beat, float beatOffset, int noteOne, int noteTwo, int noteThree, int noteFour)
+ public void SpawnRocket(float beat, float beatOffset, RocketType type, List notes)
{
-
- GameObject spawnedRocket = Instantiate(rocket, spawnPad, false);
+ GameObject rocketToSpawn = rocket;
+ switch (type)
+ {
+ case RocketType.Family:
+ rocketToSpawn = rocket;
+ break;
+ case RocketType.Cracker:
+ rocketToSpawn = partyCracker;
+ break;
+ case RocketType.Bell:
+ rocketToSpawn = bell;
+ break;
+ case RocketType.BowlingPin:
+ rocketToSpawn = bowlingPin;
+ break;
+ }
+ GameObject spawnedRocket = Instantiate(rocketToSpawn, spawnPad, false);
var rocketScript = spawnedRocket.GetComponent();
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteOne) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteTwo) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteThree) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteFour) * Conductor.instance.musicSource.pitch);
- rocketScript.InitFamilyRocket(beat);
-
+ rocketScript.pitches.AddRange(notes);
+ switch (type)
+ {
+ case RocketType.Family:
+ rocketScript.InitFamilyRocket(beat);
+ break;
+ case RocketType.Cracker:
+ rocketScript.InitPartyCracker(beat);
+ break;
+ case RocketType.Bell:
+ rocketScript.InitBell(beat);
+ break;
+ case RocketType.BowlingPin:
+ rocketScript.InitBowlingPin(beat);
+ break;
+ }
BeatAction.New(instance.gameObject, new List()
{
new BeatAction.Action(beat + beatOffset, delegate { rocketScript.Rise(); })
});
}
- public void LaunchPartyCracker(float beat, float beatOffset, int noteOne, int noteTwo, int noteThree, int noteFour, int noteFive, int noteSix)
+ public static void LaunchRocket(float beat, float beatOffset, int noteOne, int noteTwo, int noteThree, int noteFour)
{
- GameObject spawnedRocket = Instantiate(partyCracker, spawnPad, false);
- var rocketScript = spawnedRocket.GetComponent();
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteOne) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteTwo) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteThree) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteFour) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteFive) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteSix) * Conductor.instance.musicSource.pitch);
- rocketScript.InitPartyCracker(beat);
-
- BeatAction.New(instance.gameObject, new List()
+ List pitches = new List()
{
- new BeatAction.Action(beat + beatOffset, delegate { rocketScript.Rise(); })
- });
+ Mathf.Pow(2f, (1f / 12f) * noteOne) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteTwo) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteThree) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteFour) * Conductor.instance.musicSource.pitch
+ };
+ if (GameManager.instance.currentGame == "launchParty")
+ {
+ LaunchParty.instance.SpawnRocket(beat, beatOffset, RocketType.Family, pitches);
+ }
+ else
+ {
+ queuedRockets.Add(new QueuedRocket { beat = beat, offSet = beatOffset, notes = pitches, type = RocketType.Family});
+ }
}
- public void LaunchBell(float beat, float beatOffset, int noteOne, int noteTwo, int noteThree, int noteFour, int noteFive, int noteSix, int noteSeven, int noteEight, int noteNine)
+ public static void LaunchPartyCracker(float beat, float beatOffset, int noteOne, int noteTwo, int noteThree, int noteFour, int noteFive, int noteSix)
{
- GameObject spawnedRocket = Instantiate(bell, spawnPad, false);
- var rocketScript = spawnedRocket.GetComponent();
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteOne) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteTwo) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteThree) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteFour) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteFive) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteSix) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteSeven) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteEight) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteNine) * Conductor.instance.musicSource.pitch);
- rocketScript.InitBell(beat);
-
- BeatAction.New(instance.gameObject, new List()
+ List pitches = new List()
{
- new BeatAction.Action(beat + beatOffset, delegate { rocketScript.Rise(); })
- });
+ Mathf.Pow(2f, (1f / 12f) * noteOne) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteTwo) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteThree) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteFour) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteFive) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteSix) * Conductor.instance.musicSource.pitch,
+ };
+ if (GameManager.instance.currentGame == "launchParty")
+ {
+ LaunchParty.instance.SpawnRocket(beat, beatOffset, RocketType.Cracker, pitches);
+ }
+ else
+ {
+ queuedRockets.Add(new QueuedRocket { beat = beat, offSet = beatOffset, notes = pitches, type = RocketType.Cracker });
+ }
}
- public void LaunchBowlingPin(float beat, float beatOffset, int noteOne, int noteTwo, int noteThree, int noteFour, int noteFive, int noteSix, int noteSeven,
+ public static void LaunchBell(float beat, float beatOffset, int noteOne, int noteTwo, int noteThree, int noteFour, int noteFive, int noteSix, int noteSeven, int noteEight, int noteNine)
+ {
+ List pitches = new List()
+ {
+ Mathf.Pow(2f, (1f / 12f) * noteOne) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteTwo) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteThree) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteFour) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteFive) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteSix) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteSeven) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteEight) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteNine) * Conductor.instance.musicSource.pitch,
+ };
+ if (GameManager.instance.currentGame == "launchParty")
+ {
+ LaunchParty.instance.SpawnRocket(beat, beatOffset, RocketType.Bell, pitches);
+ }
+ else
+ {
+ queuedRockets.Add(new QueuedRocket { beat = beat, offSet = beatOffset, notes = pitches, type = RocketType.Bell });
+ }
+ }
+
+ public static void LaunchBowlingPin(float beat, float beatOffset, int noteOne, int noteTwo, int noteThree, int noteFour, int noteFive, int noteSix, int noteSeven,
int noteEight, int noteNine, int noteTen, int noteEleven, int noteTwelve, int noteThirteen, int noteFourteen, int noteFifteen)
{
- GameObject spawnedRocket = Instantiate(bowlingPin, spawnPad, false);
- var rocketScript = spawnedRocket.GetComponent();
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteOne) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteTwo) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteThree) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteFour) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteFive) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteSix) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteSeven) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteEight) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteNine) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteTen) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteEleven) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteTwelve) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteThirteen) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteFourteen) * Conductor.instance.musicSource.pitch);
- rocketScript.pitches.Add(Mathf.Pow(2f, (1f / 12f) * noteFifteen) * Conductor.instance.musicSource.pitch);
- rocketScript.InitBowlingPin(beat);
-
- BeatAction.New(instance.gameObject, new List()
+ List pitches = new List()
{
- new BeatAction.Action(beat + beatOffset, delegate { rocketScript.Rise(); })
- });
+ Mathf.Pow(2f, (1f / 12f) * noteOne) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteTwo) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteThree) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteFour) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteFive) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteSix) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteSeven) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteEight) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteNine) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteTen) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteEleven) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteTwelve) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteThirteen) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteFourteen) * Conductor.instance.musicSource.pitch,
+ Mathf.Pow(2f, (1f / 12f) * noteFifteen) * Conductor.instance.musicSource.pitch,
+ };
+ if (GameManager.instance.currentGame == "launchParty")
+ {
+ LaunchParty.instance.SpawnRocket(beat, beatOffset, RocketType.BowlingPin, pitches);
+ }
+ else
+ {
+ queuedRockets.Add(new QueuedRocket { beat = beat, offSet = beatOffset, notes = pitches, type = RocketType.BowlingPin });
+ }
}
public void CreateParticles(float beat, bool toggle, float starDensity, float starSpeed, float starSpeedBack)
@@ -430,11 +512,6 @@ namespace HeavenStudio.Games
break;
}
}
-
- public void Nothing()
- {
-
- }
}
}
diff --git a/Assets/Scripts/Games/LaunchParty/LaunchPartyRocket.cs b/Assets/Scripts/Games/LaunchParty/LaunchPartyRocket.cs
index 309558348..c5861fd33 100644
--- a/Assets/Scripts/Games/LaunchParty/LaunchPartyRocket.cs
+++ b/Assets/Scripts/Games/LaunchParty/LaunchPartyRocket.cs
@@ -31,6 +31,7 @@ namespace HeavenStudio.Games.Scripts_LaunchParty
void Update()
{
+ if (GameManager.instance.currentGame != "launchParty") Destroy(gameObject);
if (PlayerInput.Pressed() && !game.IsExpectingInputNow(InputType.STANDARD_DOWN) && !noInput)
{
Jukebox.PlayOneShotGame("launchParty/miss");