diff --git a/android/gradle.properties b/android/gradle.properties index 65eed6426393974efb5a056ec44936d42b5ef2a1..4bb5439f682100f8ef4ba80a557fe4f2f0ab14c2 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -app.versionName=0.0.8 -app.versionCode=8 +app.versionName=0.0.9 +app.versionCode=9 diff --git a/fastlane/metadata/android/en-US/changelogs/9.txt b/fastlane/metadata/android/en-US/changelogs/9.txt new file mode 100644 index 0000000000000000000000000000000000000000..b7b9c1839408f4e0b6fc06c3a989e053ad2f47d8 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/9.txt @@ -0,0 +1 @@ +Preload game images diff --git a/fastlane/metadata/android/fr-FR/changelogs/9.txt b/fastlane/metadata/android/fr-FR/changelogs/9.txt new file mode 100644 index 0000000000000000000000000000000000000000..c2d86552d8cd71a90bbef3b4ca3f427be47aea32 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/9.txt @@ -0,0 +1 @@ +Préchargement des images du jeu diff --git a/lib/provider/data.dart b/lib/provider/data.dart index 7f90cf37c447cf7f43fb143cf68474e29fbca2cd..8d16475abdb62bf8e6f9a7b7c159e6fe81557464 100644 --- a/lib/provider/data.dart +++ b/lib/provider/data.dart @@ -21,6 +21,7 @@ class Data extends ChangeNotifier { String _skinDefault = 'default'; // Game data + bool _assetsPreloaded = false; bool _gameRunning = false; bool _isBoardMined = false; int _minesCount = 0; @@ -117,6 +118,11 @@ class Data extends ChangeNotifier { notifyListeners(); } + bool get assetsPreloaded => _assetsPreloaded; + void updateAssetsPreloaded(bool assetsPreloaded) { + _assetsPreloaded = assetsPreloaded; + } + bool get gameRunning => _gameRunning; void updateGameRunning(bool gameRunning) { _gameRunning = gameRunning; diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 6dbde15516c2030d8526ff4a92e1b7e1a98002bd..0b92834bdc4dd412e4502559cf088919417908bf 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -22,10 +22,61 @@ class _HomeState extends State<Home> { myProvider.initParametersValues(); } + List getImagesAssets(Data myProvider) { + List assets = []; + + List gameImages = [ + 'button_back', + 'button_start', + 'game_fail', + 'game_win', + ]; + myProvider.availableDifficultyLevels.forEach( + (difficulty) => gameImages.add('difficulty_' + difficulty) + ); + myProvider.availableSizes.forEach( + (size) => gameImages.add('size_' + size) + ); + + gameImages.forEach( + (image) => assets.add('assets/icons/' + image + '.png') + ); + + List skinImages = [ + 'button_mark_mine_off', + 'button_mark_mine_on', + 'tile_flag_ko', + 'tile_flag_ok', + 'tile_flag', + 'tile_mine_not_found', + 'tile_mine', + 'tile_unknown', + ]; + for (int value = 0; value < 9; value++) { + skinImages.add('tile_' + value.toString()); + } + + skinImages.forEach( + (image) => assets.add('assets/skins/default_' + image + '.png') + ); + + assets.add('assets/skins/empty.png'); + + return assets; + } + @override Widget build(BuildContext context) { Data myProvider = Provider.of<Data>(context); + if (!myProvider.assetsPreloaded) { + List assets = getImagesAssets(myProvider); + assets.forEach( + (asset) => precacheImage(AssetImage(asset), context) + ); + myProvider.updateAssetsPreloaded(true); + } + List<Widget> menuActions = []; if (myProvider.gameRunning) {