Separated time sequence finish

This commit is contained in:
2025-12-24 19:09:49 +01:00
parent 43ee68dc44
commit 8e9936274f
19 changed files with 224 additions and 114 deletions

View File

@@ -134,14 +134,14 @@ namespace Marro.PacManUdon
private void StartAttractMode()
{
#if RECORDING_DEMO
// #if RECORDING_DEMO
// recorder.gameObject.SetActive(true);
StartTimeSequence(PacManTimeSequence.AttractScreenIntroduction);
#else
SetGameState(PacManGameState.AttractMode);
HideEverything();
demo.gameObject.SetActive(true);
#endif
// #else
// SetGameState(PacManGameState.AttractMode);
// HideEverything();
// demo.gameObject.SetActive(true);
// #endif
}
private void InitializeNewGame()
@@ -499,6 +499,7 @@ namespace Marro.PacManUdon
// I'm not redoing this unless I get instantiatable classes before I wrap up this project.
bool currentlyInTimeSequence;
bool waitingForTimeSequencefinish;
PacManTimeSequence currentTimeSequence;
bool hasTimeSequenceQueued;
private DataList timeSequenceQueue;
@@ -589,11 +590,24 @@ namespace Marro.PacManUdon
if (timeSequenceProgress >= timeSequenceKeyframeTimes.Length)
{
currentlyInTimeSequence = false;
TimeSequencePrepareForFinish();
break;
}
}
}
private void TimeSequencePrepareForFinish()
{
if (Networking.IsOwner(gameObject))
{
TimeSequenceExecuteFinish();
}
else
{
waitingForTimeSequencefinish = true;
}
}
private void TimeSequenceExecuteStep(int sequenceProgress)
{
// Debug.Log($"{gameObject} Triggered time sequence step for sequence {currentTimeSequence} with progress {sequenceProgress}");
@@ -611,9 +625,6 @@ namespace Marro.PacManUdon
case PacManTimeSequence.WaitForStart:
TimeSequenceStepWaitForStart(sequenceProgress);
break;
case PacManTimeSequence.WaitForStartTimeout:
TimeSequenceStepWaitForStartTimeout(sequenceProgress);
break;
case PacManTimeSequence.StartNewGame:
TimeSequenceStepStartNewGame(sequenceProgress);
break;
@@ -644,6 +655,66 @@ namespace Marro.PacManUdon
case PacManTimeSequence.Intermission3:
TimeSequenceStepIntermission3(sequenceProgress);
break;
case PacManTimeSequence.AttractScreenWaitToRestart:
case PacManTimeSequence.WaitForStartTimeout:
// These only have a finished state
break;
}
}
private void TimeSequenceExecuteFinish()
{
// Debug.Log($"{gameObject} Triggered time sequence step for sequence {currentTimeSequence} with progress {sequenceProgress}");
switch (currentTimeSequence)
{
default:
Debug.LogError($"{gameObject} No time sequence finish known for sequence {currentTimeSequence}");
break;
case PacManTimeSequence.AttractScreenIntroduction:
TimeSequenceFinishedAttractScreenIntroduction();
break;
case PacManTimeSequence.AttractScreenDemo:
TimeSequenceFinishedAttractScreenDemo();
break;
case PacManTimeSequence.AttractScreenWaitToRestart:
TimeSequenceFinishedAttractScreenWaitToRestart();
break;
case PacManTimeSequence.WaitForStart:
TimeSequenceFinishedWaitForStart();
break;
case PacManTimeSequence.WaitForStartTimeout:
TimeSequenceFinishedWaitForStart();
break;
case PacManTimeSequence.StartNewGame:
TimeSequenceFinishedStartNewGame();
break;
case PacManTimeSequence.BoardClear:
TimeSequenceFinishedBoardClear();
break;
case PacManTimeSequence.StartNewLevel:
TimeSequenceFinishedStartNewLevel();
break;
case PacManTimeSequence.GhostCaught:
TimeSequenceFinishedGhostCaught();
break;
case PacManTimeSequence.PacManCaught:
TimeSequenceFinishedPacManCaught();
break;
case PacManTimeSequence.RestartLevel:
TimeSequenceFinishedRestartLevel();
break;
case PacManTimeSequence.GameOver:
TimeSequenceFinishedGameOver();
break;
case PacManTimeSequence.Intermission1:
TimeSequenceFinishedIntermission1();
break;
case PacManTimeSequence.Intermission2:
TimeSequenceFinishedIntermission2();
break;
case PacManTimeSequence.Intermission3:
TimeSequenceFinishedIntermission3();
break;
}
}
@@ -659,10 +730,10 @@ namespace Marro.PacManUdon
5f, 0.2f, 2f, 0.91667f, 2f, 0.91667f, 2f, 0.91667f, 2f, 0.91667f });
case PacManTimeSequence.AttractScreenDemo:
return DeltaToAbsolute(new float[] { 0, 0.016f, 0.05f, 0.16f, 0.33f, 1.85f, 54f });
case PacManTimeSequence.AttractScreenWaitToRestart:
return DeltaToAbsolute(new float[] { 0, 2f });
case PacManTimeSequence.WaitForStart:
return DeltaToAbsolute(new float[] { 0, 0.016f });
case PacManTimeSequence.WaitForStartTimeout:
return DeltaToAbsolute(new float[] { 0, 5f });
case PacManTimeSequence.StartNewGame:
return DeltaToAbsolute(new float[] { 0, 0.016f, 2.2f, 0.032f, 0.032f, 1.92f, 0.032f });
case PacManTimeSequence.BoardClear:
@@ -672,7 +743,7 @@ namespace Marro.PacManUdon
case PacManTimeSequence.GhostCaught:
return DeltaToAbsolute(new float[] { 0, 0.91667f });
case PacManTimeSequence.PacManCaught:
return DeltaToAbsolute(new float[] { 0, 1, 0.35f, 2.40f, 2f });
return DeltaToAbsolute(new float[] { 0, 1, 0.35f, 2.40f });
case PacManTimeSequence.RestartLevel:
return DeltaToAbsolute(new float[] { 0, 0.016f, 0.064f, 0.032f, 1.85f, 0.016f });
case PacManTimeSequence.GameOver: