diff --git a/packages/pinball_components/sandbox/lib/main.dart b/packages/pinball_components/sandbox/lib/main.dart index 481ca781..5abef41d 100644 --- a/packages/pinball_components/sandbox/lib/main.dart +++ b/packages/pinball_components/sandbox/lib/main.dart @@ -23,5 +23,6 @@ void main() { addKickerStories(dashbook); addSlingshotStories(dashbook); addSparkyBumperStories(dashbook); + addAlienBumperStories(dashbook); runApp(dashbook); } diff --git a/packages/pinball_components/sandbox/lib/stories/alien_bumper/alien_bumper_game.dart b/packages/pinball_components/sandbox/lib/stories/alien_bumper/alien_bumper_game.dart new file mode 100644 index 00000000..07363cd4 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/alien_bumper/alien_bumper_game.dart @@ -0,0 +1,42 @@ +import 'dart:async'; + +import 'package:flame/extensions.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:sandbox/common/common.dart'; +import 'package:sandbox/stories/ball/basic_ball_game.dart'; + +class AlienBumperGame extends BasicBallGame { + AlienBumperGame({ + required this.trace, + }) : super(color: const Color(0xFF0000FF)); + + static const info = ''' + Shows how a AlienBumper is rendered. + + Activate the "trace" parameter to overlay the body. +'''; + + final bool trace; + + @override + Future onLoad() async { + await super.onLoad(); + + final center = screenToWorld(camera.viewport.canvasSize! / 2); + final alienBumperA = AlienBumper.a() + ..initialPosition = Vector2(center.x - 20, center.y - 20) + ..priority = 1; + final alienBumperB = AlienBumper.b() + ..initialPosition = Vector2(center.x - 10, center.y + 10) + ..priority = 1; + await addAll([ + alienBumperA, + alienBumperB, + ]); + + if (trace) { + alienBumperA.trace(); + alienBumperB.trace(); + } + } +} diff --git a/packages/pinball_components/sandbox/lib/stories/alien_bumper/stories.dart b/packages/pinball_components/sandbox/lib/stories/alien_bumper/stories.dart new file mode 100644 index 00000000..06e60863 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/alien_bumper/stories.dart @@ -0,0 +1,17 @@ +import 'package:dashbook/dashbook.dart'; +import 'package:flame/game.dart'; +import 'package:sandbox/common/common.dart'; +import 'package:sandbox/stories/alien_bumper/alien_bumper_game.dart'; + +void addAlienBumperStories(Dashbook dashbook) { + dashbook.storiesOf('Alien Bumpers').add( + 'Basic', + (context) => GameWidget( + game: AlienBumperGame( + trace: context.boolProperty('Trace', true), + ), + ), + codeLink: buildSourceLink('alien_bumper/basic.dart'), + info: AlienBumperGame.info, + ); +} diff --git a/packages/pinball_components/sandbox/lib/stories/stories.dart b/packages/pinball_components/sandbox/lib/stories/stories.dart index c5d60a8d..f25b1990 100644 --- a/packages/pinball_components/sandbox/lib/stories/stories.dart +++ b/packages/pinball_components/sandbox/lib/stories/stories.dart @@ -1,3 +1,4 @@ +export 'alien_bumper/stories.dart'; export 'ball/stories.dart'; export 'baseboard/stories.dart'; export 'chrome_dino/stories.dart';