diff --git a/packages/pinball_components/lib/src/components/alien_bumper.dart b/packages/pinball_components/lib/src/components/alien_bumper.dart index 7fcb1ea1..75b0560d 100644 --- a/packages/pinball_components/lib/src/components/alien_bumper.dart +++ b/packages/pinball_components/lib/src/components/alien_bumper.dart @@ -59,19 +59,16 @@ class AlienBumper extends BodyComponent with InitialPosition { @override Future onLoad() async { await super.onLoad(); + renderBody = false; + await _loadSprites(); - // TODO(erickzanardo): Look into using onNewState instead. - // Currently doing: onNewState(gameRef.read()) will throw an - // `Exception: build context is not available yet` deactivate(); await add(_spriteComponent); } @override Body createBody() { - renderBody = false; - final shape = EllipseShape( center: Vector2.zero(), majorRadius: _majorRadius, diff --git a/packages/pinball_components/sandbox/lib/main.dart b/packages/pinball_components/sandbox/lib/main.dart index 50a55e2f..abe1d61e 100644 --- a/packages/pinball_components/sandbox/lib/main.dart +++ b/packages/pinball_components/sandbox/lib/main.dart @@ -23,7 +23,7 @@ void main() { addKickerStories(dashbook); addSlingshotStories(dashbook); addSparkyBumperStories(dashbook); - addAlienBumperStories(dashbook); + addAlienZoneStories(dashbook); addZoomStories(dashbook); addBoundariesStories(dashbook); runApp(dashbook); diff --git a/packages/pinball_components/sandbox/lib/stories/alien_bumper/stories.dart b/packages/pinball_components/sandbox/lib/stories/alien_bumper/stories.dart deleted file mode 100644 index c9650c19..00000000 --- a/packages/pinball_components/sandbox/lib/stories/alien_bumper/stories.dart +++ /dev/null @@ -1,15 +0,0 @@ -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/alien_zone/alien_bumper_a_game.dart b/packages/pinball_components/sandbox/lib/stories/alien_zone/alien_bumper_a_game.dart new file mode 100644 index 00000000..007d67e1 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/alien_zone/alien_bumper_a_game.dart @@ -0,0 +1,28 @@ +import 'dart:async'; + +import 'package:flame/extensions.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:sandbox/stories/ball/basic_ball_game.dart'; + +class AlienBumperAGame extends BasicBallGame { + AlienBumperAGame() : super(color: const Color(0xFF0000FF)); + + static const info = ''' + Shows how a AlienBumperA is rendered. + + - Activate the "trace" parameter to overlay the body. +'''; + + @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; + await add(alienBumperA); + + await traceAllBodies(); + } +} diff --git a/packages/pinball_components/sandbox/lib/stories/alien_bumper/alien_bumper_game.dart b/packages/pinball_components/sandbox/lib/stories/alien_zone/alien_bumper_b_game.dart similarity index 63% rename from packages/pinball_components/sandbox/lib/stories/alien_bumper/alien_bumper_game.dart rename to packages/pinball_components/sandbox/lib/stories/alien_zone/alien_bumper_b_game.dart index 1bccac31..7972b9d5 100644 --- a/packages/pinball_components/sandbox/lib/stories/alien_bumper/alien_bumper_game.dart +++ b/packages/pinball_components/sandbox/lib/stories/alien_zone/alien_bumper_b_game.dart @@ -5,11 +5,11 @@ 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 with Traceable { - AlienBumperGame() : super(color: const Color(0xFF0000FF)); +class AlienBumperBGame extends BasicBallGame { + AlienBumperBGame() : super(color: const Color(0xFF0000FF)); static const info = ''' - Shows how a AlienBumper is rendered. + Shows how a AlienBumperB is rendered. - Activate the "trace" parameter to overlay the body. '''; @@ -19,16 +19,10 @@ class AlienBumperGame extends BasicBallGame with Traceable { 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, - ]); + await add(alienBumperB); await traceAllBodies(); } diff --git a/packages/pinball_components/sandbox/lib/stories/alien_zone/stories.dart b/packages/pinball_components/sandbox/lib/stories/alien_zone/stories.dart new file mode 100644 index 00000000..4bc758f9 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/alien_zone/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/alien_zone/alien_bumper_a_game.dart'; +import 'package:sandbox/stories/alien_zone/alien_bumper_b_game.dart'; + +void addAlienZoneStories(Dashbook dashbook) { + dashbook.storiesOf('Alien Zone') + ..add( + 'Alien Bumper A', + (context) => GameWidget( + game: AlienBumperAGame()..trace = context.boolProperty('Trace', true), + ), + codeLink: buildSourceLink('alien_zone/alien_bumper_a.dart'), + info: AlienBumperAGame.info, + ) + ..add( + 'Alien Bumper B', + (context) => GameWidget( + game: AlienBumperBGame()..trace = context.boolProperty('Trace', true), + ), + codeLink: buildSourceLink('alien_zone/alien_bumper_b.dart'), + info: AlienBumperAGame.info, + ); +} diff --git a/packages/pinball_components/sandbox/lib/stories/stories.dart b/packages/pinball_components/sandbox/lib/stories/stories.dart index 6bc3c92c..761fafe4 100644 --- a/packages/pinball_components/sandbox/lib/stories/stories.dart +++ b/packages/pinball_components/sandbox/lib/stories/stories.dart @@ -1,4 +1,4 @@ -export 'alien_bumper/stories.dart'; +export 'alien_zone/stories.dart'; export 'ball/stories.dart'; export 'baseboard/stories.dart'; export 'boundaries/stories.dart';