diff --git a/apps/wolf_3d_cli/lib/cli_save_game_persistence.dart b/apps/wolf_3d_cli/lib/cli_save_game_persistence.dart index 21066a2..94dedd2 100644 --- a/apps/wolf_3d_cli/lib/cli_save_game_persistence.dart +++ b/apps/wolf_3d_cli/lib/cli_save_game_persistence.dart @@ -34,6 +34,19 @@ class CliSaveGamePersistence implements SaveGamePersistence { } } + @override + Future exists({ + required int slot, + required GameVersion version, + }) async { + try { + final File file = File(_slotPath(slot, version)); + return file.existsSync() && file.lengthSync() > 0; + } catch (_) { + return false; + } + } + @override Future save({ required int slot, diff --git a/packages/wolf_3d_flutter/lib/save_game_persistence_flutter.dart b/packages/wolf_3d_flutter/lib/save_game_persistence_flutter.dart index 525581a..1100899 100644 --- a/packages/wolf_3d_flutter/lib/save_game_persistence_flutter.dart +++ b/packages/wolf_3d_flutter/lib/save_game_persistence_flutter.dart @@ -51,6 +51,24 @@ class FlutterSaveGamePersistence implements SaveGamePersistence { } } + @override + Future exists({ + required int slot, + required GameVersion version, + }) async { + if (kIsWeb) { + return false; + } + + try { + final String dirPath = await _resolveDirectoryPath(); + final File file = File(_slotPath(dirPath, slot, version)); + return file.existsSync() && file.lengthSync() > 0; + } catch (_) { + return false; + } + } + @override Future save({ required int slot,