Smarter asset loading. Better audio rendering.
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
@@ -23,30 +23,53 @@ class WolfensteinLoader {
|
||||
);
|
||||
}
|
||||
|
||||
/// Parses WolfensteinData directly from raw ByteData.
|
||||
/// This is 100% pure Dart and is safe to use on all platforms, including Web.
|
||||
/// Parses WolfensteinData from raw ByteData.
|
||||
/// Throws an [ArgumentError] if any required file is null.
|
||||
static WolfensteinData loadFromBytes({
|
||||
required GameVersion version,
|
||||
required ByteData vswap,
|
||||
required ByteData mapHead,
|
||||
required ByteData gameMaps,
|
||||
required ByteData vgaDict,
|
||||
required ByteData vgaHead,
|
||||
required ByteData vgaGraph,
|
||||
required ByteData audioHed,
|
||||
required ByteData audioT,
|
||||
required ByteData? vswap,
|
||||
required ByteData? mapHead,
|
||||
required ByteData? gameMaps,
|
||||
required ByteData? vgaDict,
|
||||
required ByteData? vgaHead,
|
||||
required ByteData? vgaGraph,
|
||||
required ByteData? audioHed,
|
||||
required ByteData? audioT,
|
||||
}) {
|
||||
// We just act as a clean pass-through to the core parser
|
||||
// 1. Validation Check
|
||||
final Map<String, ByteData?> files = {
|
||||
'VSWAP': vswap,
|
||||
'MAPHEAD': mapHead,
|
||||
'GAMEMAPS': gameMaps,
|
||||
'VGADICT': vgaDict,
|
||||
'VGAHEAD': vgaHead,
|
||||
'VGAGRAPH': vgaGraph,
|
||||
'AUDIOHED': audioHed,
|
||||
'AUDIOT': audioT,
|
||||
};
|
||||
|
||||
final missing = files.entries
|
||||
.where((e) => e.value == null)
|
||||
.map((e) => "${e.key}.${version.fileExtension}")
|
||||
.toList();
|
||||
|
||||
if (missing.isNotEmpty) {
|
||||
throw ArgumentError(
|
||||
'Cannot load ${version.name}: Missing files: ${missing.join(", ")}',
|
||||
);
|
||||
}
|
||||
|
||||
// 2. Pass-through to parser now that we are guaranteed non-null
|
||||
return WLParser.load(
|
||||
version: version,
|
||||
vswap: vswap,
|
||||
mapHead: mapHead,
|
||||
gameMaps: gameMaps,
|
||||
vgaDict: vgaDict,
|
||||
vgaHead: vgaHead,
|
||||
vgaGraph: vgaGraph,
|
||||
audioHed: audioHed,
|
||||
audioT: audioT,
|
||||
vswap: vswap!,
|
||||
mapHead: mapHead!,
|
||||
gameMaps: gameMaps!,
|
||||
vgaDict: vgaDict!,
|
||||
vgaHead: vgaHead!,
|
||||
vgaGraph: vgaGraph!,
|
||||
audioHed: audioHed!,
|
||||
audioT: audioT!,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user