diff --git a/android/gradle.properties b/android/gradle.properties index 6c1d873456149a8611e43a05ae56e4f50c73274f..24add27a90a4accaf6a1ee28ec651d0d6bda4f8e 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.19 -app.versionCode=19 +app.versionName=0.0.20 +app.versionCode=20 diff --git a/fastlane/metadata/android/en-US/changelogs/20.txt b/fastlane/metadata/android/en-US/changelogs/20.txt new file mode 100644 index 0000000000000000000000000000000000000000..6428eb6cd6f0256974d22a071ffebab5d6b4d880 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/20.txt @@ -0,0 +1 @@ +Fix / improve code, improve display diff --git a/fastlane/metadata/android/fr-FR/changelogs/20.txt b/fastlane/metadata/android/fr-FR/changelogs/20.txt new file mode 100644 index 0000000000000000000000000000000000000000..d3df4619f879bf9be229fbe9d56990238c4551db --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/20.txt @@ -0,0 +1 @@ +Corrections et amélioration de code, améliorations d'affichage diff --git a/lib/entities/cell.dart b/lib/entities/cell.dart index 47993965c8f1d9fac19c012c49966aae5ec857c3..155e1a73477be25c47b20429285bfea04febe72e 100644 --- a/lib/entities/cell.dart +++ b/lib/entities/cell.dart @@ -1,13 +1,12 @@ +import 'package:colors/provider/data.dart'; +import 'package:colors/utils/board_utils.dart'; import 'package:flutter/material.dart'; -import '../provider/data.dart'; -import '../utils/board_utils.dart'; - class Cell { int value; Cell( - @required this.value, + this.value, ); Widget widget(Data myProvider, int row, int col) { @@ -28,16 +27,16 @@ class Cell { cellColorImage, Center( child: Text( - '•', - style: TextStyle( - color: Colors.black, - fontSize: blackPointFontSize, - fontWeight: FontWeight.w800, - ), - textAlign: TextAlign.center + '•', + style: TextStyle( + color: Colors.black, + fontSize: blackPointFontSize, + fontWeight: FontWeight.w800, ), + textAlign: TextAlign.center, + ), ), - ] + ], ); } @@ -60,14 +59,15 @@ class Cell { child: GestureDetector( child: Image( image: AssetImage(imageAsset), - fit: BoxFit.fill + fit: BoxFit.fill, ), onTap: () { - if (!myProvider.animationInProgress && myProvider.getFirstCellValue() != this.value) { + if (!myProvider.animationInProgress && + myProvider.getFirstCellValue() != this.value) { BoardUtils.fillBoardFromFirstCell(myProvider, this.value); } }, - ) + ), ); } @@ -75,5 +75,4 @@ class Cell { int cellValue = this.value; return 'assets/skins/' + myProvider.parameterSkin + '_' + cellValue.toString() + '.png'; } - } diff --git a/lib/layout/board.dart b/lib/layout/board.dart index f8ae151b9887f8cdcae8c4f08fdde0e11106e248..a6aee3016744d56ad71f571e51eb92446669037a 100644 --- a/lib/layout/board.dart +++ b/lib/layout/board.dart @@ -1,9 +1,7 @@ +import 'package:colors/provider/data.dart'; import 'package:flutter/material.dart'; -import '../provider/data.dart'; - class Board { - static Container buildGameBoard(Data myProvider) { return Container( margin: EdgeInsets.all(4), @@ -24,18 +22,17 @@ class Board { defaultColumnWidth: IntrinsicColumnWidth(), children: [ for (var row = 0; row < boardSize; row++) - TableRow(children: [ - for (var col = 0; col < boardSize; col++) - Column(children: [ - cells[row][col].widget( - myProvider, - row, - col - ) - ]), - ]), - ] + TableRow( + children: [ + for (var col = 0; col < boardSize; col++) + Column( + children: [ + cells[row][col].widget(myProvider, row, col), + ], + ), + ], + ), + ], ); } - } diff --git a/lib/layout/game.dart b/lib/layout/game.dart index 1fd8e22ca39fc2624d60e5e7b31dee5813924fb6..6ceeaf6006b62e06148ad853d26d14fa252dfa09 100644 --- a/lib/layout/game.dart +++ b/lib/layout/game.dart @@ -1,14 +1,10 @@ -import 'dart:math'; - +import 'package:colors/entities/cell.dart'; +import 'package:colors/layout/board.dart'; +import 'package:colors/provider/data.dart'; +import 'package:colors/utils/game_utils.dart'; import 'package:flutter/material.dart'; -import '../entities/cell.dart'; -import '../layout/board.dart'; -import '../provider/data.dart'; -import '../utils/game_utils.dart'; - class Game { - static Container buildGameWidget(Data myProvider) { bool gameIsFinished = myProvider.isGameFinished(); @@ -26,8 +22,8 @@ class Game { SizedBox(height: 2), Container( child: gameIsFinished - ? Game.buildEndGameMessage(myProvider) - : Game.buildSelectColorBar(myProvider), + ? Game.buildEndGameMessage(myProvider) + : Game.buildSelectColorBar(myProvider), ), ], ), @@ -35,7 +31,8 @@ class Game { } static Widget buildTopIndicatorWidget(Data myProvider) { - String progressIndicator = myProvider.progress.toString() + '/' + myProvider.progressTotal.toString(); + String progressIndicator = + myProvider.progress.toString() + '/' + myProvider.progressTotal.toString(); if (myProvider.movesCount > 0) { progressIndicator += ' (+' + myProvider.progressDelta.toString() + ')'; @@ -68,7 +65,7 @@ class Game { color: maxMovesCountColor, ), ), - ] + ], ), Column( children: [ @@ -80,7 +77,7 @@ class Game { color: Colors.green, ), ), - ] + ], ), ], ), @@ -89,38 +86,31 @@ class Game { } static Container buildSelectColorBar(Data myProvider) { - List cells = myProvider.cells; - int maxValue = myProvider.colorsCount; return Container( margin: EdgeInsets.all(2), padding: EdgeInsets.all(2), - child: Table( defaultColumnWidth: IntrinsicColumnWidth(), children: [ TableRow( children: [ - for ( - int value = 1; - value <= maxValue; - value++ - ) + for (int value = 1; value <= maxValue; value++) Column( children: [ - Cell(value).widgetFillBoardWithColor(myProvider) - ] + Cell(value).widgetFillBoardWithColor(myProvider), + ], ), - ] + ], ), - ] + ], ), ); } - static FlatButton buildRestartGameButton(Data myProvider) { - return FlatButton( + static TextButton buildRestartGameButton(Data myProvider) { + return TextButton( child: Container( child: Image( image: AssetImage('assets/icons/button_back.png'), @@ -141,26 +131,30 @@ class Game { Image decorationImage = Image( image: AssetImage(decorationImageAssetName), - fit: BoxFit.fill + fit: BoxFit.fill, ); return Container( margin: EdgeInsets.all(2), padding: EdgeInsets.all(2), - child: Table( defaultColumnWidth: IntrinsicColumnWidth(), children: [ TableRow( children: [ - Column(children: [ decorationImage ]), - Column(children: [ buildRestartGameButton(myProvider) ]), - Column(children: [ decorationImage ]), + Column( + children: [decorationImage], + ), + Column( + children: [buildRestartGameButton(myProvider)], + ), + Column( + children: [decorationImage], + ), ], ), - ] - ) + ], + ), ); } - } diff --git a/lib/layout/parameters.dart b/lib/layout/parameters.dart index 30b9665db705c13e78444237e5b5dc94a181a7b9..d1bbd6c481bee09a38729fd717c283fc8e1ccc46 100644 --- a/lib/layout/parameters.dart +++ b/lib/layout/parameters.dart @@ -1,28 +1,45 @@ +import 'package:colors/provider/data.dart'; +import 'package:colors/utils/game_utils.dart'; import 'package:flutter/material.dart'; -import '../provider/data.dart'; -import '../utils/game_utils.dart'; - class Parameters { + static double separatorHeight = 2.0; + static double blockMargin = 8.0; + static double blockPadding = 3.0; + static Color buttonBackgroundColor = Colors.white; + static Color buttonBorderColorActive = Colors.blue; + static Color buttonBorderColorInactive = Colors.white; + static double buttonBorderWidth = 8.0; + static double buttonBorderRadius = 6.0; + static double buttonPadding = 0.0; + static double buttonMargin = 0.0; static Container buildParametersSelector(Data myProvider) { + List<Widget> lines = []; + + List parameters = myProvider.availableParameters; + for (var index = 0; index < parameters.length; index++) { + lines.add(Parameters.buildParameterSelector(myProvider, parameters[index])); + lines.add(SizedBox(height: Parameters.separatorHeight)); + } + return Container( - padding: EdgeInsets.all(2), - margin: EdgeInsets.all(2), child: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, children: [ - Parameters.buildParameterSelector(myProvider, 'level'), - SizedBox(height: 5), - Parameters.buildParameterSelector(myProvider, 'size'), - SizedBox(height: 5), - Parameters.buildParameterSelector(myProvider, 'colors'), - SizedBox(height: 5), - Parameters.buildParameterSelector(myProvider, 'skin'), - SizedBox(height: 5), - - Parameters.buildStartGameButton(myProvider), + SizedBox(height: Parameters.separatorHeight), + Expanded( + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: lines, + ), + ), + SizedBox(height: Parameters.separatorHeight), + Container( + child: Parameters.buildStartGameButton(myProvider), + ), ], ), ); @@ -33,15 +50,14 @@ class Parameters { children: [ Image( image: AssetImage('assets/icons/game_win.png'), - fit: BoxFit.fill + fit: BoxFit.fill, ), - ] + ], ); return Container( - margin: EdgeInsets.all(2), - padding: EdgeInsets.all(2), - + margin: EdgeInsets.all(Parameters.blockMargin), + padding: EdgeInsets.all(Parameters.blockPadding), child: Table( defaultColumnWidth: IntrinsicColumnWidth(), children: [ @@ -50,7 +66,7 @@ class Parameters { decorationImage, Column( children: [ - FlatButton( + TextButton( child: Container( child: Image( image: AssetImage('assets/icons/button_start.png'), @@ -59,13 +75,13 @@ class Parameters { ), onPressed: () => GameUtils.startGame(myProvider), ), - ] + ], ), decorationImage, ], ), - ] - ) + ], + ), ); } @@ -73,7 +89,7 @@ class Parameters { List availableValues = myProvider.getParameterAvailableValues(parameterCode); if (availableValues.length == 1) { - return SizedBox(height: 1); + return SizedBox(height: 0.0); } return Table( @@ -85,7 +101,7 @@ class Parameters { Column( children: [ _buildParameterButton(myProvider, parameterCode, availableValues[index]) - ] + ], ), ], ), @@ -93,7 +109,8 @@ class Parameters { ); } - static TextButton _buildParameterButton(Data myProvider, String parameterCode, String parameterValue) { + static Widget _buildParameterButton( + Data myProvider, String parameterCode, String parameterValue) { String currentValue = myProvider.getParameterValue(parameterCode).toString(); bool isActive = (parameterValue == currentValue); @@ -101,13 +118,16 @@ class Parameters { return TextButton( child: Container( - padding: EdgeInsets.all(2), + margin: EdgeInsets.all(Parameters.buttonMargin), + padding: EdgeInsets.all(Parameters.buttonPadding), decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(10), + color: Parameters.buttonBackgroundColor, + borderRadius: BorderRadius.circular(Parameters.buttonBorderRadius), border: Border.all( - color: isActive ? Colors.blue : Colors.white, - width: 10, + color: isActive + ? Parameters.buttonBorderColorActive + : Parameters.buttonBorderColorInactive, + width: Parameters.buttonBorderWidth, ), ), child: Image( @@ -118,5 +138,4 @@ class Parameters { onPressed: () => myProvider.setParameterValue(parameterCode, parameterValue), ); } - } diff --git a/lib/main.dart b/lib/main.dart index 7f448662ed2c1ea856492d67bacbf56f62d81c3a..f1cbde49ed171cd24aa4f396a79d86c542f78857 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,11 +1,10 @@ +import 'package:colors/provider/data.dart'; +import 'package:colors/screens/home.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; import 'package:overlay_support/overlay_support.dart'; -import 'provider/data.dart'; -import 'screens/home.dart'; - void main() { WidgetsFlutterBinding.ensureInitialized(); SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]) @@ -17,21 +16,23 @@ class MyApp extends StatelessWidget { Widget build(BuildContext context) { return ChangeNotifierProvider( create: (BuildContext context) => Data(), - child: Consumer<Data>(builder: (context, data, child) { - return OverlaySupport( - child: MaterialApp( - debugShowCheckedModeBanner: false, - theme: ThemeData( - primaryColor: Colors.blue, - visualDensity: VisualDensity.adaptivePlatformDensity, + child: Consumer<Data>( + builder: (context, data, child) { + return OverlaySupport( + child: MaterialApp( + debugShowCheckedModeBanner: false, + theme: ThemeData( + primaryColor: Colors.blue, + visualDensity: VisualDensity.adaptivePlatformDensity, + ), + home: Home(), + routes: { + Home.id: (context) => Home(), + }, ), - home: Home(), - routes: { - Home.id: (context) => Home(), - }, - ), - ); - }), + ); + }, + ), ); } } diff --git a/lib/provider/data.dart b/lib/provider/data.dart index bc47c16cfee36cfee43837a0d67157223f88d71a..ddd226500e6d98f266654ea7074b80118c337f65 100644 --- a/lib/provider/data.dart +++ b/lib/provider/data.dart @@ -2,6 +2,9 @@ import 'package:flutter/foundation.dart'; import 'package:shared_preferences/shared_preferences.dart'; class Data extends ChangeNotifier { + // Configuration available parameters + List _availableParameters = ['level', 'size', 'colors', 'skin']; + List get availableParameters => _availableParameters; // Configuration available values List _availableLevelValues = ['easy', 'medium', 'hard', 'nightmare']; @@ -44,64 +47,94 @@ class Data extends ChangeNotifier { int _progressTotal = 0; int _progressDelta = 0; - void updateParameterLevel(String parameterLevel) { _parameterLevel = parameterLevel; notifyListeners(); } + void updateParameterSize(String parameterSize) { _parameterSize = parameterSize; updateBoardSize(getBoardSizeFromParameter(parameterSize)); notifyListeners(); } + void updateParameterColors(String parameterColors) { _parameterColors = parameterColors; updateColorsCount(getColorsCountFromParameter(parameterColors)); notifyListeners(); } + void updateParameterSkin(String parameterSkin) { _parameterSkin = parameterSkin; notifyListeners(); } - getParameterValue(String parameterCode) { - switch(parameterCode) { - case 'level': { return _parameterLevel; } - break; - case 'size': { return _parameterSize; } - break; - case 'colors': { return _parameterColors; } - break; - case 'skin': { return _parameterSkin; } - break; + String getParameterValue(String parameterCode) { + switch (parameterCode) { + case 'level': + { + return _parameterLevel; + } + case 'size': + { + return _parameterSize; + } + case 'colors': + { + return _parameterColors; + } + case 'skin': + { + return _parameterSkin; + } } return ''; } List getParameterAvailableValues(String parameterCode) { - switch(parameterCode) { - case 'level': { return _availableLevelValues; } - break; - case 'size': { return _availableSizeValues; } - break; - case 'colors': { return _availableColorsValues; } - break; - case 'skin': { return _availableSkinValues; } - break; + switch (parameterCode) { + case 'level': + { + return _availableLevelValues; + } + case 'size': + { + return _availableSizeValues; + } + case 'colors': + { + return _availableColorsValues; + } + case 'skin': + { + return _availableSkinValues; + } } return []; } - setParameterValue(String parameterCode, String parameterValue) async { - switch(parameterCode) { - case 'level': { updateParameterLevel(parameterValue); } - break; - case 'size': { updateParameterSize(parameterValue); } - break; - case 'colors': { updateParameterColors(parameterValue); } - break; - case 'skin': { updateParameterSkin(parameterValue); } - break; + void setParameterValue(String parameterCode, String parameterValue) async { + switch (parameterCode) { + case 'level': + { + updateParameterLevel(parameterValue); + } + break; + case 'size': + { + updateParameterSize(parameterValue); + } + break; + case 'colors': + { + updateParameterColors(parameterValue); + } + break; + case 'skin': + { + updateParameterSkin(parameterValue); + } + break; } final prefs = await SharedPreferences.getInstance(); prefs.setString(parameterCode, parameterValue); @@ -116,43 +149,67 @@ class Data extends ChangeNotifier { } int getBoardSizeFromParameter(String parameterSize) { - switch(parameterSize) { - case 'small': { return 6; } - break; - case 'medium': { return 10; } - break; - case 'large': { return 14; } - break; - case 'extra': { return 20; } - break; + switch (parameterSize) { + case 'small': + { + return 6; + } + case 'medium': + { + return 10; + } + case 'large': + { + return 14; + } + case 'extra': + { + return 20; + } } return getBoardSizeFromParameter(_parameterSizeDefault); } int getColorsCountFromParameter(String parameterColors) { - switch(parameterColors) { - case '5': { return 5; } - break; - case '6': { return 6; } - break; - case '7': { return 7; } - break; - case '8': { return 8; } - break; + switch (parameterColors) { + case '5': + { + return 5; + } + case '6': + { + return 6; + } + case '7': + { + return 7; + } + case '8': + { + return 8; + } } return getColorsCountFromParameter(_parameterColorsDefault); } int getMovesCountLimitDeltaFromLevelParameter(String parameterLevel) { - switch(parameterLevel) { - case 'easy': { return 5; } - break; - case 'medium': { return 3; } - break; - case 'hard': { return 1; } - break; - case 'nightmare': { return -1; } - break; + switch (parameterLevel) { + case 'easy': + { + return 5; + } + case 'medium': + { + return 3; + } + case 'hard': + { + return 1; + } + case 'nightmare': + { + return -1; + } } return getMovesCountLimitDeltaFromLevelParameter(_parameterLevelDefault); } @@ -188,6 +245,7 @@ class Data extends ChangeNotifier { _movesCount = movesCount; notifyListeners(); } + void incrementMovesCount() { updateMovesCount(movesCount + 1); } @@ -204,10 +262,12 @@ class Data extends ChangeNotifier { _progress = progress; notifyListeners(); } + void updateProgressTotal(int progressTotal) { _progressTotal = progressTotal; notifyListeners(); } + void updateProgressDelta(int progressDelta) { _progressDelta = progressDelta; notifyListeners(); @@ -243,5 +303,4 @@ class Data extends ChangeNotifier { _progress = 0; notifyListeners(); } - } diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 1381d16b440973da96a90597717c719d2a262b58..dfcc4710b0f124072f1817ad6520eb26ae785819 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -1,11 +1,10 @@ +import 'package:colors/layout/game.dart'; +import 'package:colors/layout/parameters.dart'; +import 'package:colors/provider/data.dart'; +import 'package:colors/utils/game_utils.dart'; import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; import 'package:overlay_support/overlay_support.dart'; - -import '../layout/game.dart'; -import '../layout/parameters.dart'; -import '../provider/data.dart'; -import '../utils/game_utils.dart'; +import 'package:provider/provider.dart'; class Home extends StatefulWidget { static const String id = 'home'; @@ -31,7 +30,7 @@ class _HomeState extends State<Home> { if (myProvider.gameIsRunning) { menuActions = [ - FlatButton( + TextButton( child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(4), @@ -43,7 +42,7 @@ class _HomeState extends State<Home> { margin: EdgeInsets.all(8), child: Image( image: AssetImage('assets/icons/button_back.png'), - fit: BoxFit.fill + fit: BoxFit.fill, ), ), onPressed: () => toast('Long press to quit game...'), @@ -59,10 +58,10 @@ class _HomeState extends State<Home> { body: SafeArea( child: Center( child: myProvider.gameIsRunning - ? Game.buildGameWidget(myProvider) - : Parameters.buildParametersSelector(myProvider) + ? Game.buildGameWidget(myProvider) + : Parameters.buildParametersSelector(myProvider), ), - ) + ), ); } } diff --git a/lib/utils/board_utils.dart b/lib/utils/board_utils.dart index 85aab4022dbf834faf2973074995eb843bddc649..90e2900bfa55c258d0fb30a12dc41d38e6385447 100644 --- a/lib/utils/board_utils.dart +++ b/lib/utils/board_utils.dart @@ -1,11 +1,10 @@ import 'dart:math'; import 'dart:async'; -import '../entities/cell.dart'; -import '../provider/data.dart'; +import 'package:colors/entities/cell.dart'; +import 'package:colors/provider/data.dart'; class BoardUtils { - static printGrid(List cells) { String stringValues = '012345678'; print(''); @@ -42,7 +41,9 @@ class BoardUtils { myProvider.updateCells(grid); myProvider.updateMaxMovesCount(computeMaxMovesCountLimit(myProvider)); - int initProgress = BoardUtils.getSiblingFillableCells(myProvider, 0, 0, [[0, 0]]).length; + int initProgress = BoardUtils.getSiblingFillableCells(myProvider, 0, 0, [ + [0, 0] + ]).length; myProvider.updateProgress(initProgress); } @@ -51,32 +52,38 @@ class BoardUtils { int colorsCount = myProvider.colorsCount; int baseMaxMovesCount = (30 * (boardSize * colorsCount) / (17 * 6)).round(); - int deltaFromLevel = myProvider.getMovesCountLimitDeltaFromLevelParameter(myProvider.parameterLevel); + int deltaFromLevel = + myProvider.getMovesCountLimitDeltaFromLevelParameter(myProvider.parameterLevel); return baseMaxMovesCount + deltaFromLevel; } 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; // Sort cells from the closest to the furthest, relatively to the top left corner - cellsToFill.sort((a, b) => (pow(a[0], 2) + pow(a[1], 2)).compareTo(pow(b[0], 2) + pow(b[1], 2))); + cellsToFill + .sort((a, b) => (pow(a[0], 2) + pow(a[1], 2)).compareTo(pow(b[0], 2) + pow(b[1], 2))); - Timer _timerAnimateBoard; const interval = const Duration(milliseconds: 10); int cellIndex = 0; myProvider.updateAnimationInProgress(true); - _timerAnimateBoard = new Timer.periodic( + Timer.periodic( interval, (Timer timer) { if (cellIndex < cellsToFill.length) { - myProvider.updateCellValue(cellsToFill[cellIndex][1], cellsToFill[cellIndex][0], value); + myProvider.updateCellValue( + cellsToFill[cellIndex][1], cellsToFill[cellIndex][0], value); cellIndex++; } else { timer.cancel(); - int progressAfterMove = BoardUtils.getSiblingFillableCells(myProvider, 0, 0, [[0, 0]]).length; + int progressAfterMove = BoardUtils.getSiblingFillableCells(myProvider, 0, 0, [ + [0, 0] + ]).length; int progressDelta = progressAfterMove - progressBeforeMove; myProvider.updateProgressDelta(progressDelta); myProvider.updateProgress(progressAfterMove); @@ -107,25 +114,20 @@ class BoardUtils { int candidateRow = row + deltaRow; int candidateCol = col + deltaCol; - if ( - (candidateRow >= 0 && candidateRow < boardSize) - && - (candidateCol >= 0 && candidateCol < boardSize) - ) { + if ((candidateRow >= 0 && candidateRow < boardSize) && + (candidateCol >= 0 && candidateCol < boardSize)) { if (cells[candidateRow][candidateCol].value == referenceValue) { bool alreadyFound = false; for (var index = 0; index < siblingCells.length; index++) { - if ( - (siblingCells[index][0] == candidateRow) - && - (siblingCells[index][1] == candidateCol) - ) { + if ((siblingCells[index][0] == candidateRow) && + (siblingCells[index][1] == candidateCol)) { alreadyFound = true; } } if (!alreadyFound) { siblingCells.add([candidateRow, candidateCol]); - siblingCells = getSiblingFillableCells(myProvider, candidateRow, candidateCol, siblingCells); + siblingCells = getSiblingFillableCells( + myProvider, candidateRow, candidateCol, siblingCells); } } } @@ -155,5 +157,4 @@ class BoardUtils { return true; } - } diff --git a/lib/utils/game_utils.dart b/lib/utils/game_utils.dart index b9eb78000c006e3be0afca72526db1a012784e29..f55b85217226913e1fe0d6a903d740b2bedcbbe8 100644 --- a/lib/utils/game_utils.dart +++ b/lib/utils/game_utils.dart @@ -1,8 +1,7 @@ -import '../provider/data.dart'; -import '../utils/board_utils.dart'; +import 'package:colors/provider/data.dart'; +import 'package:colors/utils/board_utils.dart'; class GameUtils { - static Future<void> resetGame(Data myProvider) async { myProvider.updateGameIsRunning(false); } @@ -17,5 +16,4 @@ class GameUtils { myProvider.updateGameIsRunning(true); } - } diff --git a/pubspec.yaml b/pubspec.yaml index c16bdce6d4a9d525c68d051b2a5ca97cd4baefa9..00c90a89ed93f3ced621e25712d042b503efc500 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ -name: calculus -description: calculus application +name: colors +description: colors application publish_to: 'none' version: 1.0.0+1