diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index feda395..23ff9bf 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -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: diff --git a/Assets/Scripts/PacManConstants.cs b/Assets/Scripts/PacManConstants.cs index 168603e..8c0534e 100644 --- a/Assets/Scripts/PacManConstants.cs +++ b/Assets/Scripts/PacManConstants.cs @@ -34,6 +34,7 @@ namespace Marro.PacManUdon { AttractScreenIntroduction, AttractScreenDemo, + AttractScreenWaitToRestart, WaitForStart, WaitForStartTimeout, StartNewGame, diff --git a/Assets/Scripts/Sequences/AttractScreenDemo.cs b/Assets/Scripts/Sequences/AttractScreenDemo.cs index 7352362..d358899 100644 --- a/Assets/Scripts/Sequences/AttractScreenDemo.cs +++ b/Assets/Scripts/Sequences/AttractScreenDemo.cs @@ -338,13 +338,14 @@ namespace Marro.PacManUdon // Unfreeze SetFrozen(false); break; - // case 6: - // if (!hasTimeSequenceQueued) - // { - // StartTimeSequence(PacManTimeSequence.AttractScreenWaitForStart); - // } - // break; + case 6: + break; } } + + private void TimeSequenceFinishedAttractScreenDemo() + { + StartTimeSequence(PacManTimeSequence.AttractScreenWaitToRestart); + } } } diff --git a/Assets/Scripts/Sequences/AttractScreenIntroduction.cs b/Assets/Scripts/Sequences/AttractScreenIntroduction.cs index 7212f3c..461291c 100644 --- a/Assets/Scripts/Sequences/AttractScreenIntroduction.cs +++ b/Assets/Scripts/Sequences/AttractScreenIntroduction.cs @@ -165,15 +165,15 @@ namespace Marro.PacManUdon case 26: ghostManager.Ghosts[3].ReturnHome(); ghostManager.Ghosts[3].SetActive(false); - // Hide elements, start demo - attractScreen.gameObject.SetActive(false); - - if (!hasTimeSequenceQueued) - { - StartTimeSequence(PacManTimeSequence.AttractScreenDemo); - } break; } } + + private void TimeSequenceFinishedAttractScreenIntroduction() + { + // Hide elements, start demo + attractScreen.gameObject.SetActive(false); + StartTimeSequence(PacManTimeSequence.AttractScreenDemo); + } } } diff --git a/Assets/Scripts/Sequences/AttractScreenWaitToRestart.cs b/Assets/Scripts/Sequences/AttractScreenWaitToRestart.cs new file mode 100644 index 0000000..a5cbd6e --- /dev/null +++ b/Assets/Scripts/Sequences/AttractScreenWaitToRestart.cs @@ -0,0 +1,10 @@ +namespace Marro.PacManUdon +{ + public partial class GameManager + { + private void TimeSequenceFinishedAttractScreenWaitToRestart() + { + StartAttractMode(); + } + } +} diff --git a/Assets/Scripts/Sequences/WaitForTimeout copy 3.cs.meta b/Assets/Scripts/Sequences/AttractScreenWaitToRestart.cs.meta similarity index 83% rename from Assets/Scripts/Sequences/WaitForTimeout copy 3.cs.meta rename to Assets/Scripts/Sequences/AttractScreenWaitToRestart.cs.meta index 4f07a6c..455e6e5 100644 --- a/Assets/Scripts/Sequences/WaitForTimeout copy 3.cs.meta +++ b/Assets/Scripts/Sequences/AttractScreenWaitToRestart.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a584f98f4d7e35146ae110c947f41176 +guid: 2b178dfcf6f9185448d2a2cdd4869abd MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/Sequences/BoardClear.cs b/Assets/Scripts/Sequences/BoardClear.cs index 9570e83..b1a76a4 100644 --- a/Assets/Scripts/Sequences/BoardClear.cs +++ b/Assets/Scripts/Sequences/BoardClear.cs @@ -36,29 +36,33 @@ namespace Marro.PacManUdon statusDisplay.SetLevelDisplayVisible(true); break; case 6: - // Call handler for what should happen next - PacManTimeSequence nextSequence; - switch (level) - { - case 2: - nextSequence = PacManTimeSequence.Intermission1; - break; - case 5: - nextSequence = PacManTimeSequence.Intermission2; - break; - case 9: - case 13: - case 17: - nextSequence = PacManTimeSequence.Intermission3; - break; - default: - nextSequence = PacManTimeSequence.StartNewLevel; - break; - } - - InsertTimeSequence(nextSequence); break; } } + + private void TimeSequenceFinishedBoardClear() + { + // Call handler for what should happen next + PacManTimeSequence nextSequence; + switch (level) + { + case 2: + nextSequence = PacManTimeSequence.Intermission1; + break; + case 5: + nextSequence = PacManTimeSequence.Intermission2; + break; + case 9: + case 13: + case 17: + nextSequence = PacManTimeSequence.Intermission3; + break; + default: + nextSequence = PacManTimeSequence.StartNewLevel; + break; + } + + InsertTimeSequence(nextSequence); + } } } diff --git a/Assets/Scripts/Sequences/GameOver.cs b/Assets/Scripts/Sequences/GameOver.cs index 2891675..7881981 100644 --- a/Assets/Scripts/Sequences/GameOver.cs +++ b/Assets/Scripts/Sequences/GameOver.cs @@ -12,11 +12,15 @@ namespace Marro.PacManUdon pelletManager.FreezePowerPelletsBlink(true); break; case 1: - // Stop text blinking, transition to attract screen - statusDisplay.SetLabel1UPTextBlinking(false); - StartAttractMode(); break; } } + + private void TimeSequenceFinishedGameOver() + { + // Stop text blinking, transition to attract screen + statusDisplay.SetLabel1UPTextBlinking(false); + StartAttractMode(); + } } } diff --git a/Assets/Scripts/Sequences/GhostCaught.cs b/Assets/Scripts/Sequences/GhostCaught.cs index 15c01f9..eac5d8b 100644 --- a/Assets/Scripts/Sequences/GhostCaught.cs +++ b/Assets/Scripts/Sequences/GhostCaught.cs @@ -13,13 +13,18 @@ namespace Marro.PacManUdon soundManager.PlayGhostEatSound(); break; case 1: - // Unfreeze and reveal pacman - SetPacManActive(true); - SetFrozen(false); - ghostManager.GhostCaughtContinue(); - soundManager.SetGhostRetreat(true); + break; } } + + private void TimeSequenceFinishedGhostCaught() + { + // Unfreeze and reveal pacman + SetPacManActive(true); + SetFrozen(false); + ghostManager.GhostCaughtContinue(); + soundManager.SetGhostRetreat(true); + } } } diff --git a/Assets/Scripts/Sequences/Intermission1.cs b/Assets/Scripts/Sequences/Intermission1.cs index e24735d..b24ed95 100644 --- a/Assets/Scripts/Sequences/Intermission1.cs +++ b/Assets/Scripts/Sequences/Intermission1.cs @@ -61,9 +61,13 @@ namespace Marro.PacManUdon // End cutscene soundManager.StopAllSound(); SetFrozen(true); - StartTimeSequence(PacManTimeSequence.StartNewLevel); break; } } + + private void TimeSequenceFinishedIntermission1() + { + StartTimeSequence(PacManTimeSequence.StartNewLevel); + } } } diff --git a/Assets/Scripts/Sequences/Intermission2.cs b/Assets/Scripts/Sequences/Intermission2.cs index a565105..2636fbf 100644 --- a/Assets/Scripts/Sequences/Intermission2.cs +++ b/Assets/Scripts/Sequences/Intermission2.cs @@ -78,12 +78,17 @@ namespace Marro.PacManUdon break; case 11: // End cutscene - SetIntermissionScreenVisible(false); - soundManager.StopAllSound(); SetFrozen(true); - StartTimeSequence(PacManTimeSequence.StartNewLevel); + break; } } + + private void TimeSequenceFinishedIntermission2() + { + SetIntermissionScreenVisible(false); + soundManager.StopAllSound(); + StartTimeSequence(PacManTimeSequence.StartNewLevel); + } } } diff --git a/Assets/Scripts/Sequences/Intermission3.cs b/Assets/Scripts/Sequences/Intermission3.cs index b11212f..e9f9b7f 100644 --- a/Assets/Scripts/Sequences/Intermission3.cs +++ b/Assets/Scripts/Sequences/Intermission3.cs @@ -56,11 +56,15 @@ namespace Marro.PacManUdon break; case 5: // End cutscene - soundManager.StopAllSound(); SetFrozen(true); - StartTimeSequence(PacManTimeSequence.StartNewLevel); break; } } + + private void TimeSequenceFinishedIntermission3() + { + soundManager.StopAllSound(); + StartTimeSequence(PacManTimeSequence.StartNewLevel); + } } } diff --git a/Assets/Scripts/Sequences/PacManCaught.cs b/Assets/Scripts/Sequences/PacManCaught.cs index 590682c..9c2c538 100644 --- a/Assets/Scripts/Sequences/PacManCaught.cs +++ b/Assets/Scripts/Sequences/PacManCaught.cs @@ -2,7 +2,7 @@ namespace Marro.PacManUdon { public partial class GameManager { - private void TimeSequenceStepPacManCaught(int sequenceProgress) + private void TimeSequenceStepPacManCaught(int sequenceProgress) { switch (sequenceProgress) { @@ -23,28 +23,27 @@ namespace Marro.PacManUdon case 3: // Hide pacman, start next state SetPacManActive(false); - if (gameState == PacManGameState.AttractModeDemo) - { - break; - } - if (extraLives > 0) - { - InsertTimeSequence(PacManTimeSequence.RestartLevel); - break; - } - - InsertTimeSequence(PacManTimeSequence.GameOver); - break; - case 4: - if (gameState == PacManGameState.AttractModeDemo) - { - #if RECORDING_DEMO - // recorder.gameObject.SetActive(false); - #endif - InsertTimeSequence(PacManTimeSequence.AttractScreenIntroduction); - } break; } } + + private void TimeSequenceFinishedPacManCaught() + { + PacManTimeSequence nextSequence; + if (gameState == PacManGameState.AttractModeDemo) + { + nextSequence = PacManTimeSequence.AttractScreenWaitToRestart; + } + else if (extraLives > 0) + { + nextSequence = PacManTimeSequence.RestartLevel; + } + else + { + nextSequence = PacManTimeSequence.GameOver; + } + + InsertTimeSequence(nextSequence); + } } } diff --git a/Assets/Scripts/Sequences/RestartLevel.cs b/Assets/Scripts/Sequences/RestartLevel.cs index 211e5ae..6999b85 100644 --- a/Assets/Scripts/Sequences/RestartLevel.cs +++ b/Assets/Scripts/Sequences/RestartLevel.cs @@ -32,13 +32,17 @@ namespace Marro.PacManUdon statusDisplay.SetReadyTextVisible(false); break; case 5: - // Unfreeze - SetFrozen(false); - soundManager.SuppressSound(false); - soundManager.StartGhostSound(); - soundManager.UpdatePelletCount(pelletCountRemaining); break; } } + + private void TimeSequenceFinishedRestartLevel() + { + // Unfreeze + SetFrozen(false); + soundManager.SuppressSound(false); + soundManager.StartGhostSound(); + soundManager.UpdatePelletCount(pelletCountRemaining); + } } } diff --git a/Assets/Scripts/Sequences/StartNewGame.cs b/Assets/Scripts/Sequences/StartNewGame.cs index a71d612..a2878be 100644 --- a/Assets/Scripts/Sequences/StartNewGame.cs +++ b/Assets/Scripts/Sequences/StartNewGame.cs @@ -61,11 +61,15 @@ namespace Marro.PacManUdon statusDisplay.SetReadyTextVisible(false); break; case 6: - // Start game, end sequence - soundManager.StartGhostSound(); - SetFrozen(false); break; } } + + private void TimeSequenceFinishedStartNewGame() + { + // Start game, end sequence + soundManager.StartGhostSound(); + SetFrozen(false); + } } } diff --git a/Assets/Scripts/Sequences/StartNewLevel.cs b/Assets/Scripts/Sequences/StartNewLevel.cs index 8332063..628b454 100644 --- a/Assets/Scripts/Sequences/StartNewLevel.cs +++ b/Assets/Scripts/Sequences/StartNewLevel.cs @@ -31,11 +31,15 @@ namespace Marro.PacManUdon statusDisplay.SetReadyTextVisible(false); break; case 4: - // Unfreeze - SetFrozen(false); - soundManager.StartGhostSound(); break; } } + + private void TimeSequenceFinishedStartNewLevel() + { + // Unfreeze + SetFrozen(false); + soundManager.StartGhostSound(); + } } } diff --git a/Assets/Scripts/Sequences/WaitForStart.cs b/Assets/Scripts/Sequences/WaitForStart.cs index f44409c..35111ca 100644 --- a/Assets/Scripts/Sequences/WaitForStart.cs +++ b/Assets/Scripts/Sequences/WaitForStart.cs @@ -14,12 +14,16 @@ namespace Marro.PacManUdon break; case 1: SetPressStartButtonScreenVisible(true); - if (playerInput.active == false && hasTimeSequenceQueued == false) - { - StartTimeSequence(PacManTimeSequence.WaitForStartTimeout); - } break; } } + + private void TimeSequenceFinishedWaitForStart() + { + if (playerInput.active == false) + { + StartTimeSequence(PacManTimeSequence.WaitForStartTimeout); + } + } } } diff --git a/Assets/Scripts/Sequences/WaitForTimeout copy 3.cs b/Assets/Scripts/Sequences/WaitForTimeout copy 3.cs deleted file mode 100644 index 4734fce..0000000 --- a/Assets/Scripts/Sequences/WaitForTimeout copy 3.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Marro.PacManUdon -{ - public partial class GameManager - { - - } -} diff --git a/Assets/Scripts/Sequences/WaitForTimeout.cs b/Assets/Scripts/Sequences/WaitForTimeout.cs index aec7cb6..1f229b5 100644 --- a/Assets/Scripts/Sequences/WaitForTimeout.cs +++ b/Assets/Scripts/Sequences/WaitForTimeout.cs @@ -2,18 +2,11 @@ namespace Marro.PacManUdon { public partial class GameManager { - private void TimeSequenceStepWaitForStartTimeout(int sequenceProgress) + private void TimeSequenceFinishedWaitForStartTimeout() { - switch (sequenceProgress) + if (playerInput.active == false) { - case 0: - break; - case 1: - if (playerInput.active == false && hasTimeSequenceQueued == false) - { - StartAttractMode(); - } - break; + StartAttractMode(); } } }