diff --git a/lib/game/game_assets.dart b/lib/game/game_assets.dart index a480e38f..533c7bd1 100644 --- a/lib/game/game_assets.dart +++ b/lib/game/game_assets.dart @@ -22,6 +22,9 @@ extension PinballGameAssetsX on PinballGame { images.load( components.Assets.images.launchRamp.foregroundRailing.keyName, ), + images.load( + components.Assets.images.launchRamp.backgroundRailing.keyName, + ), images.load(components.Assets.images.dino.dinoLandTop.keyName), images.load(components.Assets.images.dino.dinoLandBottom.keyName), images.load(components.Assets.images.dash.animatronic.keyName), diff --git a/packages/pinball_components/assets/images/launch_ramp/background-railing.png b/packages/pinball_components/assets/images/launch_ramp/background-railing.png new file mode 100644 index 00000000..aa7d5774 Binary files /dev/null and b/packages/pinball_components/assets/images/launch_ramp/background-railing.png differ diff --git a/packages/pinball_components/assets/images/launch_ramp/foreground-railing.png b/packages/pinball_components/assets/images/launch_ramp/foreground-railing.png index 7dd0de96..f953fdf5 100644 Binary files a/packages/pinball_components/assets/images/launch_ramp/foreground-railing.png and b/packages/pinball_components/assets/images/launch_ramp/foreground-railing.png differ diff --git a/packages/pinball_components/assets/images/launch_ramp/ramp.png b/packages/pinball_components/assets/images/launch_ramp/ramp.png index c811dd83..b024860a 100644 Binary files a/packages/pinball_components/assets/images/launch_ramp/ramp.png and b/packages/pinball_components/assets/images/launch_ramp/ramp.png differ diff --git a/packages/pinball_components/lib/gen/assets.gen.dart b/packages/pinball_components/lib/gen/assets.gen.dart index 0f08c3d8..836f9495 100644 --- a/packages/pinball_components/lib/gen/assets.gen.dart +++ b/packages/pinball_components/lib/gen/assets.gen.dart @@ -184,6 +184,10 @@ class $AssetsImagesKickerGen { class $AssetsImagesLaunchRampGen { const $AssetsImagesLaunchRampGen(); + /// File path: assets/images/launch_ramp/background-railing.png + AssetGenImage get backgroundRailing => + const AssetGenImage('assets/images/launch_ramp/background-railing.png'); + /// File path: assets/images/launch_ramp/foreground-railing.png AssetGenImage get foregroundRailing => const AssetGenImage('assets/images/launch_ramp/foreground-railing.png'); diff --git a/packages/pinball_components/lib/src/components/launch_ramp.dart b/packages/pinball_components/lib/src/components/launch_ramp.dart index c3d7624d..c144f38d 100644 --- a/packages/pinball_components/lib/src/components/launch_ramp.dart +++ b/packages/pinball_components/lib/src/components/launch_ramp.dart @@ -42,10 +42,21 @@ class LaunchRamp extends Forge2DBlueprint { /// {@endtemplate} class _LaunchRampBase extends BodyComponent with InitialPosition, Layered { /// {@macro launch_ramp_base} - _LaunchRampBase() : super(priority: Ball.launchRampPriority - 1) { + _LaunchRampBase() + : super( + priority: Ball.launchRampPriority - 1, + children: [ + _LaunchRampBackgroundRailingSpriteComponent(), + _LaunchRampBaseSpriteComponent(), + ], + ) { layer = Layer.launcher; + renderBody = false; } + // TODO(ruimiguel): final asset differs slightly from the current shape. We + // need to fix shape with correct vertices, but right now merge them to have + // final assets at game and not be blocked. List _createFixtureDefs() { final fixturesDef = []; @@ -114,28 +125,36 @@ class _LaunchRampBase extends BodyComponent with InitialPosition, Layered { return body; } +} +class _LaunchRampBaseSpriteComponent extends SpriteComponent with HasGameRef { @override Future onLoad() async { await super.onLoad(); - renderBody = false; - await add(_LaunchRampBaseSpriteComponent()); + final sprite = await gameRef.loadSprite( + Assets.images.launchRamp.ramp.keyName, + ); + this.sprite = sprite; + size = sprite.originalSize / 10; + anchor = Anchor.center; + position = Vector2(25.65, 0.7); } } -class _LaunchRampBaseSpriteComponent extends SpriteComponent with HasGameRef { +class _LaunchRampBackgroundRailingSpriteComponent extends SpriteComponent + with HasGameRef { @override Future onLoad() async { await super.onLoad(); final sprite = await gameRef.loadSprite( - Assets.images.launchRamp.ramp.keyName, + Assets.images.launchRamp.backgroundRailing.keyName, ); this.sprite = sprite; size = sprite.originalSize / 10; anchor = Anchor.center; - position = Vector2(25.65, 0); + position = Vector2(25.6, -1.3); } } @@ -145,7 +164,13 @@ class _LaunchRampBaseSpriteComponent extends SpriteComponent with HasGameRef { /// {@endtemplate} class _LaunchRampForegroundRailing extends BodyComponent with InitialPosition { /// {@macro launch_ramp_foreground_railing} - _LaunchRampForegroundRailing() : super(priority: Ball.launchRampPriority + 1); + _LaunchRampForegroundRailing() + : super( + priority: Ball.launchRampPriority + 1, + children: [_LaunchRampForegroundRailingSpriteComponent()], + ) { + renderBody = false; + } List _createFixtureDefs() { final fixturesDef = []; @@ -153,7 +178,7 @@ class _LaunchRampForegroundRailing extends BodyComponent with InitialPosition { final rightStraightShape = EdgeShape() ..set( Vector2(27.6, -57.9), - Vector2(30, -35.1), + Vector2(38.1, 42.6), ); final rightStraightFixtureDef = FixtureDef(rightStraightShape); fixturesDef.add(rightStraightFixtureDef); @@ -189,14 +214,6 @@ class _LaunchRampForegroundRailing extends BodyComponent with InitialPosition { return body; } - - @override - Future onLoad() async { - await super.onLoad(); - renderBody = false; - - await add(_LaunchRampForegroundRailingSpriteComponent()); - } } class _LaunchRampForegroundRailingSpriteComponent extends SpriteComponent @@ -211,7 +228,7 @@ class _LaunchRampForegroundRailingSpriteComponent extends SpriteComponent this.sprite = sprite; size = sprite.originalSize / 10; anchor = Anchor.center; - position = Vector2(22.8, 0); + position = Vector2(22.8, 0.5); } } diff --git a/packages/pinball_components/test/src/components/golden/launch-ramp.png b/packages/pinball_components/test/src/components/golden/launch-ramp.png index e872c533..52ab2510 100644 Binary files a/packages/pinball_components/test/src/components/golden/launch-ramp.png and b/packages/pinball_components/test/src/components/golden/launch-ramp.png differ diff --git a/packages/pinball_components/test/src/components/launch_ramp_test.dart b/packages/pinball_components/test/src/components/launch_ramp_test.dart index 1f5d6f26..2defc168 100644 --- a/packages/pinball_components/test/src/components/launch_ramp_test.dart +++ b/packages/pinball_components/test/src/components/launch_ramp_test.dart @@ -16,6 +16,7 @@ void main() { 'renders correctly', setUp: (game, tester) async { await game.addFromBlueprint(LaunchRamp()); + await game.ready(); game.camera.followVector2(Vector2.zero()); game.camera.zoom = 4.1; },