diff --git a/packages/pinball_components/sandbox/lib/main.dart b/packages/pinball_components/sandbox/lib/main.dart index 1801fa52..88b86da6 100644 --- a/packages/pinball_components/sandbox/lib/main.dart +++ b/packages/pinball_components/sandbox/lib/main.dart @@ -21,5 +21,6 @@ void main() { addChromeDinoStories(dashbook); addDashNestBumperStories(dashbook); addKickerStories(dashbook); + addSparkyBumperStories(dashbook); runApp(dashbook); } diff --git a/packages/pinball_components/sandbox/lib/stories/sparky_bumper/sparky_bumper_game.dart b/packages/pinball_components/sandbox/lib/stories/sparky_bumper/sparky_bumper_game.dart new file mode 100644 index 00000000..eaec172e --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/sparky_bumper/sparky_bumper_game.dart @@ -0,0 +1,48 @@ +import 'dart:async'; +import 'dart:ui'; + +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 SparkyBumperGame extends BasicBallGame { + SparkyBumperGame({ + required this.trace, + }) : super(color: const Color(0xFF0000FF)); + + static const info = ''' + Shows how a SparkyBumper 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 sparkyBumperA = SparkyBumper.a() + ..initialPosition = Vector2(center.x - 20, center.y - 20) + ..priority = 1; + final sparkyBumperB = SparkyBumper.b() + ..initialPosition = Vector2(center.x - 10, center.y + 10) + ..priority = 1; + final sparkyBumperC = SparkyBumper.c() + ..initialPosition = Vector2(center.x + 20, center.y) + ..priority = 1; + await addAll([ + sparkyBumperA, + sparkyBumperB, + sparkyBumperC, + ]); + + if (trace) { + sparkyBumperA.trace(); + sparkyBumperB.trace(); + sparkyBumperC.trace(); + } + } +} diff --git a/packages/pinball_components/sandbox/lib/stories/sparky_bumper/stories.dart b/packages/pinball_components/sandbox/lib/stories/sparky_bumper/stories.dart new file mode 100644 index 00000000..d0933b67 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/sparky_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/sparky_bumper/sparky_bumper_game.dart'; + +void addSparkyBumperStories(Dashbook dashbook) { + dashbook.storiesOf('Sparky Bumpers').add( + 'Basic', + (context) => GameWidget( + game: SparkyBumperGame( + trace: context.boolProperty('Trace', true), + ), + ), + codeLink: buildSourceLink('sparky_bumper/basic.dart'), + info: SparkyBumperGame.info, + ); +} diff --git a/packages/pinball_components/sandbox/lib/stories/stories.dart b/packages/pinball_components/sandbox/lib/stories/stories.dart index 108cca05..746d83d6 100644 --- a/packages/pinball_components/sandbox/lib/stories/stories.dart +++ b/packages/pinball_components/sandbox/lib/stories/stories.dart @@ -6,3 +6,4 @@ export 'effects/stories.dart'; export 'flipper/stories.dart'; export 'layer/stories.dart'; export 'spaceship/stories.dart'; +export 'sparky_bumper/stories.dart';