Added speech history in the game bound to f1 previous, f2 current, f3 next. I may expand this later.

This commit is contained in:
Storm Dragon
2025-09-23 17:56:22 -04:00
parent e15b497c54
commit 8688c8fad3
4 changed files with 40 additions and 1 deletions

View File

@@ -35,6 +35,9 @@ Alt+Home: Ambience volume increase.
Alt+Delete: Game sounds volume decrease.
Alt+Insert: Game sounds volume increase.
Backspace: Pause or resume the game.
F1: Navigate to previous speech message in history.
F2: Repeat current speech message.
F3: Navigate to next speech message in history.
Notes

View File

@@ -231,6 +231,8 @@ class Player:
self._lives -= 1
# Mark that player died this frame to prevent revival
self.diedThisFrame = True
# Record death time for delay before respawn/game over
self.deathTimestamp = pygame.time.get_ticks()
# Stop all current sounds before playing death sound
pygame.mixer.stop()
try:

View File

@@ -400,6 +400,13 @@ class WickedQuest:
speak("Run lock " + ("enabled." if self.runLock else "disabled."))
elif event.key == pygame.K_BACKSPACE:
pause_game()
# Speech history controls
elif event.key == pygame.K_F1:
speak_previous()
elif event.key == pygame.K_F2:
speak_current()
elif event.key == pygame.K_F3:
speak_next()
# Volume controls (require Alt)
elif altPressed:
if event.key == pygame.K_PAGEUP:
@@ -426,6 +433,16 @@ class WickedQuest:
# Check for death first
if self.currentLevel.player.get_health() <= 0:
# Check if we need to wait for death delay (2.5 seconds)
if hasattr(self.currentLevel.player, 'deathTimestamp'):
deathDelay = 2500 # 2.5 seconds
if currentTime - self.currentLevel.player.deathTimestamp < deathDelay:
# Still waiting for death delay to complete
clock.tick(60)
continue
# Death delay completed, remove timestamp
del self.currentLevel.player.deathTimestamp
if self.currentLevel.player.get_lives() <= 0:
# Game over - use gameStartTime for total time
pygame.mixer.stop()
@@ -591,6 +608,13 @@ class WickedQuest:
speak("Run lock " + ("enabled." if self.runLock else "disabled."))
elif event.key == pygame.K_BACKSPACE:
pause_game()
# Speech history controls
elif event.key == pygame.K_F1:
speak_previous()
elif event.key == pygame.K_F2:
speak_current()
elif event.key == pygame.K_F3:
speak_next()
# Volume controls (require Alt)
elif altPressed:
if event.key == pygame.K_PAGEUP:
@@ -633,6 +657,16 @@ class WickedQuest:
# Check for death first (following main game loop pattern)
if self.currentLevel.player.get_health() <= 0:
# Check if we need to wait for death delay (2.5 seconds)
if hasattr(self.currentLevel.player, 'deathTimestamp'):
deathDelay = 2500 # 2.5 seconds
if currentTime - self.currentLevel.player.deathTimestamp < deathDelay:
# Still waiting for death delay to complete
clock.tick(60)
continue
# Death delay completed, remove timestamp
del self.currentLevel.player.deathTimestamp
if self.currentLevel.player.get_lives() <= 0:
# Game over - stop all sounds
pygame.mixer.stop()