Select Git revision
.editorconfig
-
Benoît Harrault authoredBenoît Harrault authored
game_board.dart 3.73 KiB
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:awale/cubit/game_cubit.dart';
import 'package:awale/models/game/game.dart';
import 'package:awale/ui/widgets/game/game_house.dart';
import 'package:awale/ui/widgets/game/game_player.dart';
import 'package:awale/ui/widgets/game/game_score.dart';
class GameBoardWidget extends StatelessWidget {
const GameBoardWidget({super.key});
@override
Widget build(BuildContext context) {
return Center(
child: BlocBuilder<GameCubit, GameState>(
builder: (BuildContext context, GameState gameState) {
final Game currentGame = gameState.currentGame;
final Color borderColor = Theme.of(context).colorScheme.onSurface;
Widget getHouseContent(int cellIndex) {
final bool isTapAllowed = currentGame.isCurrentPlayerHouse(cellIndex);
return GestureDetector(
onTap: () {
if (isTapAllowed && !currentGame.animationInProgress) {
BlocProvider.of<GameCubit>(context).tapOnCell(cellIndex);
}
},
child: GameHouseWidget(
seedsCount: currentGame.board.cells[cellIndex],
active: isTapAllowed,
),
);
}
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
GamePlayerWidget(
active: currentGame.currentPlayer == 0,
),
Container(
margin: const EdgeInsets.all(2),
padding: const EdgeInsets.all(2),
decoration: BoxDecoration(
color: borderColor,
borderRadius: BorderRadius.circular(2),
border: Border.all(
color: borderColor,
width: 2,
),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
GameScoreWidget(
score: currentGame.scores[0],
),
Table(
defaultColumnWidth: const IntrinsicColumnWidth(),
children: [
TableRow(children: [
getHouseContent(0),
getHouseContent(11),
]),
TableRow(children: [
getHouseContent(1),
getHouseContent(10),
]),
TableRow(children: [
getHouseContent(2),
getHouseContent(9),
]),
TableRow(children: [
getHouseContent(3),
getHouseContent(8),
]),
TableRow(children: [
getHouseContent(4),
getHouseContent(7),
]),
TableRow(children: [
getHouseContent(5),
getHouseContent(6),
]),
],
),
GameScoreWidget(
score: currentGame.scores[1],
)
],
),
),
GamePlayerWidget(
active: currentGame.currentPlayer == 1,
),
],
);
},
),
);
}
}