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

Split level setting into board size and colors counts settings

parent 0623bcd3
No related branches found
No related tags found
1 merge request!8Resolve "Separate "level" parameter into "board size" and "colors count""
Pipeline #2745 passed
......@@ -5,16 +5,30 @@ class Data extends ChangeNotifier {
// Configuration available values
List _availableLevelValues = ['easy', 'medium', 'hard', 'nightmare'];
List _availableSizeValues = ['small', 'medium', 'large', 'extra'];
List _availableColorsValues = ['5', '6', '7', '8'];
List _availableSkinValues = ['default', 'retro', 'symbols'];
List get availableLevelValues => _availableLevelValues;
List get availableSizeValues => _availableSizeValues;
List get availableColorsValues => _availableColorsValues;
List get availableSkinValues => _availableSkinValues;
// Application default configuration
String _level = '';
String _levelDefault = 'medium';
String _skin = '';
String _skinDefault = 'default';
String _parameterLevel = '';
String _parameterLevelDefault = 'medium';
String _parameterSize = '';
String _parameterSizeDefault = 'medium';
String _parameterColors = '';
String _parameterColorsDefault = '6';
String _parameterSkin = '';
String _parameterSkinDefault = 'default';
// Application current configuration
String get parameterLevel => _parameterLevel;
String get parameterSize => _parameterSize;
String get parameterColors => _parameterColors;
String get parameterSkin => _parameterSkin;
// Game data
bool _gameIsRunning = false;
......@@ -29,27 +43,35 @@ class Data extends ChangeNotifier {
int _progressTotal = 0;
int _progressDelta = 0;
String get level => _level;
void updateLevel(String level) {
_level = level;
updateBoardSize(getBoardSizeFromLevel(level));
updateColorsCount(getColorsCountFromLevel(level));
void updateParameterLevel(String parameterLevel) {
_parameterLevel = parameterLevel;
notifyListeners();
}
String get skin => _skin;
void updateSkin(String skin) {
_skin = skin;
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 _level; }
case 'level': { return _parameterLevel; }
break;
case 'size': { return _parameterSize; }
break;
case 'skin': { return _skin; }
case 'colors': { return _parameterColors; }
break;
case 'skin': { return _parameterSkin; }
break;
}
return '';
......@@ -59,6 +81,10 @@ class Data extends ChangeNotifier {
switch(parameterCode) {
case 'level': { return _availableLevelValues; }
break;
case 'size': { return _availableSizeValues; }
break;
case 'colors': { return _availableColorsValues; }
break;
case 'skin': { return _availableSkinValues; }
break;
}
......@@ -67,9 +93,13 @@ class Data extends ChangeNotifier {
setParameterValue(String parameterCode, String parameterValue) async {
switch(parameterCode) {
case 'level': { updateLevel(parameterValue); }
case 'level': { updateParameterLevel(parameterValue); }
break;
case 'size': { updateParameterSize(parameterValue); }
break;
case 'skin': { updateSkin(parameterValue); }
case 'colors': { updateParameterColors(parameterValue); }
break;
case 'skin': { updateParameterSkin(parameterValue); }
break;
}
final prefs = await SharedPreferences.getInstance();
......@@ -78,47 +108,49 @@ class Data extends ChangeNotifier {
void initParametersValues() async {
final prefs = await SharedPreferences.getInstance();
setParameterValue('level', prefs.getString('level') ?? _levelDefault);
setParameterValue('skin', prefs.getString('skin') ?? _skinDefault);
}
int get boardSize => _boardSize;
void updateBoardSize(int boardSize) {
_boardSize = boardSize;
_progressTotal = boardSize * boardSize;
setParameterValue('level', prefs.getString('level') ?? _parameterLevelDefault);
setParameterValue('size', prefs.getString('size') ?? _parameterSizeDefault);
setParameterValue('colors', prefs.getString('colors') ?? _parameterColorsDefault);
setParameterValue('skin', prefs.getString('skin') ?? _parameterSkinDefault);
}
int get colorsCount => _colorsCount;
void updateColorsCount(int colorsCount) {
_colorsCount = colorsCount;
}
int getBoardSizeFromLevel(String level) {
switch(level) {
case 'easy': { return 6; }
int getBoardSizeFromParameter(String parameterSize) {
switch(parameterSize) {
case 'small': { return 6; }
break;
case 'medium': { return 10; }
break;
case 'hard': { return 14; }
case 'large': { return 14; }
break;
case 'nightmare': { return 20; }
case 'extra': { return 20; }
break;
}
return 8;
return getBoardSizeFromParameter(_parameterSizeDefault);
}
int getColorsCountFromLevel(String level) {
switch(level) {
case 'easy': { return 4; }
int getColorsCountFromParameter(String parameterColors) {
switch(parameterColors) {
case '5': { return 5; }
break;
case 'medium': { return 5; }
case '6': { return 6; }
break;
case 'hard': { return 6; }
case '7': { return 7; }
break;
case 'nightmare': { return 7; }
case '8': { return 8; }
break;
}
return 4;
return getColorsCountFromParameter(_parameterColorsDefault);
}
int get boardSize => _boardSize;
void updateBoardSize(int boardSize) {
_boardSize = boardSize;
_progressTotal = boardSize * boardSize;
}
int get colorsCount => _colorsCount;
void updateColorsCount(int colorsCount) {
_colorsCount = colorsCount;
}
List get cells => _cells;
......
......@@ -6,7 +6,7 @@ import '../provider/data.dart';
class BoardUtils {
static printGrid(List cells) {
String stringValues = '01234567';
String stringValues = '012345678';
print('');
print('-------');
for (var rowIndex = 0; rowIndex < cells.length; rowIndex++) {
......
......@@ -9,7 +9,7 @@ class GameUtils {
static Future<void> startGame(Data myProvider) async {
print('Starting game');
print('- level: ' + myProvider.level);
print('- level: ' + myProvider.parameterLevel);
print('- size: ' + myProvider.boardSize.toString());
print('- colors: ' + myProvider.colorsCount.toString());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment