Compare commits

...

2 Commits

Author SHA1 Message Date
a251763158 Fixed stuff 2025-12-24 21:09:26 +01:00
8e9936274f Separated time sequence finish 2025-12-24 19:09:49 +01:00
19 changed files with 275 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,28 @@ namespace Marro.PacManUdon
if (timeSequenceProgress >= timeSequenceKeyframeTimes.Length)
{
currentlyInTimeSequence = false;
TimeSequencePrepareForFinish();
break;
}
}
}
private void TimeSequencePrepareForFinish()
{
if (Networking.IsOwner(gameObject))
{
TimeSequenceExecuteFinalize();
if (!hasTimeSequenceQueued)
{
TimeSequenceExecuteFinished();
}
}
else
{
waitingForTimeSequenceFinish = true;
}
}
private void TimeSequenceExecuteStep(int sequenceProgress)
{
// Debug.Log($"{gameObject} Triggered time sequence step for sequence {currentTimeSequence} with progress {sequenceProgress}");
@@ -611,9 +629,6 @@ namespace Marro.PacManUdon
case PacManTimeSequence.WaitForStart:
TimeSequenceStepWaitForStart(sequenceProgress);
break;
case PacManTimeSequence.WaitForStartTimeout:
TimeSequenceStepWaitForStartTimeout(sequenceProgress);
break;
case PacManTimeSequence.StartNewGame:
TimeSequenceStepStartNewGame(sequenceProgress);
break;
@@ -644,6 +659,102 @@ namespace Marro.PacManUdon
case PacManTimeSequence.Intermission3:
TimeSequenceStepIntermission3(sequenceProgress);
break;
case PacManTimeSequence.AttractScreenWaitToRestart:
case PacManTimeSequence.WaitForStartTimeout:
// These don't have steps
break;
}
}
private void TimeSequenceExecuteFinalize()
{
// Debug.Log($"{gameObject} Triggered time sequence step for sequence {currentTimeSequence} with progress {sequenceProgress}");
switch (currentTimeSequence)
{
default:
Debug.LogError($"{gameObject} No time sequence finalize known for sequence {currentTimeSequence}");
break;
case PacManTimeSequence.AttractScreenIntroduction:
TimeSequenceFinalizeAttractScreenIntroduction();
break;
case PacManTimeSequence.WaitForStart:
TimeSequenceFinalizeWaitForStart();
break;
case PacManTimeSequence.WaitForStartTimeout:
TimeSequenceFinalizeWaitForStart();
break;
case PacManTimeSequence.StartNewGame:
TimeSequenceFinalizeStartNewGame();
break;
case PacManTimeSequence.StartNewLevel:
TimeSequenceFinalizeStartNewLevel();
break;
case PacManTimeSequence.GhostCaught:
TimeSequenceFinalizeGhostCaught();
break;
case PacManTimeSequence.RestartLevel:
TimeSequenceFinalizeRestartLevel();
break;
case PacManTimeSequence.Intermission2:
TimeSequenceFinalizeIntermission2();
break;
case PacManTimeSequence.Intermission3:
TimeSequenceFinalizeIntermission3();
break;
case PacManTimeSequence.AttractScreenDemo:
case PacManTimeSequence.AttractScreenWaitToRestart:
case PacManTimeSequence.GameOver:
case PacManTimeSequence.Intermission1:
case PacManTimeSequence.PacManCaught:
case PacManTimeSequence.BoardClear:
// These don't have a finalize
break;
}
}
private void TimeSequenceExecuteFinished()
{
// 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.BoardClear:
TimeSequenceFinishedBoardClear();
break;
case PacManTimeSequence.PacManCaught:
TimeSequenceFinishedPacManCaught();
break;
case PacManTimeSequence.GameOver:
TimeSequenceFinishedGameOver();
break;
case PacManTimeSequence.Intermission1:
TimeSequenceFinishedIntermission1();
break;
case PacManTimeSequence.Intermission2:
TimeSequenceFinishedIntermission2();
break;
case PacManTimeSequence.Intermission3:
TimeSequenceFinishedIntermission3();
break;
case PacManTimeSequence.RestartLevel:
case PacManTimeSequence.StartNewLevel:
case PacManTimeSequence.GhostCaught:
case PacManTimeSequence.WaitForStart:
case PacManTimeSequence.WaitForStartTimeout:
case PacManTimeSequence.StartNewGame:
// These don't have a finished
break;
}
}
@@ -659,10 +770,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 +783,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:

View File

@@ -34,6 +34,7 @@ namespace Marro.PacManUdon
{
AttractScreenIntroduction,
AttractScreenDemo,
AttractScreenWaitToRestart,
WaitForStart,
WaitForStartTimeout,
StartNewGame,

View File

@@ -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);
}
}
}

View File

@@ -165,15 +165,18 @@ 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 TimeSequenceFinalizeAttractScreenIntroduction()
{
attractScreen.gameObject.SetActive(false);
}
private void TimeSequenceFinishedAttractScreenIntroduction()
{
StartTimeSequence(PacManTimeSequence.AttractScreenDemo);
}
}
}

View File

@@ -0,0 +1,10 @@
namespace Marro.PacManUdon
{
public partial class GameManager
{
private void TimeSequenceFinishedAttractScreenWaitToRestart()
{
StartAttractMode();
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a584f98f4d7e35146ae110c947f41176
guid: 2b178dfcf6f9185448d2a2cdd4869abd
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -36,6 +36,12 @@ namespace Marro.PacManUdon
statusDisplay.SetLevelDisplayVisible(true);
break;
case 6:
break;
}
}
private void TimeSequenceFinishedBoardClear()
{
// Call handler for what should happen next
PacManTimeSequence nextSequence;
switch (level)
@@ -57,8 +63,6 @@ namespace Marro.PacManUdon
}
InsertTimeSequence(nextSequence);
break;
}
}
}
}

View File

@@ -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();
}
}
}

View File

@@ -13,13 +13,17 @@ namespace Marro.PacManUdon
soundManager.PlayGhostEatSound();
break;
case 1:
break;
}
}
private void TimeSequenceFinalizeGhostCaught()
{
// Unfreeze and reveal pacman
SetPacManActive(true);
SetFrozen(false);
ghostManager.GhostCaughtContinue();
soundManager.SetGhostRetreat(true);
break;
}
}
}
}

View File

@@ -61,9 +61,13 @@ namespace Marro.PacManUdon
// End cutscene
soundManager.StopAllSound();
SetFrozen(true);
StartTimeSequence(PacManTimeSequence.StartNewLevel);
break;
}
}
private void TimeSequenceFinishedIntermission1()
{
StartTimeSequence(PacManTimeSequence.StartNewLevel);
}
}
}

View File

@@ -78,12 +78,20 @@ namespace Marro.PacManUdon
break;
case 11:
// End cutscene
SetIntermissionScreenVisible(false);
soundManager.StopAllSound();
SetFrozen(true);
StartTimeSequence(PacManTimeSequence.StartNewLevel);
break;
}
}
private void TimeSequenceFinalizeIntermission2()
{
SetIntermissionScreenVisible(false);
soundManager.StopAllSound();
}
private void TimeSequenceFinishedIntermission2()
{
StartTimeSequence(PacManTimeSequence.StartNewLevel);
}
}
}

View File

@@ -56,11 +56,21 @@ namespace Marro.PacManUdon
break;
case 5:
// End cutscene
soundManager.StopAllSound();
SetFrozen(true);
StartTimeSequence(PacManTimeSequence.StartNewLevel);
break;
}
}
private void TimeSequenceFinalizeIntermission3()
{
soundManager.StopAllSound();
StartTimeSequence(PacManTimeSequence.StartNewLevel);
}
private void TimeSequenceFinishedIntermission3()
{
soundManager.StopAllSound();
StartTimeSequence(PacManTimeSequence.StartNewLevel);
}
}
}

View File

@@ -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:
private void TimeSequenceFinishedPacManCaught()
{
PacManTimeSequence nextSequence;
if (gameState == PacManGameState.AttractModeDemo)
{
#if RECORDING_DEMO
// recorder.gameObject.SetActive(false);
#endif
InsertTimeSequence(PacManTimeSequence.AttractScreenIntroduction);
nextSequence = PacManTimeSequence.AttractScreenWaitToRestart;
}
break;
else if (extraLives > 0)
{
nextSequence = PacManTimeSequence.RestartLevel;
}
else
{
nextSequence = PacManTimeSequence.GameOver;
}
InsertTimeSequence(nextSequence);
}
}
}

View File

@@ -32,13 +32,17 @@ namespace Marro.PacManUdon
statusDisplay.SetReadyTextVisible(false);
break;
case 5:
break;
}
}
private void TimeSequenceFinalizeRestartLevel()
{
// Unfreeze
SetFrozen(false);
soundManager.SuppressSound(false);
soundManager.StartGhostSound();
soundManager.UpdatePelletCount(pelletCountRemaining);
break;
}
}
}
}

View File

@@ -61,11 +61,15 @@ namespace Marro.PacManUdon
statusDisplay.SetReadyTextVisible(false);
break;
case 6:
// Start game, end sequence
soundManager.StartGhostSound();
SetFrozen(false);
break;
}
}
private void TimeSequenceFinalizeStartNewGame()
{
// Start game, end sequence
soundManager.StartGhostSound();
SetFrozen(false);
}
}
}

View File

@@ -31,11 +31,15 @@ namespace Marro.PacManUdon
statusDisplay.SetReadyTextVisible(false);
break;
case 4:
// Unfreeze
SetFrozen(false);
soundManager.StartGhostSound();
break;
}
}
private void TimeSequenceFinalizeStartNewLevel()
{
// Unfreeze
SetFrozen(false);
soundManager.StartGhostSound();
}
}
}

View File

@@ -14,12 +14,16 @@ namespace Marro.PacManUdon
break;
case 1:
SetPressStartButtonScreenVisible(true);
if (playerInput.active == false && hasTimeSequenceQueued == false)
break;
}
}
private void TimeSequenceFinalizeWaitForStart()
{
if (playerInput.active == false)
{
StartTimeSequence(PacManTimeSequence.WaitForStartTimeout);
}
break;
}
}
}
}

View File

@@ -1,7 +0,0 @@
namespace Marro.PacManUdon
{
public partial class GameManager
{
}
}

View File

@@ -2,19 +2,12 @@ namespace Marro.PacManUdon
{
public partial class GameManager
{
private void TimeSequenceStepWaitForStartTimeout(int sequenceProgress)
private void TimeSequenceFinishedWaitForStartTimeout()
{
switch (sequenceProgress)
{
case 0:
break;
case 1:
if (playerInput.active == false && hasTimeSequenceQueued == false)
if (playerInput.active == false)
{
StartAttractMode();
}
break;
}
}
}
}