diff --git a/packages/pinball_components/sandbox/lib/stories/flipper/basic_flipper_game.dart b/packages/pinball_components/sandbox/lib/stories/flipper/flipper_game.dart similarity index 79% rename from packages/pinball_components/sandbox/lib/stories/flipper/basic_flipper_game.dart rename to packages/pinball_components/sandbox/lib/stories/flipper/flipper_game.dart index 78959374..ad44100b 100644 --- a/packages/pinball_components/sandbox/lib/stories/flipper/basic_flipper_game.dart +++ b/packages/pinball_components/sandbox/lib/stories/flipper/flipper_game.dart @@ -2,13 +2,22 @@ import 'package:flame/input.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:pinball_components/pinball_components.dart'; - +import 'package:sandbox/common/common.dart'; import 'package:sandbox/stories/ball/basic_ball_game.dart'; -class BasicFlipperGame extends BasicBallGame with KeyboardEvents { - BasicFlipperGame() : super(color: Colors.blue); +class FlipperGame extends BasicBallGame with KeyboardEvents { + FlipperGame({ + required this.trace, + }) : super(color: const Color(0xFFFF0000)); + + static const info = ''' + Shows how a Flipper works. - static const info = 'Shows how a Flipper works.'; + - Activate the "trace" parameter to overlay the body. + - Tap anywhere on the screen to spawn a ball into the game. +'''; + + final bool trace; static const _leftFlipperKeys = [ LogicalKeyboardKey.arrowLeft, @@ -38,6 +47,9 @@ class BasicFlipperGame extends BasicBallGame with KeyboardEvents { leftFlipper, rightFlipper, ]); + await ready(); + + if (trace) traceAllBodies(); } @override diff --git a/packages/pinball_components/sandbox/lib/stories/flipper/flipper_tracing_game.dart b/packages/pinball_components/sandbox/lib/stories/flipper/flipper_tracing_game.dart deleted file mode 100644 index 482440cb..00000000 --- a/packages/pinball_components/sandbox/lib/stories/flipper/flipper_tracing_game.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'dart:async'; - -import 'package:flame_forge2d/flame_forge2d.dart'; -import 'package:sandbox/common/common.dart'; -import 'package:sandbox/stories/flipper/basic_flipper_game.dart'; - -class FlipperTracingGame extends BasicFlipperGame { - static const info = ''' - Basic example of how the Flipper body overlays the sprite. -'''; - - @override - Future onLoad() async { - await super.onLoad(); - - leftFlipper.trace(); - leftFlipper.body.joints.whereType().forEach( - (joint) => joint.setLimits(0, 0), - ); - - rightFlipper.trace(); - rightFlipper.body.joints.whereType().forEach( - (joint) => joint.setLimits(0, 0), - ); - } -} diff --git a/packages/pinball_components/sandbox/lib/stories/flipper/stories.dart b/packages/pinball_components/sandbox/lib/stories/flipper/stories.dart index 3cad3ade..cc35a84e 100644 --- a/packages/pinball_components/sandbox/lib/stories/flipper/stories.dart +++ b/packages/pinball_components/sandbox/lib/stories/flipper/stories.dart @@ -1,25 +1,17 @@ import 'package:dashbook/dashbook.dart'; import 'package:flame/game.dart'; import 'package:sandbox/common/common.dart'; -import 'package:sandbox/stories/flipper/basic_flipper_game.dart'; -import 'package:sandbox/stories/flipper/flipper_tracing_game.dart'; +import 'package:sandbox/stories/flipper/flipper_game.dart'; void addFlipperStories(Dashbook dashbook) { - 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, - ); + dashbook.storiesOf('Flipper').add( + 'Basic', + (context) => GameWidget( + game: FlipperGame( + trace: context.boolProperty('Trace', true), + ), + ), + codeLink: buildSourceLink('flipper_game/basic.dart'), + info: FlipperGame.info, + ); } diff --git a/packages/pinball_components/sandbox/lib/stories/kicker/kicker_game.dart b/packages/pinball_components/sandbox/lib/stories/kicker/kicker_game.dart index 21c0cfb8..1986f472 100644 --- a/packages/pinball_components/sandbox/lib/stories/kicker/kicker_game.dart +++ b/packages/pinball_components/sandbox/lib/stories/kicker/kicker_game.dart @@ -30,10 +30,8 @@ class KickerGame extends BasicBallGame { final rightKicker = Kicker(side: BoardSide.right) ..initialPosition = Vector2(center.x + (Kicker.size.x * 2), center.y); await add(rightKicker); + await ready(); - if (trace) { - leftKicker.trace(); - rightKicker.trace(); - } + if (trace) traceAllBodies(); } } diff --git a/packages/pinball_components/sandbox/lib/stories/slingshot/slingshot_game.dart b/packages/pinball_components/sandbox/lib/stories/slingshot/slingshot_game.dart index c02689ca..f3f1c56d 100644 --- a/packages/pinball_components/sandbox/lib/stories/slingshot/slingshot_game.dart +++ b/packages/pinball_components/sandbox/lib/stories/slingshot/slingshot_game.dart @@ -1,5 +1,3 @@ -import 'dart:math' as math; - import 'package:flame/extensions.dart'; import 'package:pinball_components/pinball_components.dart'; import 'package:sandbox/common/common.dart'; @@ -23,44 +21,11 @@ class SlingshotGame extends BasicBallGame { Future onLoad() async { await super.onLoad(); - final center = screenToWorld(camera.viewport.canvasSize! / 2); - - final leftUpperSlingshot = Slingshot( - length: 5.66, - angle: -1.5 * (math.pi / 180), - spritePath: Assets.images.slingshot.leftUpper.keyName, - )..initialPosition = center + Vector2(-29, 1.5); - - final leftLowerSlingshot = Slingshot( - length: 3.54, - angle: -29.1 * (math.pi / 180), - spritePath: Assets.images.slingshot.leftLower.keyName, - )..initialPosition = center + Vector2(-31, -6.2); - - final rightUpperSlingshot = Slingshot( - length: 5.64, - angle: 1 * (math.pi / 180), - spritePath: Assets.images.slingshot.rightUpper.keyName, - )..initialPosition = center + Vector2(22.3, 1.58); - - final rightLowerSlingshot = Slingshot( - length: 3.46, - angle: 26.8 * (math.pi / 180), - spritePath: Assets.images.slingshot.rightLower.keyName, - )..initialPosition = center + Vector2(24.7, -6.2); + await addFromBlueprint(Slingshots()); + await ready(); - await addAll([ - leftUpperSlingshot, - leftLowerSlingshot, - rightUpperSlingshot, - rightLowerSlingshot, - ]); + camera.followVector2(Vector2.zero()); - if (trace) { - leftUpperSlingshot.trace(); - leftLowerSlingshot.trace(); - rightUpperSlingshot.trace(); - rightLowerSlingshot.trace(); - } + if (trace) traceAllBodies(); } } 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 index a0ad661a..0cd7b5cc 100644 --- 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 @@ -37,11 +37,8 @@ class SparkyBumperGame extends BasicBallGame { sparkyBumperB, sparkyBumperC, ]); + await ready(); - if (trace) { - sparkyBumperA.trace(); - sparkyBumperB.trace(); - sparkyBumperC.trace(); - } + if (trace) traceAllBodies(); } }