From b09a57541ba4c259f22a662efdf544f60ba625c9 Mon Sep 17 00:00:00 2001 From: Erick Zanardo Date: Fri, 8 Apr 2022 18:38:55 -0300 Subject: [PATCH] adding backboard stories --- .../assets/images/backboard/display.png | Bin 0 -> 35925 bytes .../lib/src/components/backboard.dart | 32 +++++++++++++++--- .../pinball_components/sandbox/lib/main.dart | 1 + .../lib/stories/backboard/game_over.dart | 23 +++++++++++++ .../lib/stories/backboard/stories.dart | 25 ++++++++++++++ .../lib/stories/backboard/waiting.dart | 19 +++++++++++ .../sandbox/lib/stories/stories.dart | 1 + 7 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 packages/pinball_components/assets/images/backboard/display.png create mode 100644 packages/pinball_components/sandbox/lib/stories/backboard/game_over.dart create mode 100644 packages/pinball_components/sandbox/lib/stories/backboard/stories.dart create mode 100644 packages/pinball_components/sandbox/lib/stories/backboard/waiting.dart diff --git a/packages/pinball_components/assets/images/backboard/display.png b/packages/pinball_components/assets/images/backboard/display.png new file mode 100644 index 0000000000000000000000000000000000000000..97dbb50b0e08cd081f061f0dcb98a37096cb4d42 GIT binary patch literal 35925 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 onLoad() async { - await waitingMode(); + if (startsAtWaiting) { + await waitingMode(); + } else { + await gameOverMode(); + } } /// Puts the Backboard in waiting mode, where the scoreboard is shown. Future waitingMode() async { + children.removeWhere((element) => true); final sprite = await gameRef.loadSprite( Assets.images.backboard.backboardScores.keyName, ); - size = sprite.originalSize / 10; - this.sprite = sprite; + await add( + SpriteComponent( + sprite: sprite, + size: sprite.originalSize / 10, + anchor: Anchor.bottomCenter, + ), + ); } /// Puts the Backboard in game over mode, where the score input is shown. Future gameOverMode() async { + children.removeWhere((element) => true); + await add(BackboardGameOver()); + } +} + +/// {@template backboard_game_over} +class BackboardGameOver extends SpriteComponent with HasGameRef { + @override + Future onLoad() async { final sprite = await gameRef.loadSprite( Assets.images.backboard.backboardGameOver.keyName, ); size = sprite.originalSize / 10; + anchor = Anchor.bottomCenter; this.sprite = sprite; } } diff --git a/packages/pinball_components/sandbox/lib/main.dart b/packages/pinball_components/sandbox/lib/main.dart index 5cf36b3d..73ae296c 100644 --- a/packages/pinball_components/sandbox/lib/main.dart +++ b/packages/pinball_components/sandbox/lib/main.dart @@ -32,6 +32,7 @@ void main() { addGoogleWordStories(dashbook); addLaunchRampStories(dashbook); addScoreTextStories(dashbook); + addBackboardStories(dashbook); runApp(dashbook); } diff --git a/packages/pinball_components/sandbox/lib/stories/backboard/game_over.dart b/packages/pinball_components/sandbox/lib/stories/backboard/game_over.dart new file mode 100644 index 00000000..8af8e214 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/backboard/game_over.dart @@ -0,0 +1,23 @@ +import 'package:flame/components.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:sandbox/common/common.dart'; + +class BackboardGameOverGame extends BasicGame { + static const info = ''' + Simple example showing the waiting mode of the backboard. + '''; + + @override + Future onLoad() async { + camera + ..followVector2(Vector2.zero()) + ..zoom = 5; + + await add( + Backboard( + position: Vector2(0, 20), + startsAtWaiting: false, + ), + ); + } +} diff --git a/packages/pinball_components/sandbox/lib/stories/backboard/stories.dart b/packages/pinball_components/sandbox/lib/stories/backboard/stories.dart new file mode 100644 index 00000000..1bbc4ce0 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/backboard/stories.dart @@ -0,0 +1,25 @@ +import 'package:dashbook/dashbook.dart'; +import 'package:flame/game.dart'; +import 'package:sandbox/common/common.dart'; +import 'package:sandbox/stories/backboard/game_over.dart'; +import 'package:sandbox/stories/backboard/waiting.dart'; + +void addBackboardStories(Dashbook dashbook) { + dashbook.storiesOf('Backboard') + ..add( + 'Waiting mode', + (context) => GameWidget( + game: BackboardWaitingGame(), + ), + codeLink: buildSourceLink('backboard/waiting.dart'), + info: BackboardWaitingGame.info, + ) + ..add( + 'Game over', + (context) => GameWidget( + game: BackboardGameOverGame(), + ), + codeLink: buildSourceLink('backboard/game_over.dart'), + info: BackboardGameOverGame.info, + ); +} diff --git a/packages/pinball_components/sandbox/lib/stories/backboard/waiting.dart b/packages/pinball_components/sandbox/lib/stories/backboard/waiting.dart new file mode 100644 index 00000000..0b85342d --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/backboard/waiting.dart @@ -0,0 +1,19 @@ +import 'package:flame/components.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:sandbox/common/common.dart'; + +class BackboardWaitingGame extends BasicGame { + static const info = ''' + Simple example showing the waiting mode of the backboard. + '''; + + @override + Future onLoad() async { + camera + ..followVector2(Vector2.zero()) + ..zoom = 5; + + final backboard = Backboard(position: Vector2(0, 20)); + await add(backboard); + } +} diff --git a/packages/pinball_components/sandbox/lib/stories/stories.dart b/packages/pinball_components/sandbox/lib/stories/stories.dart index cdcf0825..338ca384 100644 --- a/packages/pinball_components/sandbox/lib/stories/stories.dart +++ b/packages/pinball_components/sandbox/lib/stories/stories.dart @@ -1,4 +1,5 @@ export 'alien_zone/stories.dart'; +export 'backboard/stories.dart'; export 'ball/stories.dart'; export 'baseboard/stories.dart'; export 'boundaries/stories.dart';