working dough converted, need to fix eveerything though

This commit is contained in:
Rapandrasmus 2023-06-12 20:38:48 +02:00
parent db21d51673
commit af0d9bae19
3 changed files with 99 additions and 145 deletions

View File

@ -37,8 +37,7 @@ namespace HeavenStudio.Games.Loaders
}, },
new GameAction("passTurn", "Pass Turn") new GameAction("passTurn", "Pass Turn")
{ {
function = delegate { var e = eventCaller.currentEntity; RhythmTweezers.instance.PassTurn(e.beat, e.length); }, function = delegate { var e = eventCaller.currentEntity; RhythmTweezers.instance.PassTurn(e.beat); },
resizable = true,
preFunction = delegate { var e = eventCaller.currentEntity; RhythmTweezers.PrePassTurn(e.beat, e.length); } preFunction = delegate { var e = eventCaller.currentEntity; RhythmTweezers.PrePassTurn(e.beat, e.length); }
}, },
new GameAction("next vegetable", "Swap Vegetable") new GameAction("next vegetable", "Swap Vegetable")
@ -349,7 +348,7 @@ namespace HeavenStudio.Games
crHandlerInstance.StartInterval(beat, interval); crHandlerInstance.StartInterval(beat, interval);
} }
public void PassTurn(double beat, float length) public void PassTurn(double beat)
{ {
if (crHandlerInstance.queuedEvents.Count > 0) if (crHandlerInstance.queuedEvents.Count > 0)
{ {
@ -359,18 +358,18 @@ namespace HeavenStudio.Games
if (crEvent.tag == "Hair") if (crEvent.tag == "Hair")
{ {
Hair hairToInput = spawnedHairs.Find(x => x.createBeat == crEvent.beat); Hair hairToInput = spawnedHairs.Find(x => x.createBeat == crEvent.beat);
hairToInput.StartInput(beat + length, crEvent.relativeBeat); hairToInput.StartInput(beat + 1, crEvent.relativeBeat);
} }
else if (crEvent.tag == "Long") else if (crEvent.tag == "Long")
{ {
LongHair hairToInput = spawnedLongs.Find(x => x.createBeat == crEvent.beat); LongHair hairToInput = spawnedLongs.Find(x => x.createBeat == crEvent.beat);
hairToInput.StartInput(beat + length, crEvent.relativeBeat); hairToInput.StartInput(beat + 1, crEvent.relativeBeat);
} }
} }
crHandlerInstance.queuedEvents.Clear(); crHandlerInstance.queuedEvents.Clear();
BeatAction.New(instance.gameObject, new List<BeatAction.Action>() BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
{ {
new BeatAction.Action(beat + length, delegate new BeatAction.Action(beat + 1, delegate
{ {
if (crHandlerInstance.queuedEvents.Count > 0) if (crHandlerInstance.queuedEvents.Count > 0)
{ {
@ -380,12 +379,12 @@ namespace HeavenStudio.Games
if (crEvent.tag == "Hair") if (crEvent.tag == "Hair")
{ {
Hair hairToInput = spawnedHairs.Find(x => x.createBeat == crEvent.beat); Hair hairToInput = spawnedHairs.Find(x => x.createBeat == crEvent.beat);
hairToInput.StartInput(beat + length, crEvent.relativeBeat); hairToInput.StartInput(beat + 1, crEvent.relativeBeat);
} }
else if (crEvent.tag == "Long") else if (crEvent.tag == "Long")
{ {
LongHair hairToInput = spawnedLongs.Find(x => x.createBeat == crEvent.beat); LongHair hairToInput = spawnedLongs.Find(x => x.createBeat == crEvent.beat);
hairToInput.StartInput(beat + length, crEvent.relativeBeat); hairToInput.StartInput(beat + 1, crEvent.relativeBeat);
} }
} }
crHandlerInstance.queuedEvents.Clear(); crHandlerInstance.queuedEvents.Clear();

View File

@ -113,7 +113,7 @@ namespace HeavenStudio.Games.Loaders
}, },
new GameAction("passTurn", "Pass Turn") new GameAction("passTurn", "Pass Turn")
{ {
function = delegate { var e = eventCaller.currentEntity; Rockers.instance.PassTurn(e.beat, e.length, e["moveCamera"]); }, function = delegate { var e = eventCaller.currentEntity; Rockers.instance.PassTurn(e.beat, e["moveCamera"]); },
resizable = true, resizable = true,
parameters = new List<Param> parameters = new List<Param>
{ {
@ -972,7 +972,7 @@ namespace HeavenStudio.Games
} }
} }
public void PassTurn(double beat, float length, bool moveCamera) public void PassTurn(double beat, bool moveCamera)
{ {
if (crHandlerInstance.queuedEvents.Count > 0) if (crHandlerInstance.queuedEvents.Count > 0)
{ {
@ -983,21 +983,21 @@ namespace HeavenStudio.Games
if (crEvent.tag == "riff") if (crEvent.tag == "riff")
{ {
RockersInput riffComp = Instantiate(rockerInputRef, transform); RockersInput riffComp = Instantiate(rockerInputRef, transform);
riffComp.Init(crEvent["gleeClub"], new int[6] { crEvent["1"], crEvent["2"], crEvent["3"], crEvent["4"], crEvent["5"], crEvent["6"] }, beat, length + crEvent.relativeBeat, riffComp.Init(crEvent["gleeClub"], new int[6] { crEvent["1"], crEvent["2"], crEvent["3"], crEvent["4"], crEvent["5"], crEvent["6"] }, beat, 1 + crEvent.relativeBeat,
(PremadeSamples)crEvent["sample"], crEvent["sampleTones"]); (PremadeSamples)crEvent["sample"], crEvent["sampleTones"]);
ScheduleInput(beat, length + crEvent.relativeBeat + crEvent.length, InputType.STANDARD_DOWN, JustMute, MuteMiss, Empty); ScheduleInput(beat, 1 + crEvent.relativeBeat + crEvent.length, InputType.STANDARD_DOWN, JustMute, MuteMiss, Empty);
} }
else if (crEvent.tag == "bend") else if (crEvent.tag == "bend")
{ {
RockerBendInput bendComp = Instantiate(rockerBendInputRef, transform); RockerBendInput bendComp = Instantiate(rockerBendInputRef, transform);
bendComp.Init(crEvent["Pitch"], beat, length + crEvent.relativeBeat); bendComp.Init(crEvent["Pitch"], beat, 1 + crEvent.relativeBeat);
ScheduleInput(beat, length + crEvent.relativeBeat + crEvent.length, InputType.DIRECTION_UP, JustUnBend, UnBendMiss, Empty); ScheduleInput(beat, 1 + crEvent.relativeBeat + crEvent.length, InputType.DIRECTION_UP, JustUnBend, UnBendMiss, Empty);
} }
} }
crHandlerInstance.queuedEvents.Clear(); crHandlerInstance.queuedEvents.Clear();
BeatAction.New(instance.gameObject, new List<BeatAction.Action>() BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
{ {
new BeatAction.Action(beat + length, delegate new BeatAction.Action(beat + 1, delegate
{ {
JJ.UnHold(); JJ.UnHold();
if (crHandlerInstance.queuedEvents.Count > 0) if (crHandlerInstance.queuedEvents.Count > 0)
@ -1009,15 +1009,15 @@ namespace HeavenStudio.Games
if (crEvent.tag == "riff") if (crEvent.tag == "riff")
{ {
RockersInput riffComp = Instantiate(rockerInputRef, transform); RockersInput riffComp = Instantiate(rockerInputRef, transform);
riffComp.Init(crEvent["gleeClub"], new int[6] { crEvent["1"], crEvent["2"], crEvent["3"], crEvent["4"], crEvent["5"], crEvent["6"] }, beat, length + crEvent.relativeBeat, riffComp.Init(crEvent["gleeClub"], new int[6] { crEvent["1"], crEvent["2"], crEvent["3"], crEvent["4"], crEvent["5"], crEvent["6"] }, beat, 1 + crEvent.relativeBeat,
(PremadeSamples)crEvent["sample"], crEvent["sampleTones"]); (PremadeSamples)crEvent["sample"], crEvent["sampleTones"]);
ScheduleInput(beat, length + crEvent.relativeBeat + crEvent.length, InputType.STANDARD_DOWN, JustMute, MuteMiss, Empty); ScheduleInput(beat, 1 + crEvent.relativeBeat + crEvent.length, InputType.STANDARD_DOWN, JustMute, MuteMiss, Empty);
} }
else if (crEvent.tag == "bend") else if (crEvent.tag == "bend")
{ {
RockerBendInput bendComp = Instantiate(rockerBendInputRef, transform); RockerBendInput bendComp = Instantiate(rockerBendInputRef, transform);
bendComp.Init(crEvent["Pitch"], beat, length + crEvent.relativeBeat); bendComp.Init(crEvent["Pitch"], beat, 1 + crEvent.relativeBeat);
ScheduleInput(beat, length + crEvent.relativeBeat + crEvent.length, InputType.DIRECTION_UP, JustUnBend, UnBendMiss, Empty); ScheduleInput(beat, 1 + crEvent.relativeBeat + crEvent.length, InputType.DIRECTION_UP, JustUnBend, UnBendMiss, Empty);
} }
} }
crHandlerInstance.queuedEvents.Clear(); crHandlerInstance.queuedEvents.Clear();

View File

@ -15,25 +15,28 @@ namespace HeavenStudio.Games.Loaders
{ {
new GameAction("beat intervals", "Start Interval") new GameAction("beat intervals", "Start Interval")
{ {
function = delegate { var e = eventCaller.currentEntity; WorkingDough.instance.SetIntervalStart(e.beat, e.length); },
preFunction = delegate { var e = eventCaller.currentEntity; WorkingDough.PreSetIntervalStart(e.beat, e.length); }, preFunction = delegate { var e = eventCaller.currentEntity; WorkingDough.PreSetIntervalStart(e.beat, e.length); },
defaultLength = 8f, defaultLength = 8f,
resizable = true, resizable = true,
priority = 2 priority = 2,
}, },
new GameAction("small ball", "Small Ball") new GameAction("small ball", "Small Ball")
{ {
function = delegate { var e = eventCaller.currentEntity; WorkingDough.instance.OnSpawnBall(e.beat, false); },
preFunction = delegate { var e = eventCaller.currentEntity; WorkingDough.PreSpawnBall(e.beat, false); }, preFunction = delegate { var e = eventCaller.currentEntity; WorkingDough.PreSpawnBall(e.beat, false); },
defaultLength = 0.5f, defaultLength = 0.5f,
priority = 1 priority = 1,
inactiveFunction = delegate { var e = eventCaller.currentEntity; WorkingDough.OnSpawnBallInactive(e.beat, false); },
}, },
new GameAction("big ball", "Big Ball") new GameAction("big ball", "Big Ball")
{ {
function = delegate { var e = eventCaller.currentEntity; WorkingDough.instance.OnSpawnBall(e.beat, true); },
preFunction = delegate { var e = eventCaller.currentEntity; WorkingDough.PreSpawnBall(e.beat, true); }, preFunction = delegate { var e = eventCaller.currentEntity; WorkingDough.PreSpawnBall(e.beat, true); },
defaultLength = 0.5f, defaultLength = 0.5f,
priority = 1 priority = 1,
inactiveFunction = delegate { var e = eventCaller.currentEntity; WorkingDough.OnSpawnBallInactive(e.beat, true); },
},
new GameAction("passTurn", "Pass Turn")
{
function = delegate { WorkingDough.instance.PassTurn(eventCaller.currentEntity.beat); }
}, },
new GameAction("launch spaceship", "Launch Spaceship") new GameAction("launch spaceship", "Launch Spaceship")
{ {
@ -139,13 +142,10 @@ namespace HeavenStudio.Games
[SerializeField] Animator gandwAnim; [SerializeField] Animator gandwAnim;
[Header("Variables")] [Header("Variables")]
public bool intervalStarted;
double intervalStartBeat;
float risingLength = 4f; float risingLength = 4f;
double risingStartBeat; double risingStartBeat;
float liftingLength = 4f; float liftingLength = 4f;
double liftingStartBeat; double liftingStartBeat;
public static float beatInterval = 8f;
float gandMovingLength = 4f; float gandMovingLength = 4f;
double gandMovingStartBeat; double gandMovingStartBeat;
public bool bigMode; public bool bigMode;
@ -156,17 +156,10 @@ namespace HeavenStudio.Games
public double beat; public double beat;
public bool isBig; public bool isBig;
} }
static List<QueuedInterval> queuedIntervals = new List<QueuedInterval>();
struct QueuedInterval
{
public double beat;
public float interval;
}
public bool spaceshipRisen = false; public bool spaceshipRisen = false;
public bool spaceshipRising = false; public bool spaceshipRising = false;
bool liftingDoughDudes; bool liftingDoughDudes;
string liftingAnimName; string liftingAnimName;
bool ballTriggerSetInterval = true;
bool gandwHasEntered = true; bool gandwHasEntered = true;
bool gandwMoving; bool gandwMoving;
string gandwMovingAnimName; string gandwMovingAnimName;
@ -201,40 +194,47 @@ namespace HeavenStudio.Games
public Sprite redArrowSprite; public Sprite redArrowSprite;
public static WorkingDough instance; public static WorkingDough instance;
private static CallAndResponseHandler crHandlerInstance;
void Awake() void Awake()
{ {
if (crHandlerInstance == null)
{
crHandlerInstance = new CallAndResponseHandler(8);
}
instance = this; instance = this;
} }
void Start() void Start()
{ {
ballTriggerSetInterval = true;
conveyerAnimator.Play("ConveyerBelt", 0, 0); conveyerAnimator.Play("ConveyerBelt", 0, 0);
doughDudesHolderAnim.Play("OnGround", 0, 0); doughDudesHolderAnim.Play("OnGround", 0, 0);
} }
public void SetIntervalStart(double beat, float interval) public void SetIntervalStart(double beat, float interval)
{ {
Debug.Log("Start Interval"); if (!crHandlerInstance.IntervalIsActive())
if (!intervalStarted)
{ {
instance.ballTriggerSetInterval = false;
intervalStarted = true;
bigMode = false; bigMode = false;
BeatAction.New(ballTransporterLeftNPC, new List<BeatAction.Action>() BeatAction.New(ballTransporterLeftNPC, new List<BeatAction.Action>()
{ {
new BeatAction.Action(beat - 1, delegate
{
if (!instance.ballTransporterLeftNPC.GetComponent<Animator>().IsPlayingAnimationName("BallTransporterLeftOpened"))
{
instance.ballTransporterLeftNPC.GetComponent<Animator>().Play("BallTransporterLeftOpen", 0, 0);
instance.ballTransporterRightNPC.GetComponent<Animator>().Play("BallTransporterRightOpen", 0, 0);
if (instance.gandwHasEntered) instance.gandwAnim.Play("GANDWLeverUp", 0, 0);
}
}),
//Open player transporters //Open player transporters
/*
new BeatAction.Action(beat + interval - 1f, delegate { new BeatAction.Action(beat + interval - 1f, delegate {
ballTransporterLeftPlayer.GetComponent<Animator>().Play("BallTransporterLeftOpen", 0, 0); ballTransporterLeftPlayer.GetComponent<Animator>().Play("BallTransporterLeftOpen", 0, 0);
}), }),
new BeatAction.Action(beat + interval - 1f, delegate { new BeatAction.Action(beat + interval - 1f, delegate {
ballTransporterRightPlayer.GetComponent<Animator>().Play("BallTransporterRightOpen", 0, 0); ballTransporterRightPlayer.GetComponent<Animator>().Play("BallTransporterRightOpen", 0, 0);
}), }),*/
//End interval
new BeatAction.Action(beat + interval, delegate { intervalStarted = false; }),
new BeatAction.Action(beat + interval, delegate {ballTriggerSetInterval = true; }),
//Close npc transporters //Close npc transporters
new BeatAction.Action(beat + interval, delegate { new BeatAction.Action(beat + interval, delegate {
@ -244,6 +244,7 @@ namespace HeavenStudio.Games
bigMode = false; bigMode = false;
} }
}), }),
/*
new BeatAction.Action(beat + interval + 1, delegate { if (!intervalStarted) ballTransporterLeftNPC.GetComponent<Animator>().Play("BallTransporterLeftClose", 0, 0); }), new BeatAction.Action(beat + interval + 1, delegate { if (!intervalStarted) ballTransporterLeftNPC.GetComponent<Animator>().Play("BallTransporterLeftClose", 0, 0); }),
new BeatAction.Action(beat + interval + 1, delegate { if (!intervalStarted) ballTransporterRightNPC.GetComponent<Animator>().Play("BallTransporterRightClose", 0, 0); }), new BeatAction.Action(beat + interval + 1, delegate { if (!intervalStarted) ballTransporterRightNPC.GetComponent<Animator>().Play("BallTransporterRightClose", 0, 0); }),
new BeatAction.Action(beat + interval + 1, delegate { if (gandwHasEntered) gandwAnim.Play("MrGameAndWatchLeverDown", 0, 0); }), new BeatAction.Action(beat + interval + 1, delegate { if (gandwHasEntered) gandwAnim.Play("MrGameAndWatchLeverDown", 0, 0); }),
@ -257,18 +258,41 @@ namespace HeavenStudio.Games
bigModePlayer = false; bigModePlayer = false;
} }
}), }),
*/
});
}
crHandlerInstance.StartInterval(beat, interval);
}
public void PassTurn(double beat)
{
if (crHandlerInstance.queuedEvents.Count > 0)
{
foreach (var ball in crHandlerInstance.queuedEvents)
{
SpawnPlayerBall(beat + ball.relativeBeat, ball.tag == "big");
}
crHandlerInstance.queuedEvents.Clear();
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
{
new BeatAction.Action(beat + 1, delegate
{
if (crHandlerInstance.queuedEvents.Count > 0)
{
foreach (var ball in crHandlerInstance.queuedEvents)
{
SpawnPlayerBall(beat + ball.relativeBeat, ball.tag == "big");
}
crHandlerInstance.queuedEvents.Clear();
}
})
}); });
} }
beatInterval = interval;
intervalStartBeat = beat;
} }
public void SpawnBall(double beat, bool isBig) public void SpawnBall(double beat, bool isBig)
{ {
if (!intervalStarted && ballTriggerSetInterval) crHandlerInstance.AddEvent(beat, 0, isBig ? "big" : "small");
{
SetIntervalStart(beat, beatInterval);
}
var objectToSpawn = isBig ? bigBallNPC : smallBallNPC; var objectToSpawn = isBig ? bigBallNPC : smallBallNPC;
var spawnedBall = GameObject.Instantiate(objectToSpawn, ballHolder); var spawnedBall = GameObject.Instantiate(objectToSpawn, ballHolder);
@ -300,35 +324,9 @@ namespace HeavenStudio.Games
}); });
} }
public void InstantExitBall(double beat, bool isBig, double offSet) public void OnSpawnBall(double beat, bool isBig)
{ {
var objectToSpawn = isBig ? bigBallNPC : smallBallNPC;
var spawnedBall = GameObject.Instantiate(objectToSpawn, ballHolder);
var ballComponent = spawnedBall.GetComponent<NPCDoughBall>();
ballComponent.Init(beat);
if (isBig && !bigMode)
{
bigMode = true;
}
if (beat >= Conductor.instance.songPositionInBeatsAsDouble)
{
MultiSound.Play(new MultiSound.Sound[] {
new MultiSound.Sound(isBig ? "workingDough/NPCBigBall" : "workingDough/NPCSmallBall", beat),
});
}
BeatAction.New(doughDudesNPC, new List<BeatAction.Action>()
{
new BeatAction.Action(beat - offSet, delegate { spawnedBall.SetActive(true); }),
new BeatAction.Action(beat, delegate { doughDudesNPC.GetComponent<Animator>().Play(isBig ? "BigDoughJump" : "SmallDoughJump", 0, 0); } ),
new BeatAction.Action(beat, delegate { npcImpact.SetActive(true); } ),
new BeatAction.Action(beat + 0.1f, delegate { npcImpact.SetActive(false); }),
new BeatAction.Action(beat + 0.9f, delegate { arrowSRRightNPC.sprite = redArrowSprite; }),
new BeatAction.Action(beat + 1f, delegate { arrowSRRightNPC.sprite = whiteArrowSprite; }),
});
} }
public static void PreSpawnBall(double beat, bool isBig) public static void PreSpawnBall(double beat, bool isBig)
@ -341,7 +339,7 @@ namespace HeavenStudio.Games
{ {
new BeatAction.Action(spawnBeat, delegate new BeatAction.Action(spawnBeat, delegate
{ {
if (!instance.ballTransporterLeftNPC.GetComponent<Animator>().IsPlayingAnimationName("BallTransporterLeftOpened") && !instance.intervalStarted && instance.ballTriggerSetInterval) if (!instance.ballTransporterLeftNPC.GetComponent<Animator>().IsPlayingAnimationName("BallTransporterLeftOpened") && !crHandlerInstance.IntervalIsActive())
{ {
instance.ballTransporterLeftNPC.GetComponent<Animator>().Play("BallTransporterLeftOpen", 0, 0); instance.ballTransporterLeftNPC.GetComponent<Animator>().Play("BallTransporterLeftOpen", 0, 0);
instance.ballTransporterRightNPC.GetComponent<Animator>().Play("BallTransporterRightOpen", 0, 0); instance.ballTransporterRightNPC.GetComponent<Animator>().Play("BallTransporterRightOpen", 0, 0);
@ -362,22 +360,22 @@ namespace HeavenStudio.Games
} }
} }
public void OnSpawnBall(double beat, bool isBig) public static void OnSpawnBallInactive(double beat, bool isBig)
{ {
beat -= 1f; if (crHandlerInstance == null)
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
{ {
new BeatAction.Action(beat + beatInterval, delegate { instance.SpawnPlayerBall(beat + beatInterval, isBig); }), crHandlerInstance = new CallAndResponseHandler(8);
}); }
crHandlerInstance.AddEvent(beat, 0, isBig ? "big" : "small");
} }
public void OnSpawnBallInactive(double beat, bool isBig) public static void InactiveInterval(double beat, float interval)
{ {
queuedBalls.Add(new QueuedBall() if (crHandlerInstance == null)
{ {
beat = beat + 1f, crHandlerInstance = new CallAndResponseHandler(8);
isBig = isBig, }
}); crHandlerInstance.StartInterval(beat, interval);
} }
public void SpawnPlayerBall(double beat, bool isBig) public void SpawnPlayerBall(double beat, bool isBig)
@ -404,38 +402,24 @@ namespace HeavenStudio.Games
public static void PreSetIntervalStart(double beat, float interval) public static void PreSetIntervalStart(double beat, float interval)
{ {
beat -= 1f;
if (GameManager.instance.currentGame == "workingDough") if (GameManager.instance.currentGame == "workingDough")
{ {
// instance.ballTriggerSetInterval = false; // instance.ballTriggerSetInterval = false;
// beatInterval = interval; // beatInterval = interval;
BeatAction.New(instance.gameObject, new List<BeatAction.Action>() instance.SetIntervalStart(beat, interval);
{
new BeatAction.Action(beat, delegate
{
if (!instance.ballTransporterLeftNPC.GetComponent<Animator>().IsPlayingAnimationName("BallTransporterLeftOpened"))
{
instance.ballTransporterLeftNPC.GetComponent<Animator>().Play("BallTransporterLeftOpen", 0, 0);
instance.ballTransporterRightNPC.GetComponent<Animator>().Play("BallTransporterRightOpen", 0, 0);
if (instance.gandwHasEntered) instance.gandwAnim.Play("GANDWLeverUp", 0, 0);
}
}),
// new BeatAction.Action(beat + 1, delegate { if (instance != null) instance.SetIntervalStart(beat + 1, interval); }),
});
} }
else else
{ {
queuedIntervals.Add(new QueuedInterval() InactiveInterval(beat, interval);
{
beat = beat + 1f,
interval = interval,
});
} }
} }
void OnDestroy() void OnDestroy()
{ {
if (queuedIntervals.Count > 0) queuedIntervals.Clear(); if (crHandlerInstance != null && !Conductor.instance.isPlaying)
{
crHandlerInstance = null;
}
if (queuedBalls.Count > 0) queuedBalls.Clear(); if (queuedBalls.Count > 0) queuedBalls.Clear();
foreach (var evt in scheduledInputs) foreach (var evt in scheduledInputs)
{ {
@ -448,51 +432,24 @@ namespace HeavenStudio.Games
Conductor cond = Conductor.instance; Conductor cond = Conductor.instance;
if (!cond.isPlaying || cond.isPaused) if (!cond.isPlaying || cond.isPaused)
{ {
if (queuedIntervals.Count > 0) queuedIntervals.Clear();
if (queuedBalls.Count > 0) queuedBalls.Clear(); if (queuedBalls.Count > 0) queuedBalls.Clear();
} }
if (spaceshipRising) spaceshipAnimator.DoScaledAnimation("RiseSpaceship", risingStartBeat, risingLength); if (spaceshipRising) spaceshipAnimator.DoScaledAnimation("RiseSpaceship", risingStartBeat, risingLength);
if (liftingDoughDudes) doughDudesHolderAnim.DoScaledAnimation(liftingAnimName, liftingStartBeat, liftingLength); if (liftingDoughDudes) doughDudesHolderAnim.DoScaledAnimation(liftingAnimName, liftingStartBeat, liftingLength);
if (gandwMoving) gandwAnim.DoScaledAnimation(gandwMovingAnimName, gandMovingStartBeat, gandMovingLength); if (gandwMoving) gandwAnim.DoScaledAnimation(gandwMovingAnimName, gandMovingStartBeat, gandMovingLength);
if (queuedIntervals.Count > 0)
{
foreach (var interval in queuedIntervals)
{
ballTriggerSetInterval = false;
beatInterval = interval.interval;
ballTransporterLeftNPC.GetComponent<Animator>().Play("BallTransporterLeftOpened", 0, 0);
ballTransporterRightNPC.GetComponent<Animator>().Play("BallTransporterRightOpened", 0, 0);
if (gandwHasEntered) gandwAnim.Play("GANDWLeverUp", 0, 0);
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
{
new BeatAction.Action(interval.beat, delegate { SetIntervalStart(interval.beat, interval.interval); }),
});
}
queuedIntervals.Clear();
}
if (queuedBalls.Count > 0) if (queuedBalls.Count > 0)
{ {
foreach (var ball in queuedBalls) foreach (var ball in queuedBalls)
{ {
double offSet = ball.beat - cond.songPositionInBeatsAsDouble;
double spawnOffset = offSet > 1f ? offSet - 1 : 0;
if (ball.isBig) NPCBallTransporters.GetComponent<Animator>().Play("BigMode", 0, 0); if (ball.isBig) NPCBallTransporters.GetComponent<Animator>().Play("BigMode", 0, 0);
BeatAction.New(instance.gameObject, new List<BeatAction.Action>() if (!crHandlerInstance.IntervalIsActive())
{
new BeatAction.Action(ball.beat - offSet + spawnOffset, delegate {
if (!intervalStarted && ballTriggerSetInterval)
{ {
ballTransporterLeftNPC.GetComponent<Animator>().Play("BallTransporterLeftOpened", 0, 0); ballTransporterLeftNPC.GetComponent<Animator>().Play("BallTransporterLeftOpened", 0, 0);
ballTransporterRightNPC.GetComponent<Animator>().Play("BallTransporterRightOpened", 0, 0); ballTransporterRightNPC.GetComponent<Animator>().Play("BallTransporterRightOpened", 0, 0);
if (gandwHasEntered) gandwAnim.Play("GANDWLeverUp", 0, 0); if (gandwHasEntered) gandwAnim.Play("GANDWLeverUp", 0, 0);
SetIntervalStart(ball.beat, beatInterval);
} }
}), SpawnBall(ball.beat, ball.isBig);
new BeatAction.Action(ball.beat - offSet + spawnOffset, delegate { InstantExitBall(ball.beat, ball.isBig, offSet); }),
new BeatAction.Action(ball.beat + beatInterval - 1, delegate { SpawnPlayerBall(ball.beat + beatInterval - 1, ball.isBig); }),
});
} }
queuedBalls.Clear(); queuedBalls.Clear();
@ -596,7 +553,5 @@ namespace HeavenStudio.Games
gandwAnim.Play(shouldExit ? "GANDWLeft" : "MrGameAndWatchLeverDown", 0, 0); gandwAnim.Play(shouldExit ? "GANDWLeft" : "MrGameAndWatchLeverDown", 0, 0);
gandwHasEntered = shouldExit ? false : true; gandwHasEntered = shouldExit ? false : true;
} }
void Nothing (PlayerActionEvent caller) {}
} }
} }