diff --git a/packages/pinball_components/assets/images/boundary/bottom.png b/packages/pinball_components/assets/images/boundary/bottom.png index 7caf3e2f..2effb7ac 100644 Binary files a/packages/pinball_components/assets/images/boundary/bottom.png and b/packages/pinball_components/assets/images/boundary/bottom.png differ diff --git a/packages/pinball_components/lib/src/components/boundaries.dart b/packages/pinball_components/lib/src/components/boundaries.dart index a542cd2a..16c0f7b7 100644 --- a/packages/pinball_components/lib/src/components/boundaries.dart +++ b/packages/pinball_components/lib/src/components/boundaries.dart @@ -30,9 +30,9 @@ class _BottomBoundary extends BodyComponent with InitialPosition { final bottomLeftCurve = BezierCurveShape( controlPoints: [ - Vector2(-43.6, -44.4), - Vector2(-31, -43.4), - Vector2(-18.7, -52.1), + Vector2(-43.9, -41.8), + Vector2(-35.7, -43), + Vector2(-19.9, -51), ], ); final bottomLeftCurveFixtureDef = FixtureDef(bottomLeftCurve); @@ -40,9 +40,9 @@ class _BottomBoundary extends BodyComponent with InitialPosition { final bottomRightCurve = BezierCurveShape( controlPoints: [ - Vector2(31.8, -44.1), - Vector2(21.95, -47), - Vector2(12.3, -51.4), + Vector2(31.8, -44.8), + Vector2(21.95, -47.7), + Vector2(12.3, -52.1), ], ); final bottomRightCurveFixtureDef = FixtureDef(bottomRightCurve); @@ -78,7 +78,7 @@ class _BottomBoundarySpriteComponent extends SpriteComponent with HasGameRef { this.sprite = sprite; size = sprite.originalSize / 10; anchor = Anchor.center; - position = Vector2(-5.4, 57.4); + position = Vector2(-5.4, 55.8); } } @@ -114,7 +114,7 @@ class _OuterBoundary extends BodyComponent with InitialPosition { final leftWall = EdgeShape() ..set( Vector2(-32.3, 57.2), - Vector2(-44.1, -44.4), + Vector2(-43.9, -41.8), ); final leftWallFixtureDef = FixtureDef(leftWall); fixturesDefs.add(leftWallFixtureDef); diff --git a/packages/pinball_components/sandbox/lib/common/trace.dart b/packages/pinball_components/sandbox/lib/common/trace.dart index 8585169e..44760a7c 100644 --- a/packages/pinball_components/sandbox/lib/common/trace.dart +++ b/packages/pinball_components/sandbox/lib/common/trace.dart @@ -12,8 +12,7 @@ extension BodyTrace on BodyComponent { unawaited( mounted.whenComplete(() { - final sprite = children.whereType().first; - sprite.paint.color = sprite.paint.color.withOpacity(0.5); + children.whereType().first.setOpacity(0.5); descendants().whereType().forEach((anchor) { final fixtureDef = FixtureDef(CircleShape()..radius = 0.5); diff --git a/packages/pinball_components/sandbox/lib/main.dart b/packages/pinball_components/sandbox/lib/main.dart index 3d65dbe2..b3b331a7 100644 --- a/packages/pinball_components/sandbox/lib/main.dart +++ b/packages/pinball_components/sandbox/lib/main.dart @@ -24,5 +24,6 @@ void main() { addSlingshotStories(dashbook); addSparkyBumperStories(dashbook); addZoomStories(dashbook); + addBoundariesStories(dashbook); runApp(dashbook); } diff --git a/packages/pinball_components/sandbox/lib/stories/boundaries/boundaries_game.dart b/packages/pinball_components/sandbox/lib/stories/boundaries/boundaries_game.dart new file mode 100644 index 00000000..a98fb7b9 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/boundaries/boundaries_game.dart @@ -0,0 +1,29 @@ +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 BoundariesGame extends BasicBallGame with Traceable { + BoundariesGame() : super(color: const Color(0xFFFF0000)); + + static const info = ''' + Shows how Boundaries are rendered. + + - Activate the "trace" parameter to overlay the body. + - Tap anywhere on the screen to spawn a ball into the game. +'''; + + @override + Future onLoad() async { + await super.onLoad(); + + await addFromBlueprint(Boundaries()); + await ready(); + + camera + ..followVector2(Vector2.zero()) + ..zoom = 6; + + await traceAllBodies(); + } +} diff --git a/packages/pinball_components/sandbox/lib/stories/boundaries/stories.dart b/packages/pinball_components/sandbox/lib/stories/boundaries/stories.dart new file mode 100644 index 00000000..bebb0df7 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/boundaries/stories.dart @@ -0,0 +1,15 @@ +import 'package:dashbook/dashbook.dart'; +import 'package:flame/game.dart'; +import 'package:sandbox/common/common.dart'; +import 'package:sandbox/stories/boundaries/boundaries_game.dart'; + +void addBoundariesStories(Dashbook dashbook) { + dashbook.storiesOf('Boundaries').add( + 'Basic', + (context) => GameWidget( + game: BoundariesGame()..trace = context.boolProperty('Trace', true), + ), + codeLink: buildSourceLink('boundaries_game/basic.dart'), + info: BoundariesGame.info, + ); +} diff --git a/packages/pinball_components/sandbox/lib/stories/stories.dart b/packages/pinball_components/sandbox/lib/stories/stories.dart index 09e06779..009f53ac 100644 --- a/packages/pinball_components/sandbox/lib/stories/stories.dart +++ b/packages/pinball_components/sandbox/lib/stories/stories.dart @@ -1,5 +1,6 @@ export 'ball/stories.dart'; export 'baseboard/stories.dart'; +export 'boundaries/stories.dart'; export 'chrome_dino/stories.dart'; export 'effects/stories.dart'; export 'flipper/stories.dart'; diff --git a/packages/pinball_components/test/src/components/golden/boundaries.png b/packages/pinball_components/test/src/components/golden/boundaries.png index d1ef9ce1..f184e3eb 100644 Binary files a/packages/pinball_components/test/src/components/golden/boundaries.png and b/packages/pinball_components/test/src/components/golden/boundaries.png differ