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

Merge branch '7-improve-layout' into 'master'

Resolve "Improve layout"

Closes #7

See merge request !7
parents 8c9b0709 1c2f3a63
No related branches found
No related tags found
1 merge request!7Resolve "Improve layout"
Pipeline #5197 passed
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=0.0.7
app.versionCode=7
app.versionName=0.0.8
app.versionCode=8
Improve layout
Améliorations graphiques
......@@ -7,7 +7,7 @@ class Counter {
// Current counter
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 _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
int _base = 50;
......@@ -19,13 +19,26 @@ class Counter {
Color buttonIconColor = Colors.blue;
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) {
return Container(
child: Table(
children: [
buildMatchWidget(myProvider),
spacer(),
buildLinesWidget(myProvider),
spacer(),
buildHolesWidget(myProvider),
spacer(),
],
),
);
......
......@@ -36,16 +36,7 @@ class Player {
}
Widget buildManagerWidget(Data myProvider) {
List<Widget> items = [
Text(
_score.toString(),
style: TextStyle(
fontFamily: 'Blocks',
fontSize: 100,
fontWeight: FontWeight.bold,
),
),
];
List<Widget> items = [];
if (myProvider.currentPlayer == playerId) {
items.add(_counter.buildCounterWidget(myProvider));
......@@ -65,51 +56,94 @@ class Player {
}
Widget buildSubmitWidget(Data myProvider) {
return Row(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'+' + _counter.computePoints().toString(),
style: TextStyle(
fontFamily: 'Blocks',
fontSize: 50,
fontWeight: FontWeight.bold,
double fontSize = 70;
return Container(
decoration: BoxDecoration(
border: Border(
top: BorderSide(
color: Colors.black,
width: 2,
),
),
SizedBox(
width: 10,
),
IconButton(
padding: EdgeInsets.zero,
constraints: BoxConstraints(),
icon: Icon(
Icons.done_all,
color: Colors.amber,
size: 25,
),
padding: EdgeInsets.only(
top: 5,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'+' + _counter.computePoints().toString(),
style: TextStyle(
fontFamily: 'Blocks',
fontSize: fontSize,
fontWeight: FontWeight.bold,
),
),
onPressed: () {
_score = _score + _counter.computePoints();
_counter.reset();
myProvider.toggleCurrentPlayer();
},
),
SizedBox(
width: 10,
),
],
SizedBox(
width: 10,
),
IconButton(
padding: EdgeInsets.zero,
constraints: BoxConstraints(),
icon: Icon(
Icons.done_all,
color: Colors.orange,
size: fontSize / 2.5,
),
onPressed: () {
_score = _score + _counter.computePoints();
_counter.reset();
myProvider.toggleCurrentPlayer();
},
),
SizedBox(
width: 10,
),
],
),
);
}
Widget buildPlayerBoard(Data myProvider, double screenWidth) {
double tetriminoBlockWidth = screenWidth / 2;
Widget buildPlayerBoard(Data myProvider, double screenWidth, bool isActive) {
double tetriminoBlockWidth = screenWidth / 2.3;
Color borderColor = isActive ? Colors.greenAccent : Colors.blueGrey;
double borderWidth = 10;
return Row(
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
buildTetriminoWidget(myProvider, tetriminoBlockWidth),
buildManagerWidget(myProvider),
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,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
isActive
? buildTetriminoWidget(myProvider, tetriminoBlockWidth)
: SizedBox(
height: tetriminoBlockWidth,
),
buildManagerWidget(myProvider),
],
),
)
],
);
}
......
......@@ -2,26 +2,16 @@ import 'package:flutter/material.dart';
import 'package:tetrisdual/provider/data.dart';
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) {
Widget player1 = new RotatedBox(
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(
onTapUp: (details) {
......@@ -40,9 +30,9 @@ class Board {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
activePlayer(player1, myProvider.currentPlayer == 1),
player1,
togglePlayerWidget,
activePlayer(player2, myProvider.currentPlayer == 2),
player2,
],
),
);
......
......@@ -42,7 +42,7 @@ class BoardPainter extends CustomPainter {
// Border lines
final paintPixelBorder = Paint();
paintPixelBorder.color = Colors.white;
paintPixelBorder.color = Colors.grey.shade200;
paintPixelBorder.style = PaintingStyle.stroke;
paintPixelBorder.strokeWidth = 4;
pixels.forEach((pixel) {
......@@ -61,7 +61,7 @@ class BoardPainter extends CustomPainter {
// Fill background
final paintBackground = Paint();
paintBackground.color = Colors.black;
paintBackground.color = Colors.grey.shade800;
paintBackground.style = PaintingStyle.fill;
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