d63d742695
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
55 lines
1.4 KiB
Dart
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;
|
|
}
|