@@ -9,6 +9,7 @@ import 'package:lichess_mobile/src/utils/screen.dart';
99import 'package:lichess_mobile/src/view/engine/engine_gauge.dart' ;
1010import 'package:lichess_mobile/src/widgets/adaptive_action_sheet.dart' ;
1111import 'package:lichess_mobile/src/widgets/buttons.dart' ;
12+ import 'package:lichess_mobile/src/widgets/pockets.dart' ;
1213
1314/// The height of the board header or footer in the analysis layout.
1415const kAnalysisBoardHeaderOrFooterHeight = 26.0 ;
@@ -129,11 +130,13 @@ class AnalysisLayout extends StatelessWidget {
129130 required this .boardBuilder,
130131 required this .children,
131132 required this .pov,
133+ required this .sideToMove,
132134 this .boardHeader,
133135 this .boardFooter,
134136 this .engineGaugeBuilder,
135137 this .engineLines,
136138 this .bottomBar,
139+ this .pockets,
137140 super .key,
138141 });
139142
@@ -146,6 +149,9 @@ class AnalysisLayout extends StatelessWidget {
146149 /// The side the board is displayed from.
147150 final Side pov;
148151
152+ /// The side to move. In crazyhouse, this enables the [PocketsMenu] of this side.
153+ final Side ? sideToMove;
154+
149155 /// A widget to show above the board.
150156 ///
151157 /// The widget will included in a parent container with a height of
@@ -173,6 +179,11 @@ class AnalysisLayout extends StatelessWidget {
173179 /// A widget to show at the bottom of the screen.
174180 final Widget ? bottomBar;
175181
182+ /// Current state of the pockets, in variants like crazyhouse.
183+ ///
184+ /// If not null, will render a [PocketsMenu] for each player.
185+ final Pockets ? pockets;
186+
176187 @override
177188 Widget build (BuildContext context) {
178189 return Column (
@@ -202,6 +213,7 @@ class AnalysisLayout extends StatelessWidget {
202213 : constraints.biggest.longestSide / kGoldenRatio -
203214 (kTabletBoardTableSidePadding * 2 )) -
204215 headerAndFooterHeight;
216+
205217 return Padding (
206218 padding: const EdgeInsets .all (kTabletBoardTableSidePadding),
207219 child: Row (
@@ -269,13 +281,39 @@ class AnalysisLayout extends StatelessWidget {
269281 crossAxisAlignment: CrossAxisAlignment .stretch,
270282 children: [
271283 if (engineLines != null ) engineLines! ,
284+ if (pockets != null )
285+ Align (
286+ alignment: Alignment .center,
287+ child: PocketsMenu (
288+ side: pov.opposite,
289+ sideToMove: sideToMove,
290+ pockets: pockets! ,
291+ squareSize: pocketSquareSize (
292+ boardSize: boardSize,
293+ isTablet: isTablet,
294+ ),
295+ ),
296+ ),
272297 Expanded (
273298 child: Card (
274299 clipBehavior: Clip .hardEdge,
275300 semanticContainer: false ,
276301 child: TabBarView (controller: tabController, children: children),
277302 ),
278303 ),
304+ if (pockets != null )
305+ Align (
306+ alignment: Alignment .center,
307+ child: PocketsMenu (
308+ side: pov,
309+ sideToMove: sideToMove,
310+ pockets: pockets! ,
311+ squareSize: pocketSquareSize (
312+ boardSize: boardSize,
313+ isTablet: isTablet,
314+ ),
315+ ),
316+ ),
279317 ],
280318 ),
281319 ),
@@ -289,7 +327,10 @@ class AnalysisLayout extends StatelessWidget {
289327 final isSmallScreen = remainingHeight < kSmallHeightMinusBoard;
290328 final evalGaugeSize = engineGaugeBuilder != null ? evalGaugeWidth : 0.0 ;
291329 final boardSize = isTablet || isSmallScreen
292- ? defaultBoardSize - evalGaugeSize - kTabletBoardTableSidePadding * 2
330+ ? defaultBoardSize -
331+ evalGaugeSize -
332+ kTabletBoardTableSidePadding * 2 -
333+ (pockets != null ? kAdditionalBoardSidePaddingForPockets : 0.0 )
293334 : defaultBoardSize - evalGaugeSize;
294335
295336 return Column (
@@ -304,6 +345,16 @@ class AnalysisLayout extends StatelessWidget {
304345 : EdgeInsets .zero,
305346 child: Column (
306347 children: [
348+ if (pockets != null )
349+ PocketsMenu (
350+ side: pov.opposite,
351+ sideToMove: sideToMove,
352+ pockets: pockets! ,
353+ squareSize: pocketSquareSize (
354+ boardSize: boardSize,
355+ isTablet: isTablet,
356+ ),
357+ ),
307358 if (boardHeader != null )
308359 // This key is used to preserve the state of the board header when the pov changes
309360 Container (
@@ -321,6 +372,7 @@ class AnalysisLayout extends StatelessWidget {
321372 child: boardHeader,
322373 ),
323374 Row (
375+ mainAxisAlignment: MainAxisAlignment .center,
324376 children: [
325377 boardBuilder (
326378 context,
@@ -349,6 +401,16 @@ class AnalysisLayout extends StatelessWidget {
349401 height: kAnalysisBoardHeaderOrFooterHeight,
350402 child: boardFooter,
351403 ),
404+ if (pockets != null )
405+ PocketsMenu (
406+ side: pov,
407+ sideToMove: sideToMove,
408+ pockets: pockets! ,
409+ squareSize: pocketSquareSize (
410+ boardSize: boardSize,
411+ isTablet: isTablet,
412+ ),
413+ ),
352414 ],
353415 ),
354416 ),
0 commit comments