diff --git a/lib/game/components/launcher.dart b/lib/game/components/launcher.dart index 7aef09d2..959e8da0 100644 --- a/lib/game/components/launcher.dart +++ b/lib/game/components/launcher.dart @@ -12,9 +12,9 @@ class Launcher extends Blueprint { Launcher() : super( components: [ - ControlledPlunger(compressionDistance: 14) - ..initialPosition = Vector2(40.7, 38), - RocketSpriteComponent()..position = Vector2(43, 62), + ControlledPlunger(compressionDistance: 10.5) + ..initialPosition = Vector2(41.1, 43), + RocketSpriteComponent()..position = Vector2(43, 62.3), ], blueprints: [LaunchRamp()], ); diff --git a/packages/pinball_components/assets/images/plunger/rocket.png b/packages/pinball_components/assets/images/plunger/rocket.png index ee5eef5b..bef65ea1 100644 Binary files a/packages/pinball_components/assets/images/plunger/rocket.png and b/packages/pinball_components/assets/images/plunger/rocket.png differ diff --git a/packages/pinball_components/lib/gen/assets.gen.dart b/packages/pinball_components/lib/gen/assets.gen.dart index 1a272d31..71c01cfd 100644 --- a/packages/pinball_components/lib/gen/assets.gen.dart +++ b/packages/pinball_components/lib/gen/assets.gen.dart @@ -252,8 +252,10 @@ class $AssetsImagesSpaceshipGen { class $AssetsImagesSparkyGen { const $AssetsImagesSparkyGen(); + /// File path: assets/images/sparky/animatronic.png AssetGenImage get animatronic => const AssetGenImage('assets/images/sparky/animatronic.png'); + $AssetsImagesSparkyBumperGen get bumper => const $AssetsImagesSparkyBumperGen(); $AssetsImagesSparkyComputerGen get computer => diff --git a/packages/pinball_components/lib/src/components/plunger.dart b/packages/pinball_components/lib/src/components/plunger.dart index 735a5490..81de9dd5 100644 --- a/packages/pinball_components/lib/src/components/plunger.dart +++ b/packages/pinball_components/lib/src/components/plunger.dart @@ -82,7 +82,7 @@ class Plunger extends BodyComponent with InitialPosition, Layered { /// The velocity's magnitude depends on how far the [Plunger] has been pulled /// from its original [initialPosition]. void release() { - final velocity = (initialPosition.y - body.position.y) * 5; + final velocity = (initialPosition.y - body.position.y) * 7; body.linearVelocity = Vector2(0, velocity); _spriteComponent.release(); } @@ -221,7 +221,7 @@ class PlungerAnchorPrismaticJointDef extends PrismaticJointDef { plunger.body, anchor.body, plunger.body.position + anchor.body.position, - Vector2(18.6, BoardDimensions.bounds.height), + Vector2(16, BoardDimensions.bounds.height), ); enableLimit = true; lowerTranslation = double.negativeInfinity; diff --git a/packages/pinball_components/lib/src/components/render_priority.dart b/packages/pinball_components/lib/src/components/render_priority.dart index 0f530b64..c63b2b31 100644 --- a/packages/pinball_components/lib/src/components/render_priority.dart +++ b/packages/pinball_components/lib/src/components/render_priority.dart @@ -55,7 +55,7 @@ abstract class RenderPriority { static const int plunger = _above + launchRamp; - static const int rocket = _above + bottomBoundary; + static const int rocket = _below + bottomBoundary; // Dino Land diff --git a/packages/pinball_components/lib/src/components/rocket.dart b/packages/pinball_components/lib/src/components/rocket.dart index 3f9161ca..6ba0b10c 100644 --- a/packages/pinball_components/lib/src/components/rocket.dart +++ b/packages/pinball_components/lib/src/components/rocket.dart @@ -6,19 +6,22 @@ import 'package:pinball_components/pinball_components.dart' hide Assets; /// A [SpriteComponent] for the rocket over [Plunger]. /// {@endtemplate} class RocketSpriteComponent extends SpriteComponent with HasGameRef { - // TODO(ruimiguel): change this priority to be over launcher ramp and bottom - // wall. /// {@macro rocket_sprite_component} - RocketSpriteComponent() : super(priority: RenderPriority.rocket); + RocketSpriteComponent() + : super( + priority: RenderPriority.rocket, + anchor: Anchor.center, + ); @override Future onLoad() async { await super.onLoad(); - final sprite = await gameRef.loadSprite( - Assets.images.plunger.rocket.keyName, + final sprite = Sprite( + gameRef.images.fromCache( + Assets.images.plunger.rocket.keyName, + ), ); this.sprite = sprite; size = sprite.originalSize / 10; - anchor = Anchor.center; } } diff --git a/packages/pinball_components/test/src/components/golden/rocket.png b/packages/pinball_components/test/src/components/golden/rocket.png index 9511f3d5..62ba4e61 100644 Binary files a/packages/pinball_components/test/src/components/golden/rocket.png and b/packages/pinball_components/test/src/components/golden/rocket.png differ diff --git a/packages/pinball_components/test/src/components/rocket_test.dart b/packages/pinball_components/test/src/components/rocket_test.dart index 87cfe515..5bc9b136 100644 --- a/packages/pinball_components/test/src/components/rocket_test.dart +++ b/packages/pinball_components/test/src/components/rocket_test.dart @@ -8,14 +8,24 @@ import 'package:pinball_components/pinball_components.dart'; import '../../helpers/helpers.dart'; void main() { - group('RocketSpriteComponent', () { - final tester = FlameTester(TestGame.new); + TestWidgetsFlutterBinding.ensureInitialized(); + final assets = [ + Assets.images.plunger.rocket.keyName, + ]; + final flameTester = FlameTester(() => TestGame(assets)); - tester.testGameWidget( + group('RocketSpriteComponent', () { + flameTester.testGameWidget( 'renders correctly', setUp: (game, tester) async { - game.camera.followVector2(Vector2.zero()); + await game.images.loadAll(assets); await game.ensureAdd(RocketSpriteComponent()); + + game.camera + ..followVector2(Vector2.zero()) + ..zoom = 8; + + await tester.pump(); }, verify: (game, tester) async { await expectLater(