import 'package:flutter/foundation.dart'; import 'package:wolf_3d_dart/wolf_3d_data_types.dart'; import 'package:wolf_3d_flutter/wolf_3d_flutter.dart'; typedef PackagedGameDataLoader = Future Function({ required GameVersion version, required String assetDirectory, }); Future> loadPackagedGames({ PackagedGameDataLoader? loader, }) async { final PackagedGameDataLoader effectiveLoader = loader ?? ({required version, required assetDirectory}) => Wolf3dFlutterEngine.loadGameDataFromAssets( version: version, packageName: 'wolf_3d_assets', assetDirectory: assetDirectory, ); final List games = []; Future tryLoad({ required GameVersion version, required String assetDirectory, }) async { try { games.add( await effectiveLoader( version: version, assetDirectory: assetDirectory, ), ); } catch (e) { debugPrint( 'Packaged game load skipped for ${version.label} ($assetDirectory): $e', ); } } await tryLoad(version: GameVersion.retail, assetDirectory: 'assets/retail'); await tryLoad( version: GameVersion.shareware, assetDirectory: 'assets/shareware', ); await tryLoad( version: GameVersion.spearOfDestinyDemo, assetDirectory: 'assets/sod/shareware', ); return games; }