learn_sounds needed updating too. Hopefully this attempt works.
This commit is contained in:
parent
1bb9e18ea2
commit
e272da1177
51
menu.py
51
menu.py
@ -260,6 +260,11 @@ def learn_sounds(sounds):
|
||||
- Play selected sounds
|
||||
- Return to menu with escape key
|
||||
|
||||
Excluded sounds:
|
||||
- Files in folders named 'ambience' (at any level)
|
||||
- Files in any directory starting with '.'
|
||||
- Files starting with 'game-intro', 'music_menu', or '_'
|
||||
|
||||
Args:
|
||||
sounds (dict): Dictionary of available sound objects
|
||||
|
||||
@ -271,18 +276,39 @@ def learn_sounds(sounds):
|
||||
|
||||
currentIndex = 0
|
||||
|
||||
# Get list of available sounds, excluding special sounds
|
||||
soundFiles = [f for f in listdir("sounds/")
|
||||
if isfile(join("sounds/", f))
|
||||
and (f.split('.')[1].lower() in ["ogg", "wav"])
|
||||
and (f.split('.')[0].lower() not in ["game-intro", "music_menu"])
|
||||
and (not f.lower().startswith("_"))]
|
||||
# Get list of available sound keys (excluding special sounds)
|
||||
soundKeys = []
|
||||
|
||||
# Sort the sound files alphabetically
|
||||
soundFiles.sort()
|
||||
# Define exclusion criteria
|
||||
excludedPrefixes = ["game-intro", "music_menu", "_"]
|
||||
excludedDirs = ["ambience", "."]
|
||||
|
||||
# Process each sound key in the dictionary
|
||||
for soundKey in sounds.keys():
|
||||
# Skip if key has any excluded prefix
|
||||
if any(soundKey.lower().startswith(prefix.lower()) for prefix in excludedPrefixes):
|
||||
continue
|
||||
|
||||
# Split key into path parts
|
||||
parts = soundKey.split('/')
|
||||
|
||||
# Skip if any part of the path is an excluded directory
|
||||
if any(part.lower() == dirName.lower() or part.startswith('.') for part in parts for dirName in excludedDirs):
|
||||
continue
|
||||
|
||||
# This sound passed all exclusion criteria
|
||||
soundKeys.append(soundKey)
|
||||
|
||||
# Sort sound keys alphabetically
|
||||
soundKeys.sort()
|
||||
|
||||
# Total number of sound files
|
||||
totalSounds = len(soundFiles)
|
||||
totalSounds = len(soundKeys)
|
||||
|
||||
# If no sounds found, inform the user and return
|
||||
if totalSounds == 0:
|
||||
speech.speak("No sounds available to learn.")
|
||||
return "menu"
|
||||
|
||||
# Track last spoken index to avoid repetition
|
||||
lastSpoken = -1
|
||||
@ -293,7 +319,7 @@ def learn_sounds(sounds):
|
||||
while not returnToMenu:
|
||||
if currentIndex != lastSpoken:
|
||||
# Speak the sound name followed by its position in the list
|
||||
speech.speak(f"{soundFiles[currentIndex][:-4]}, {currentIndex + 1} of {totalSounds}")
|
||||
speech.speak(f"{soundKeys[currentIndex]}, {currentIndex + 1} of {totalSounds}")
|
||||
lastSpoken = currentIndex
|
||||
|
||||
event = pygame.event.wait()
|
||||
@ -301,7 +327,7 @@ def learn_sounds(sounds):
|
||||
if event.key == pygame.K_ESCAPE:
|
||||
returnToMenu = True
|
||||
|
||||
if event.key in [pygame.K_DOWN, pygame.K_s] and currentIndex < len(soundFiles) - 1:
|
||||
if event.key in [pygame.K_DOWN, pygame.K_s] and currentIndex < len(soundKeys) - 1:
|
||||
pygame.mixer.stop()
|
||||
currentIndex += 1
|
||||
|
||||
@ -311,7 +337,7 @@ def learn_sounds(sounds):
|
||||
|
||||
if event.key == pygame.K_RETURN:
|
||||
try:
|
||||
soundName = soundFiles[currentIndex][:-4]
|
||||
soundName = soundKeys[currentIndex]
|
||||
pygame.mixer.stop()
|
||||
sounds[soundName].play()
|
||||
except:
|
||||
@ -319,6 +345,7 @@ def learn_sounds(sounds):
|
||||
speech.speak("Could not play sound.")
|
||||
|
||||
event = pygame.event.clear()
|
||||
pygame.event.clear()
|
||||
time.sleep(0.001)
|
||||
|
||||
return "menu"
|
||||
|
Loading…
x
Reference in New Issue
Block a user