diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index b4886e4c..2c613e65 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -37,6 +37,9 @@ class PinballGame extends PinballForge2DGame /// Identifier of the play button overlay static const playButtonOverlay = 'play_button'; + /// Identifier of the replay button overlay + static const replayButtonOverlay = 'replay_button'; + @override Color backgroundColor() => Colors.transparent; diff --git a/lib/game/view/pinball_game_page.dart b/lib/game/view/pinball_game_page.dart index be6615f1..d2ca66a6 100644 --- a/lib/game/view/pinball_game_page.dart +++ b/lib/game/view/pinball_game_page.dart @@ -138,6 +138,14 @@ class PinballGameLoadedView extends StatelessWidget { child: PlayButtonOverlay(), ); }, + PinballGame.replayButtonOverlay: (context, game) { + return const Positioned( + bottom: 20, + right: 0, + left: 0, + child: ReplayButtonOverlay(), + ); + }, }, ), ), diff --git a/lib/game/view/widgets/replay_button_overlay.dart b/lib/game/view/widgets/replay_button_overlay.dart new file mode 100644 index 00000000..ac785d99 --- /dev/null +++ b/lib/game/view/widgets/replay_button_overlay.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:pinball/l10n/l10n.dart'; +import 'package:pinball/start_game/start_game.dart'; +import 'package:pinball_ui/pinball_ui.dart'; + +/// {@template replay_button_overlay} +/// [Widget] that renders the button responsible to restart the game +/// {@endtemplate} +class ReplayButtonOverlay extends StatelessWidget { + /// {@macro replay_button_overlay} + const ReplayButtonOverlay({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + + return PinballButton( + text: l10n.replay, + onTap: () { + context.read().add(const PlayTapped()); + }, + ); + } +} diff --git a/lib/game/view/widgets/widgets.dart b/lib/game/view/widgets/widgets.dart index 5d1fccf8..33bb003a 100644 --- a/lib/game/view/widgets/widgets.dart +++ b/lib/game/view/widgets/widgets.dart @@ -1,5 +1,6 @@ export 'bonus_animation.dart'; export 'game_hud.dart'; export 'play_button_overlay.dart'; +export 'replay_button_overlay.dart'; export 'round_count_display.dart'; export 'score_view.dart';