Added dynamic discovery of available game data
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
48
packages/wolf_3d_data/lib/src/wolfenstein_loader.dart
Normal file
48
packages/wolf_3d_data/lib/src/wolfenstein_loader.dart
Normal file
@@ -0,0 +1,48 @@
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'classes/game_version.dart';
|
||||
import 'classes/wolfenstein_data.dart';
|
||||
// --- The Magic Conditional Import ---
|
||||
// If dart:io is available, use the real scanner. Otherwise, use the stub.
|
||||
import 'io/discovery_stub.dart'
|
||||
if (dart.library.io) 'io/discovery_io.dart'
|
||||
as platform;
|
||||
import 'wl_parser.dart';
|
||||
|
||||
class WolfensteinLoader {
|
||||
/// Scans a directory for Wolfenstein 3D data files and loads all available versions.
|
||||
///
|
||||
/// NOTE: This will throw an [UnsupportedError] on Web platforms.
|
||||
static Future<Map<GameVersion, WolfensteinData>> discover({
|
||||
String? directoryPath,
|
||||
bool recursive = false,
|
||||
}) {
|
||||
return platform.discoverInDirectory(
|
||||
directoryPath: directoryPath,
|
||||
recursive: recursive,
|
||||
);
|
||||
}
|
||||
|
||||
/// Parses WolfensteinData directly from raw ByteData.
|
||||
/// This is 100% pure Dart and is safe to use on all platforms, including Web.
|
||||
static WolfensteinData loadFromBytes({
|
||||
required GameVersion version,
|
||||
required ByteData vswap,
|
||||
required ByteData mapHead,
|
||||
required ByteData gameMaps,
|
||||
required ByteData vgaDict,
|
||||
required ByteData vgaHead,
|
||||
required ByteData vgaGraph,
|
||||
}) {
|
||||
// We just act as a clean pass-through to the core parser
|
||||
return WLParser.load(
|
||||
version: version,
|
||||
vswap: vswap,
|
||||
mapHead: mapHead,
|
||||
gameMaps: gameMaps,
|
||||
vgaDict: vgaDict,
|
||||
vgaHead: vgaHead,
|
||||
vgaGraph: vgaGraph,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user