Fixed ghost caught queue

This commit is contained in:
2026-06-22 13:11:00 +02:00
parent cb975c24b2
commit e431dab042
9 changed files with 199 additions and 228 deletions

View File

@@ -593,18 +593,23 @@ namespace Marro.PacManUdon
}
}
internal void HitPacMan()
internal bool HitPacMan()
{
if (ghostState != PacManGhostState.Normal)
{
return false;
}
if (isScared)
{
Debug.Log($"{gameObject} was cought!");
ghostManager.GhostCaughtQueue(this);
}
else if (ghostState == PacManGhostState.Normal)
{
Debug.Log($"{gameObject} cought PacMan!");
ghostManager.CapturedPacMan();
ghostManager.GhostCaught(this);
return true;
}
Debug.Log($"{gameObject} cought PacMan!");
ghostManager.CapturedPacMan();
return true;
}
public void Caught(int scoreBonus)
@@ -695,25 +700,33 @@ namespace Marro.PacManUdon
public void SetFrozen(bool frozen, bool ignoreIfCaught = false, bool keepAnimating = false)
{
animator.speed = frozen && !keepAnimating ? 0 : 1; // This would cause issues if the returning sprite was animated, luckily it isn't :)
if (frozen && !ignoreIfCaught)
{
frozenState = PacManGhostFrozenState.Frozen;
return;
}
else if (frozen && ignoreIfCaught)
if (frozen && ignoreIfCaught)
{
frozenState = PacManGhostFrozenState.FrozenIfNotCaught;
return;
}
else
{
var oldFrozenState = frozenState;
frozenState = PacManGhostFrozenState.NotFrozen;
if (oldFrozenState == PacManGhostFrozenState.FrozenIfNotCaught) // Catch animator up after not updating during FrozenIfNotCaught
{
UpdateAnimator();
}
var oldFrozenState = frozenState;
frozenState = PacManGhostFrozenState.NotFrozen;
if (oldFrozenState == PacManGhostFrozenState.FrozenIfNotCaught) // Catch animator up after not updating during FrozenIfNotCaught
{
UpdateAnimator();
}
if (ghostState == PacManGhostState.CaughtScore)
{
ReturnHome(); // Return home when unfreezing after being caught
collisionManager.PacManTryEatGhost(); // We may have skipped collisions while frozen
}
animator.speed = frozen && !keepAnimating ? 0 : 1; // This would cause issues if the returning sprite was animated, luckily it isn't :)
}
public void SetHousePelletCounterActive(bool active)