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

Improve layout

parent 8c9b0709
No related branches found
No related tags found
1 merge request!7Resolve "Improve layout"
Pipeline #4393 passed
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.0.7 app.versionName=0.0.8
app.versionCode=7 app.versionCode=8
Improve layout
Améliorations graphiques
...@@ -7,7 +7,7 @@ class Counter { ...@@ -7,7 +7,7 @@ class Counter {
// Current counter // Current counter
bool _match = false; // Does this new tetrimino touch an other tetrimino of same player bool _match = false; // Does this new tetrimino touch an other tetrimino of same player
int _lines = 0; // Count lines fully filled by this new tetrimino int _lines = 0; // Count lines fully filled by this new tetrimino
int _holes = 0; // Count hole non fillable caused by this new tetrimino int _holes = 0; // Count non fillable holes caused by this new tetrimino
// Points definitions // Points definitions
int _base = 50; int _base = 50;
...@@ -19,13 +19,26 @@ class Counter { ...@@ -19,13 +19,26 @@ class Counter {
Color buttonIconColor = Colors.blue; Color buttonIconColor = Colors.blue;
double iconSize = 30.0; double iconSize = 30.0;
TableRow spacer() {
double height = 7;
return TableRow(children: [
SizedBox(height: height),
SizedBox(height: height),
SizedBox(height: height),
SizedBox(height: height)
]);
}
Widget buildCounterWidget(Data myProvider) { Widget buildCounterWidget(Data myProvider) {
return Container( return Container(
child: Table( child: Table(
children: [ children: [
buildMatchWidget(myProvider), buildMatchWidget(myProvider),
spacer(),
buildLinesWidget(myProvider), buildLinesWidget(myProvider),
spacer(),
buildHolesWidget(myProvider), buildHolesWidget(myProvider),
spacer(),
], ],
), ),
); );
......
...@@ -36,16 +36,7 @@ class Player { ...@@ -36,16 +36,7 @@ class Player {
} }
Widget buildManagerWidget(Data myProvider) { Widget buildManagerWidget(Data myProvider) {
List<Widget> items = [ List<Widget> items = [];
Text(
_score.toString(),
style: TextStyle(
fontFamily: 'Blocks',
fontSize: 100,
fontWeight: FontWeight.bold,
),
),
];
if (myProvider.currentPlayer == playerId) { if (myProvider.currentPlayer == playerId) {
items.add(_counter.buildCounterWidget(myProvider)); items.add(_counter.buildCounterWidget(myProvider));
...@@ -65,7 +56,21 @@ class Player { ...@@ -65,7 +56,21 @@ class Player {
} }
Widget buildSubmitWidget(Data myProvider) { Widget buildSubmitWidget(Data myProvider) {
return Row( double fontSize = 70;
return Container(
decoration: BoxDecoration(
border: Border(
top: BorderSide(
color: Colors.black,
width: 2,
),
),
),
padding: EdgeInsets.only(
top: 5,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
...@@ -73,7 +78,7 @@ class Player { ...@@ -73,7 +78,7 @@ class Player {
'+' + _counter.computePoints().toString(), '+' + _counter.computePoints().toString(),
style: TextStyle( style: TextStyle(
fontFamily: 'Blocks', fontFamily: 'Blocks',
fontSize: 50, fontSize: fontSize,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
...@@ -85,8 +90,8 @@ class Player { ...@@ -85,8 +90,8 @@ class Player {
constraints: BoxConstraints(), constraints: BoxConstraints(),
icon: Icon( icon: Icon(
Icons.done_all, Icons.done_all,
color: Colors.amber, color: Colors.orange,
size: 25, size: fontSize / 2.5,
), ),
onPressed: () { onPressed: () {
_score = _score + _counter.computePoints(); _score = _score + _counter.computePoints();
...@@ -98,19 +103,48 @@ class Player { ...@@ -98,19 +103,48 @@ class Player {
width: 10, width: 10,
), ),
], ],
),
); );
} }
Widget buildPlayerBoard(Data myProvider, double screenWidth) { Widget buildPlayerBoard(Data myProvider, double screenWidth, bool isActive) {
double tetriminoBlockWidth = screenWidth / 2; double tetriminoBlockWidth = screenWidth / 2.3;
Color borderColor = isActive ? Colors.greenAccent : Colors.blueGrey;
double borderWidth = 10;
return Row( return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text(
_score.toString(),
style: TextStyle(
fontFamily: 'Blocks',
fontSize: 130,
fontWeight: FontWeight.bold,
),
),
Container(
decoration: BoxDecoration(
border: Border.all(
color: borderColor,
width: borderWidth,
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
buildTetriminoWidget(myProvider, tetriminoBlockWidth), isActive
? buildTetriminoWidget(myProvider, tetriminoBlockWidth)
: SizedBox(
height: tetriminoBlockWidth,
),
buildManagerWidget(myProvider), buildManagerWidget(myProvider),
], ],
),
)
],
); );
} }
......
...@@ -2,26 +2,16 @@ import 'package:flutter/material.dart'; ...@@ -2,26 +2,16 @@ import 'package:flutter/material.dart';
import 'package:tetrisdual/provider/data.dart'; import 'package:tetrisdual/provider/data.dart';
class Board { class Board {
static Container activePlayer(Widget playerBoard, bool active) {
Color borderColor = active ? Colors.greenAccent : Colors.blueGrey;
return Container(
decoration: BoxDecoration(
border: Border.all(
color: borderColor,
width: 15,
),
),
child: playerBoard,
);
}
static Container buildGameBoard(Data myProvider, double screenWidth) { static Container buildGameBoard(Data myProvider, double screenWidth) {
Widget player1 = new RotatedBox( Widget player1 = new RotatedBox(
quarterTurns: 2, quarterTurns: 2,
child: myProvider.getPlayer(1).buildPlayerBoard(myProvider, screenWidth), child: myProvider
.getPlayer(1)
.buildPlayerBoard(myProvider, screenWidth, myProvider.currentPlayer == 1),
); );
Widget player2 = myProvider.getPlayer(2).buildPlayerBoard(myProvider, screenWidth); Widget player2 = myProvider
.getPlayer(2)
.buildPlayerBoard(myProvider, screenWidth, myProvider.currentPlayer == 2);
Widget togglePlayerWidget = GestureDetector( Widget togglePlayerWidget = GestureDetector(
onTapUp: (details) { onTapUp: (details) {
...@@ -40,9 +30,9 @@ class Board { ...@@ -40,9 +30,9 @@ class Board {
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
activePlayer(player1, myProvider.currentPlayer == 1), player1,
togglePlayerWidget, togglePlayerWidget,
activePlayer(player2, myProvider.currentPlayer == 2), player2,
], ],
), ),
); );
......
...@@ -42,7 +42,7 @@ class BoardPainter extends CustomPainter { ...@@ -42,7 +42,7 @@ class BoardPainter extends CustomPainter {
// Border lines // Border lines
final paintPixelBorder = Paint(); final paintPixelBorder = Paint();
paintPixelBorder.color = Colors.white; paintPixelBorder.color = Colors.grey.shade200;
paintPixelBorder.style = PaintingStyle.stroke; paintPixelBorder.style = PaintingStyle.stroke;
paintPixelBorder.strokeWidth = 4; paintPixelBorder.strokeWidth = 4;
pixels.forEach((pixel) { pixels.forEach((pixel) {
...@@ -61,7 +61,7 @@ class BoardPainter extends CustomPainter { ...@@ -61,7 +61,7 @@ class BoardPainter extends CustomPainter {
// Fill background // Fill background
final paintBackground = Paint(); final paintBackground = Paint();
paintBackground.color = Colors.black; paintBackground.color = Colors.grey.shade800;
paintBackground.style = PaintingStyle.fill; paintBackground.style = PaintingStyle.fill;
final Rect rectBackground = Rect.fromPoints(Offset(0, 0), Offset(drawSize, drawSize)); final Rect rectBackground = Rect.fromPoints(Offset(0, 0), Offset(drawSize, drawSize));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment