From 825d876cf72ece860ccf7500360c36d509fc1439 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Sat, 24 Jul 2021 22:18:24 +0200
Subject: [PATCH] Improve randomization of values for images skin themes

---
 android/gradle.properties                       |  4 ++--
 .../metadata/android/en-US/changelogs/41.txt    |  1 +
 .../metadata/android/fr-FR/changelogs/41.txt    |  1 +
 lib/entities/cell.dart                          |  6 ++++--
 lib/provider/data.dart                          | 17 +++++++++++++++++
 lib/utils/game_utils.dart                       |  1 +
 6 files changed, 26 insertions(+), 4 deletions(-)
 create mode 100644 fastlane/metadata/android/en-US/changelogs/41.txt
 create mode 100644 fastlane/metadata/android/fr-FR/changelogs/41.txt

diff --git a/android/gradle.properties b/android/gradle.properties
index 4d8dcd2..62205f4 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.40
-app.versionCode=40
+app.versionName=0.0.41
+app.versionCode=41
diff --git a/fastlane/metadata/android/en-US/changelogs/41.txt b/fastlane/metadata/android/en-US/changelogs/41.txt
new file mode 100644
index 0000000..b53e301
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/41.txt
@@ -0,0 +1 @@
+Improve randomization of values for images skin themes
diff --git a/fastlane/metadata/android/fr-FR/changelogs/41.txt b/fastlane/metadata/android/fr-FR/changelogs/41.txt
new file mode 100644
index 0000000..45176ca
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/41.txt
@@ -0,0 +1 @@
+Mélange les valeurs parmi toutes les images des thèmes avec images
diff --git a/lib/entities/cell.dart b/lib/entities/cell.dart
index a42ad6f..0cb2f97 100644
--- a/lib/entities/cell.dart
+++ b/lib/entities/cell.dart
@@ -20,7 +20,8 @@ class Cell {
   Container widget(Data myProvider, Border borders, int row, int col) {
     String imageAsset = 'assets/skins/empty.png';
     if (this.value > 0) {
-      imageAsset = 'assets/skins/' + myProvider.skin + '_' + this.value.toString() + '.png';
+      int cellValue = myProvider.getTranslatedValueForDisplay(this.value);
+      imageAsset = 'assets/skins/' + myProvider.skin + '_' + cellValue.toString() + '.png';
     }
 
     return Container(
@@ -86,7 +87,8 @@ class Cell {
 
     String imageAsset = 'assets/skins/empty.png';
     if (this.value > 0) {
-      imageAsset = 'assets/skins/' + myProvider.skin + '_' + this.value.toString() + '.png';
+      int cellValue = myProvider.getTranslatedValueForDisplay(this.value);
+      imageAsset = 'assets/skins/' + myProvider.skin + '_' + cellValue.toString() + '.png';
     }
 
     Color backgroundColor = Colors.grey[200];
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index 7889fcf..77e1bed 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -7,6 +7,7 @@ class Data extends ChangeNotifier {
   List _availableDifficultyLevels = ['easy', 'medium', 'hard', 'nightmare'];
   List _availableSizes = ['2x2', '3x2', '3x3', '4x4'];
   List _availableSkins = ['default', 'food', 'nature', 'monsters'];
+  List _shufflableSkins = ['food', 'nature', 'monsters'];
 
   List get availableDifficultyLevels => _availableDifficultyLevels;
   List get availableSizes => _availableSizes;
@@ -31,6 +32,7 @@ class Data extends ChangeNotifier {
   int _currentCellRow = null;
   int _currentCellValue = null;
   int _givenTipsCount = 0;
+  List _shuffledCellValues = [];
 
   String get level => _level;
   set updateLevel(String level) {
@@ -113,6 +115,21 @@ class Data extends ChangeNotifier {
     _cellsSolved = cells;
   }
 
+  void shuffleCellValues() {
+    int maxCellValue = 16;
+    List values = new List<int>.generate(maxCellValue, (i) => i + 1);
+
+    if (_shufflableSkins.contains(_skin)) {
+      values.shuffle();
+      print('Shuffled tiles values: ' + values.toString());
+    }
+
+    _shuffledCellValues = values;
+  }
+  int getTranslatedValueForDisplay(int originalValue) {
+    return _shuffledCellValues[originalValue - 1];
+  }
+
   int get currentCellCol => _currentCellCol;
   set updateCurrentCellCol(int currentCellCol) {
     _currentCellCol = currentCellCol;
diff --git a/lib/utils/game_utils.dart b/lib/utils/game_utils.dart
index 5b703a3..508c3d6 100644
--- a/lib/utils/game_utils.dart
+++ b/lib/utils/game_utils.dart
@@ -12,6 +12,7 @@ class GameUtils {
     myProvider.updateSize = myProvider.size;
     myProvider.updateStateRunning = true;
     myProvider.resetGivenTipsCount();
+    myProvider.shuffleCellValues();
     myProvider.updateCells = BoardUtils.createEmptyBoard(myProvider.blockSizeHorizontal * myProvider.blockSizeVertical);
     BoardUtils.pickGrid(myProvider);
   }
-- 
GitLab