feat: Add Audio Gallery screen and integrate into Debug Tools menu

feat: Implement audio playback controls and audio management in the gallery
refactor: Update audio engine interface to include stopAllAudio method

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-20 16:15:46 +01:00
parent 03dd871a46
commit 8cca66e966
11 changed files with 505 additions and 2 deletions

View File

@@ -6,6 +6,7 @@ abstract class EngineAudio {
void playMenuMusic();
void playLevelMusic(WolfLevel level);
void stopMusic();
Future<void> stopAllAudio();
void playSoundEffect(int sfxId);
Future<void> init();
void dispose();

View File

@@ -22,6 +22,9 @@ class CliSilentAudio implements EngineAudio {
@override
void stopMusic() {}
@override
Future<void> stopAllAudio() async {}
@override
void playSoundEffect(int sfxId) {
// Optional: You could use the terminal 'bell' character here

View File

@@ -62,7 +62,7 @@ class WolfAudio implements EngineAudio {
/// Disposes of the audio engine and frees resources.
@override
void dispose() {
stopMusic();
stopAllAudio();
_musicPlayer.dispose();
for (final player in _sfxPlayers) {
@@ -101,6 +101,16 @@ class WolfAudio implements EngineAudio {
await _musicPlayer.stop();
}
@override
Future<void> stopAllAudio() async {
if (!_isInitialized) return;
await _musicPlayer.stop();
for (final player in _sfxPlayers) {
await player.stop();
}
}
Future<void> pauseMusic() async {
if (_isInitialized) await _musicPlayer.pause();
}