feat: Implement audio backend with subprocess support and refactor audio handling

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-23 17:10:07 +01:00
parent 26c738b702
commit b88475882b
12 changed files with 915 additions and 52 deletions
+6 -1
View File
@@ -7,6 +7,7 @@ library;
import 'dart:io';
import 'package:wolf_3d_cli/cli_game_loop.dart';
import 'package:wolf_3d_cli/cli_subprocess_audio.dart';
import 'package:wolf_3d_dart/wolf_3d_data.dart';
import 'package:wolf_3d_dart/wolf_3d_data_types.dart';
import 'package:wolf_3d_dart/wolf_3d_engine.dart';
@@ -46,13 +47,15 @@ void main() async {
}
CliGameLoop? gameLoop;
late final WolfEngine engine;
void stopAndExit(int code) {
gameLoop?.stop();
engine.audio.dispose();
exitCleanly(code);
}
final engine = WolfEngine(
engine = WolfEngine(
availableGames: availableGames.values.toList(growable: false),
startingEpisode: 0,
frameBuffer: FrameBuffer(
@@ -60,11 +63,13 @@ void main() async {
stdout.terminalLines,
),
input: CliInput(),
engineAudio: CliSubprocessAudio(),
onGameWon: () => stopAndExit(0),
onQuit: () => stopAndExit(0),
saveGamePersistence: DefaultSaveGamePersistence(),
);
await engine.audio.init();
engine.init();
final persistence = DefaultRendererSettingsPersistence();