import 'dart:typed_data'; // --- The Magic Conditional Import --- // If dart:io is available, use the real scanner. Otherwise, use the stub. import 'package:wolf_3d_data_types/wolf_3d_data_types.dart'; 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> 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, required ByteData audioHed, required ByteData audioT, }) { // 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, audioHed: audioHed, audioT: audioT, ); } }