diff --git a/android/gradle.properties b/android/gradle.properties index 85b94f88ee157e1d1b3cec184c8948902443d36f..65eed6426393974efb5a056ec44936d42b5ef2a1 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ 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 diff --git a/fastlane/metadata/android/en-US/changelogs/8.txt b/fastlane/metadata/android/en-US/changelogs/8.txt new file mode 100644 index 0000000000000000000000000000000000000000..55d2c38b728a9b9b408dfd0c4298729ba2901783 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/8.txt @@ -0,0 +1 @@ +Improve layout diff --git a/fastlane/metadata/android/fr-FR/changelogs/8.txt b/fastlane/metadata/android/fr-FR/changelogs/8.txt new file mode 100644 index 0000000000000000000000000000000000000000..f92e15972bfaa71ff32fcb01670f350a697249b9 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/8.txt @@ -0,0 +1 @@ +Améliorations graphiques diff --git a/lib/entity/counter.dart b/lib/entity/counter.dart index e777835132cc4ed06b01f7459d5fbc05470822f5..f9ae8597d1f871e82b78346071505fc703891a38 100644 --- a/lib/entity/counter.dart +++ b/lib/entity/counter.dart @@ -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(), ], ), ); diff --git a/lib/entity/player.dart b/lib/entity/player.dart index 20f0e2b41068bc18d5459e8895987de3fc2dd919..fe637add88582623829d352a7846c31ff5acb827 100644 --- a/lib/entity/player.dart +++ b/lib/entity/player.dart @@ -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), + ], + ), + ) ], ); } diff --git a/lib/layout/board.dart b/lib/layout/board.dart index 8ee110186d129102c3ac6c334bf0c985fc46695b..34118b7efe03e5db5e1ba0a634ee357e6bc4c803 100644 --- a/lib/layout/board.dart +++ b/lib/layout/board.dart @@ -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, ], ), ); diff --git a/lib/layout/board_painter.dart b/lib/layout/board_painter.dart index 47c4d30b8348cdb04366b076d4fa57fb556ca493..1ec3cc1b91c718e077b8761b9009767e8e75c2b6 100644 --- a/lib/layout/board_painter.dart +++ b/lib/layout/board_painter.dart @@ -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));