diff --git a/packages/pinball_components/sandbox/lib/stories/flipper/flipper.dart b/packages/pinball_components/sandbox/lib/stories/flipper/flipper.dart index 0fae8423..7c8465da 100644 --- a/packages/pinball_components/sandbox/lib/stories/flipper/flipper.dart +++ b/packages/pinball_components/sandbox/lib/stories/flipper/flipper.dart @@ -2,14 +2,24 @@ import 'package:dashbook/dashbook.dart'; import 'package:flame/game.dart'; import 'package:sandbox/common/common.dart'; import 'package:sandbox/stories/flipper/basic.dart'; +import 'package:sandbox/stories/flipper/tracing.dart'; void addFlipperStories(Dashbook dashbook) { - dashbook.storiesOf('Flipper').add( - 'Basic', - (context) => GameWidget( - game: BasicFlipperGame(), - ), - codeLink: buildSourceLink('ball/basic.dart'), - info: BasicFlipperGame.info, - ); + dashbook.storiesOf('Flipper') + ..add( + 'Basic', + (context) => GameWidget( + game: BasicFlipperGame(), + ), + codeLink: buildSourceLink('flipper/basic.dart'), + info: BasicFlipperGame.info, + ) + ..add( + 'Tracing', + (context) => GameWidget( + game: FlipperTracingGame(), + ), + codeLink: buildSourceLink('flipper/tracing.dart'), + info: FlipperTracingGame.info, + ); } diff --git a/packages/pinball_components/sandbox/lib/stories/flipper/tracing.dart b/packages/pinball_components/sandbox/lib/stories/flipper/tracing.dart new file mode 100644 index 00000000..89cdea83 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/flipper/tracing.dart @@ -0,0 +1,31 @@ +import 'dart:async'; + +import 'package:flame/components.dart'; +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:sandbox/common/common.dart'; + +class FlipperTracingGame extends BasicGame { + static const info = ''' + Basic example of how a Flipper works. +'''; + + @override + Future onLoad() async { + await super.onLoad(); + + final center = screenToWorld(camera.viewport.canvasSize! / 2); + + final leftFlipper = Flipper(side: BoardSide.left) + ..initialPosition = center - Vector2(Flipper.size.x, 0); + + await addAll([ + leftFlipper, + ]); + + leftFlipper.body.joints.whereType().forEach( + (joint) => joint.setLimits(0, 0), + ); + leftFlipper.removeAll(leftFlipper.children); + } +}