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