Files
wolf_dart/apps/wolf_3d_gui/lib/packaged_games_loader.dart
T

55 lines
1.4 KiB
Dart

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<WolfensteinData> Function({
required GameVersion version,
required String assetDirectory,
});
Future<List<WolfensteinData>> loadPackagedGames({
PackagedGameDataLoader? loader,
}) async {
final PackagedGameDataLoader effectiveLoader =
loader ??
({required version, required assetDirectory}) =>
Wolf3dFlutterEngine.loadGameDataFromAssets(
version: version,
packageName: 'wolf_3d_assets',
assetDirectory: assetDirectory,
);
final List<WolfensteinData> games = [];
Future<void> 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;
}