diff --git a/fastlane/metadata/android/en-US/changelogs/8.txt b/fastlane/metadata/android/en-US/changelogs/8.txt new file mode 100644 index 0000000000000000000000000000000000000000..19bc39d541c72a85915dabab31daf70dae04fc3b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/8.txt @@ -0,0 +1 @@ +Fix compute/display conflicts. diff --git a/fastlane/metadata/android/fr-FR/changelogs/8.txt b/fastlane/metadata/android/fr-FR/changelogs/8.txt new file mode 100644 index 0000000000000000000000000000000000000000..38224f11661f7c227751e9d27448e1f220716158 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/8.txt @@ -0,0 +1 @@ +Correction sur calcul/affichage des conflits. diff --git a/lib/cubit/activity/activity_cubit.dart b/lib/cubit/activity/activity_cubit.dart index 5f19af7cbbbb4e45a89047576f3799dccbd1fb5c..acf3f1c6886575334e39c9f5eda2e4ae6eae3719 100644 --- a/lib/cubit/activity/activity_cubit.dart +++ b/lib/cubit/activity/activity_cubit.dart @@ -93,6 +93,8 @@ class ActivityCubit extends HydratedCubit<ActivityState> { refresh(); } + state.currentActivity.updateConflictsInBoard(); + if (state.currentActivity.checkBoardIsSolved()) { BoardAnimate.startAnimation(this, 'win'); state.currentActivity.isFinished = true; diff --git a/lib/models/activity/activity.dart b/lib/models/activity/activity.dart index ab1f8aed0f198314bb0eca7e2444916310c47bab..dad9137d909461073c3b38ddbabfa004288a5992 100644 --- a/lib/models/activity/activity.dart +++ b/lib/models/activity/activity.dart @@ -137,37 +137,20 @@ class Activity { return false; } - ConflictsCount computeConflictsInBoard() { + void updateConflictsInBoard() { final BoardCells cells = board.cells; - final ConflictsCount conflicts = boardConflicts; // reset conflict states - for (int row = 0; row < board.boardSizeVertical; row++) { - for (int col = 0; col < board.boardSizeHorizontal; col++) { - conflicts[row][col] = 0; - } + for (CellLocation location in board.getCellLocations()) { + boardConflicts[location.row][location.col] = 0; } // check siblings - for (int row = 0; row < board.boardSizeVertical; row++) { - for (int col = 0; col < board.boardSizeHorizontal; col++) { - final int value = cells[row][col].value; - if (value != 0) { - for (int deltaRow = -1; deltaRow <= 1; deltaRow++) { - for (int deltaCol = -1; deltaCol <= 1; deltaCol++) { - if (row + deltaRow >= 0 && - row + deltaRow < board.boardSizeHorizontal && - col + deltaCol >= 0 && - col + deltaCol < board.boardSizeVertical && - (deltaRow * deltaCol != 0)) { - final int siblingValue = cells[row + deltaRow][col + deltaCol].value; - - if (siblingValue == value) { - conflicts[row][col]++; - } - } - } - } + for (CellLocation location in board.getCellLocations()) { + final int value = board.get(location).value; + if (value != 0) { + if (board.cellHasSiblingWithSameValue(location)) { + boardConflicts[location.row][location.col]++; } } } @@ -176,33 +159,27 @@ class Activity { for (String blockId in board.getBlockIds()) { List<int> values = []; List<int> duplicateValues = []; - for (int row = 0; row < board.boardSizeVertical; row++) { - for (int col = 0; col < board.boardSizeHorizontal; col++) { - if (cells[row][col].blockId == blockId) { - final int value = cells[row][col].value; - if (value != 0) { - if (!values.contains(value)) { - values.add(value); - } else { - duplicateValues.add(value); - } + for (CellLocation location in board.getCellLocations()) { + if (board.get(location).blockId == blockId) { + final int value = board.get(location).value; + if (value != 0) { + if (!values.contains(value)) { + values.add(value); + } else { + duplicateValues.add(value); } } } } for (int duplicateValue in duplicateValues) { - for (int row = 0; row < board.boardSizeVertical; row++) { - for (int col = 0; col < board.boardSizeHorizontal; col++) { - if (cells[row][col].blockId == blockId && - cells[row][col].value == duplicateValue) { - conflicts[row][col]++; - } + for (CellLocation location in board.getCellLocations()) { + if (board.get(location).blockId == blockId && + board.get(location).value == duplicateValue) { + boardConflicts[location.row][location.col]++; } } } } - - return conflicts; } void showTip(ActivityCubit activityCubit) { @@ -277,12 +254,11 @@ class Activity { List<CellLocation> cellsWithWrongValue = []; - for (int row = 0; row < board.boardSizeVertical; row++) { - for (int col = 0; col < board.boardSizeHorizontal; col++) { - if (cells[row][col].value != 0 && - cells[row][col].value != cellsSolved[row][col].value) { - cellsWithWrongValue.add(CellLocation.go(row, col)); - } + for (CellLocation location in board.getCellLocations()) { + if (cells[location.row][location.col].value != 0 && + cells[location.row][location.col].value != + cellsSolved[location.row][location.col].value) { + cellsWithWrongValue.add(location); } } @@ -292,11 +268,9 @@ class Activity { List<CellLocation> getCellsWithConflicts() { List<CellLocation> cellsWithConflict = []; - for (int row = 0; row < board.boardSizeVertical; row++) { - for (int col = 0; col < board.boardSizeHorizontal; col++) { - if (boardConflicts[row][col] != 0) { - cellsWithConflict.add(CellLocation.go(row, col)); - } + for (CellLocation location in board.getCellLocations()) { + if (boardConflicts[location.row][location.col] != 0) { + cellsWithConflict.add(location); } } diff --git a/pubspec.yaml b/pubspec.yaml index b3081203220e5db6c3ec32fed40ee9b4ff1e0fb0..6d4f6ae5d0c1f64b4ed22a0253ef6cf6f0b6cf81 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: A suguru game application. publish_to: "none" -version: 0.0.7+7 +version: 0.0.8+8 environment: sdk: "^3.0.0"