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,20 +6,24 @@ import 'package:flutter/services.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';
import 'package:wolf_3d_dart/wolf_3d_synth.dart';
import 'package:wolf_3d_flutter/audio/default_audio_backend.dart';
import 'package:wolf_3d_flutter/wolf_3d_input_flutter.dart';
export 'audio/debug_music_player.dart' show DebugMusicPlayer;
export 'audio/wolf_audio.dart' show WolfAudio;
/// Coordinates asset discovery, audio initialization, and input reuse for apps.
class Wolf3d {
/// Creates an empty facade that must be initialized with [init].
Wolf3d();
Wolf3d({EngineAudio? audioBackend})
: audio = audioBackend ?? createDefaultAudioBackend();
/// All successfully discovered or bundled game data sets.
final List<WolfensteinData> availableGames = [];
WolfensteinData? _activeGame;
/// Shared engine audio backend used by menus and gameplay sessions.
final EngineAudio audio = WolfAudio();
final EngineAudio audio;
/// Engine menu background color as 24-bit RGB.
int menuBackgroundRgb = 0x890000;