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

Improve flexibility in layout

parent dce73191
No related branches found
No related tags found
1 merge request!30Resolve "Improve flexibility in layout"
Pipeline #1688 passed
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=0.0.27
app.versionCode=27
app.versionName=0.0.28
app.versionCode=28
Improve flexibility in layout
Amélioration de la flexibilité dans la mise en page
......@@ -81,6 +81,10 @@ class Cell {
}
Container widgetUpdateValue(Data myProvider) {
if (this.value < 0) {
return Container();
}
String imageAsset = 'assets/skins/empty.png';
if (this.value > 0) {
imageAsset = 'assets/skins/' + myProvider.skin + '_' + this.value.toString() + '.png';
......
......@@ -34,6 +34,10 @@ class Game {
bool isUpdatableCellSelected = isCellSelected ? !myProvider.cells[myProvider.currentCellRow][myProvider.currentCellCol].isFixed : false;
int maxValue = myProvider.blockSizeHorizontal * myProvider.blockSizeVertical;
int maxItemsPerLine = 10;
int linesCount = (maxValue / maxItemsPerLine).floor() + 1;
int itemsCountPerLine = min(maxItemsPerLine, maxValue + 1);
return Container(
margin: EdgeInsets.all(2),
padding: EdgeInsets.all(2),
......@@ -41,19 +45,24 @@ class Game {
child: Table(
defaultColumnWidth: IntrinsicColumnWidth(),
children: [
TableRow(
children: [
for (var value = 0; value <= maxValue; value++)
Column(
children: [
Cell(
isUpdatableCellSelected ? value : 0,
false
).widgetUpdateValue(myProvider)
]
),
]
),
for (var lineIndex = 0; lineIndex < linesCount; lineIndex++)
TableRow(
children: [
for (
var value = lineIndex * itemsCountPerLine;
value < (lineIndex + 1) * itemsCountPerLine;
value++
)
Column(
children: [
Cell(
isUpdatableCellSelected ? (value <= maxValue ? value : -1) : -1,
false
).widgetUpdateValue(myProvider)
]
),
]
),
]
),
);
......
......@@ -5,18 +5,22 @@ import '../utils/game_utils.dart';
class Parameters {
static const double _parameterButtonSize = 70;
static const double _startButtonSize = 150;
static const double _startButtonSize = 120;
static Container buildParametersSelector(Data myProvider) {
return Container(
padding: EdgeInsets.all(2),
margin: EdgeInsets.all(2),
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Parameters.buildParameterSelector(myProvider, 'difficulty'),
SizedBox(height: 5),
Parameters.buildParameterSelector(myProvider, 'size'),
SizedBox(height: 5),
Parameters.buildParameterSelector(myProvider, 'skin'),
SizedBox(height: 5),
Parameters.buildStartGameButton(myProvider),
],
......@@ -31,6 +35,7 @@ class Parameters {
mainAxisAlignment: MainAxisAlignment.center,
children: [
FlatButton(
padding: EdgeInsets.all(2),
child: Image(
image: AssetImage('assets/icons/button_start.png'),
width: _startButtonSize,
......@@ -44,28 +49,23 @@ class Parameters {
}
static Column buildParameterSelector(Data myProvider, String parameterCode) {
static Table buildParameterSelector(Data myProvider, String parameterCode) {
List availableValues = myProvider.getParameterAvailableValues(parameterCode);
return Column(
return Table(
defaultColumnWidth: IntrinsicColumnWidth(),
children: [
Table(
defaultColumnWidth: IntrinsicColumnWidth(),
TableRow(
children: [
TableRow(
children: [
for (var index = 0; index < availableValues.length; index++)
Column(
children: [
_buildParameterButton(myProvider, parameterCode, availableValues[index])
]
),
],
),
for (var index = 0; index < availableValues.length; index++)
Column(
children: [
_buildParameterButton(myProvider, parameterCode, availableValues[index])
]
),
],
),
SizedBox(height: 20),
]
],
);
}
......@@ -77,6 +77,7 @@ class Parameters {
String imageAsset = 'assets/icons/' + parameterCode + '_' + parameterValue + '.png';
return FlatButton(
padding: EdgeInsets.all(2),
child: Container(
decoration: BoxDecoration(
color: Colors.white,
......@@ -88,8 +89,6 @@ class Parameters {
),
child: Image(
image: AssetImage(imageAsset),
width: _parameterButtonSize,
height: _parameterButtonSize,
fit: BoxFit.fill
),
),
......
......@@ -7,12 +7,13 @@ import '../provider/data.dart';
class BoardUtils {
static printGrid(List cells) {
String stringValues = '0123456789';
print('');
print('-------');
for (var rowIndex = 0; rowIndex < cells.length; rowIndex++) {
String row = '';
for (var colIndex = 0; colIndex < cells[rowIndex].length; colIndex++) {
row += cells[rowIndex][colIndex].value.toString();
row += stringValues[cells[rowIndex][colIndex].value];
}
print(row);
}
......@@ -62,11 +63,14 @@ class BoardUtils {
List cells = [];
int boardSize = int.parse(pow(grid.length, 1/2).toStringAsFixed(0));
String stringValues = '0123456789';
int index = 0;
for (var rowIndex = 0; rowIndex < boardSize; rowIndex++) {
List row = [];
for (var colIndex = 0; colIndex < boardSize; colIndex++) {
int value = int.parse(grid[index++]);
String stringValue = grid[index++];
int value = stringValues.indexOf(stringValue);
row.add(Cell(value, (value != 0)));
}
cells.add(row);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment