diff --git a/android/gradle.properties b/android/gradle.properties index 14eed3944b547f02179b1b42f4b601f91b7957c0..aa51064abebb79ba519e600afb7af23779154d4e 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.4 -app.versionCode=4 +app.versionName=0.0.5 +app.versionCode=5 diff --git a/lib/layout/game.dart b/lib/layout/game.dart index 342f1a2737733bc5d6c15e61524403b365a954b1..0c70fe6004a06f4cca65f2dc77ec5a8240718bba 100644 --- a/lib/layout/game.dart +++ b/lib/layout/game.dart @@ -18,16 +18,7 @@ class Game { crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox(height: 8), - Container( - child: Text( - myProvider.movesCount.toString(), - style: TextStyle( - fontSize: 40, - fontWeight: FontWeight.w600, - color: Colors.black, - ), - ), - ), + Game.buildTopIndicatorWidget(myProvider), SizedBox(height: 2), Expanded( child: Board.buildGameBoard(myProvider), @@ -43,6 +34,47 @@ class Game { ); } + static Widget buildTopIndicatorWidget(Data myProvider) { + String progressIndicator = myProvider.progress.toString() + '/' + myProvider.progressTotal.toString(); + + if (myProvider.movesCount > 0) { + progressIndicator += ' (+' + myProvider.progressDelta.toString() + ')'; + } + + return Table( + children: [ + TableRow( + children: [ + Column( + children: [ + Text( + myProvider.movesCount.toString(), + style: TextStyle( + fontSize: 40, + fontWeight: FontWeight.w600, + color: Colors.black, + ), + ), + ] + ), + Column( + children: [ + Text( + progressIndicator, + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w600, + color: Colors.green, + ), + ), + ] + ), + ], + ), + ], + ); + } + static Container buildSelectColorBar(Data myProvider) { List cells = myProvider.cells; diff --git a/lib/provider/data.dart b/lib/provider/data.dart index 4f044ed5c04be6c32250366895ee80b4a19c2b86..3ecfa090a9224f0b52988474494944281941a494 100644 --- a/lib/provider/data.dart +++ b/lib/provider/data.dart @@ -24,6 +24,10 @@ class Data extends ChangeNotifier { int _movesCount = 0; List _cells = []; + int _progress = 0; + int _progressTotal = 0; + int _progressDelta = 0; + String get level => _level; void updateLevel(String level) { _level = level; @@ -80,6 +84,7 @@ class Data extends ChangeNotifier { int get boardSize => _boardSize; void updateBoardSize(int boardSize) { _boardSize = boardSize; + _progressTotal = boardSize * boardSize; } int get colorsCount => _colorsCount; @@ -135,6 +140,22 @@ class Data extends ChangeNotifier { updateMovesCount(movesCount + 1); } + int get progress => _progress; + int get progressTotal => _progressTotal; + int get progressDelta => _progressDelta; + void updateProgress(int progress) { + _progress = progress; + notifyListeners(); + } + void updateProgressTotal(int progressTotal) { + _progressTotal = progressTotal; + notifyListeners(); + } + void updateProgressDelta(int progressDelta) { + _progressDelta = progressDelta; + notifyListeners(); + } + bool get gameIsRunning => _gameIsRunning; void updateGameIsRunning(bool gameIsRunning) { _gameIsRunning = gameIsRunning; @@ -155,6 +176,7 @@ class Data extends ChangeNotifier { _gameIsRunning = false; _gameWon = false; _movesCount = 0; + _progress = 0; notifyListeners(); } diff --git a/lib/utils/board_utils.dart b/lib/utils/board_utils.dart index 6971073b68872d5f9daff86237ef7fbf13cb2f54..405685c01ae50e0ffba4152e1958d1951fbc8b07 100644 --- a/lib/utils/board_utils.dart +++ b/lib/utils/board_utils.dart @@ -39,15 +39,24 @@ class BoardUtils { myProvider.resetGame(); myProvider.updateCells(grid); + + int initProgress = BoardUtils.getSiblingFillableCells(myProvider, 0, 0, [[0, 0]]).length; + myProvider.updateProgress(initProgress); } static fillBoardFromFirstCell(Data myProvider, int value) { List cellsToFill = BoardUtils.getSiblingFillableCells(myProvider, 0, 0, [[0, 0]]); + int progressBeforeMove = cellsToFill.length; for (var cellIndex = 0; cellIndex < cellsToFill.length; cellIndex++) { myProvider.updateCellValue(cellsToFill[cellIndex][1], cellsToFill[cellIndex][0], value); } + int progressAfterMove = BoardUtils.getSiblingFillableCells(myProvider, 0, 0, [[0, 0]]).length; + int progressDelta = progressAfterMove - progressBeforeMove; + myProvider.updateProgressDelta(progressDelta); + myProvider.updateProgress(progressAfterMove); + myProvider.incrementMovesCount(); }