From 565e422dfb69b831b7a71fc2a428134a1026eaf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Tue, 27 Jul 2021 12:39:02 +0200 Subject: [PATCH] Preload game images --- android/gradle.properties | 4 +- .../metadata/android/en-US/changelogs/9.txt | 1 + .../metadata/android/fr-FR/changelogs/9.txt | 1 + lib/provider/data.dart | 6 +++ lib/screens/home.dart | 51 +++++++++++++++++++ 5 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/9.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/9.txt diff --git a/android/gradle.properties b/android/gradle.properties index 65eed64..4bb5439 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 0000000..b7b9c18 --- /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 0000000..c2d8655 --- /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 7f90cf3..8d16475 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 6dbde15..0b92834 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) { -- GitLab