Skip to content
Snippets Groups Projects
Commit c610a9b0 authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Merge branch '7-add-a-gain-progress-indicator' into 'master'

Resolve "Add a gain/progress indicator"

Closes #7

See merge request !6
parents f208b07b def62f54
No related branches found
No related tags found
1 merge request!6Resolve "Add a gain/progress indicator"
Pipeline #2732 canceled
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.0.4 app.versionName=0.0.5
app.versionCode=4 app.versionCode=5
...@@ -18,8 +18,36 @@ class Game { ...@@ -18,8 +18,36 @@ class Game {
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
SizedBox(height: 8), SizedBox(height: 8),
Game.buildTopIndicatorWidget(myProvider),
SizedBox(height: 2),
Expanded(
child: Board.buildGameBoard(myProvider),
),
SizedBox(height: 2),
Container( Container(
child: Text( child: gameIsFinished
? Game.buildEndGameMessage(myProvider)
: Game.buildSelectColorBar(myProvider),
),
],
),
);
}
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(), myProvider.movesCount.toString(),
style: TextStyle( style: TextStyle(
fontSize: 40, fontSize: 40,
...@@ -27,19 +55,23 @@ class Game { ...@@ -27,19 +55,23 @@ class Game {
color: Colors.black, color: Colors.black,
), ),
), ),
]
), ),
SizedBox(height: 2), Column(
Expanded( children: [
child: Board.buildGameBoard(myProvider), Text(
progressIndicator,
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w600,
color: Colors.green,
), ),
SizedBox(height: 2), ),
Container( ]
child: gameIsFinished
? Game.buildEndGameMessage(myProvider)
: Game.buildSelectColorBar(myProvider),
), ),
], ],
), ),
],
); );
} }
......
...@@ -24,6 +24,10 @@ class Data extends ChangeNotifier { ...@@ -24,6 +24,10 @@ class Data extends ChangeNotifier {
int _movesCount = 0; int _movesCount = 0;
List _cells = []; List _cells = [];
int _progress = 0;
int _progressTotal = 0;
int _progressDelta = 0;
String get level => _level; String get level => _level;
void updateLevel(String level) { void updateLevel(String level) {
_level = level; _level = level;
...@@ -80,6 +84,7 @@ class Data extends ChangeNotifier { ...@@ -80,6 +84,7 @@ class Data extends ChangeNotifier {
int get boardSize => _boardSize; int get boardSize => _boardSize;
void updateBoardSize(int boardSize) { void updateBoardSize(int boardSize) {
_boardSize = boardSize; _boardSize = boardSize;
_progressTotal = boardSize * boardSize;
} }
int get colorsCount => _colorsCount; int get colorsCount => _colorsCount;
...@@ -135,6 +140,22 @@ class Data extends ChangeNotifier { ...@@ -135,6 +140,22 @@ class Data extends ChangeNotifier {
updateMovesCount(movesCount + 1); 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; bool get gameIsRunning => _gameIsRunning;
void updateGameIsRunning(bool gameIsRunning) { void updateGameIsRunning(bool gameIsRunning) {
_gameIsRunning = gameIsRunning; _gameIsRunning = gameIsRunning;
...@@ -155,6 +176,7 @@ class Data extends ChangeNotifier { ...@@ -155,6 +176,7 @@ class Data extends ChangeNotifier {
_gameIsRunning = false; _gameIsRunning = false;
_gameWon = false; _gameWon = false;
_movesCount = 0; _movesCount = 0;
_progress = 0;
notifyListeners(); notifyListeners();
} }
......
...@@ -39,15 +39,24 @@ class BoardUtils { ...@@ -39,15 +39,24 @@ class BoardUtils {
myProvider.resetGame(); myProvider.resetGame();
myProvider.updateCells(grid); myProvider.updateCells(grid);
int initProgress = BoardUtils.getSiblingFillableCells(myProvider, 0, 0, [[0, 0]]).length;
myProvider.updateProgress(initProgress);
} }
static fillBoardFromFirstCell(Data myProvider, int value) { static fillBoardFromFirstCell(Data myProvider, int value) {
List cellsToFill = BoardUtils.getSiblingFillableCells(myProvider, 0, 0, [[0, 0]]); List cellsToFill = BoardUtils.getSiblingFillableCells(myProvider, 0, 0, [[0, 0]]);
int progressBeforeMove = cellsToFill.length;
for (var cellIndex = 0; cellIndex < cellsToFill.length; cellIndex++) { for (var cellIndex = 0; cellIndex < cellsToFill.length; cellIndex++) {
myProvider.updateCellValue(cellsToFill[cellIndex][1], cellsToFill[cellIndex][0], value); 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(); myProvider.incrementMovesCount();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment