From 3e6a38f6a3a3e881fe672444dbebed921992bed0 Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Fri, 1 Apr 2022 19:05:03 +0200 Subject: [PATCH] refactor: moved SpaceshipExitRail to pinball components --- lib/game/components/components.dart | 1 - lib/game/game_assets.dart | 4 +++- lib/gen/assets.gen.dart | 4 ---- .../images/spaceship_ramp}/spaceship-drop-tube.png | Bin packages/pinball_components/lib/gen/assets.gen.dart | 11 +++++++++++ .../lib/src/components/components.dart | 1 + .../lib/src/components/spaceship.dart | 2 +- .../lib/src}/components/spaceship_exit_rail.dart | 12 ++++++------ packages/pinball_components/pubspec.yaml | 1 + packages/pinball_components/test/helpers/mocks.dart | 2 ++ .../src}/components/spaceship_exit_rail_test.dart | 5 ++--- test/helpers/mocks.dart | 2 -- 12 files changed, 27 insertions(+), 18 deletions(-) rename {assets/images/components => packages/pinball_components/assets/images/spaceship_ramp}/spaceship-drop-tube.png (100%) rename {lib/game => packages/pinball_components/lib/src}/components/spaceship_exit_rail.dart (94%) rename {test/game => packages/pinball_components/test/src}/components/spaceship_exit_rail_test.dart (94%) diff --git a/lib/game/components/components.dart b/lib/game/components/components.dart index 591f6cdb..853f6701 100644 --- a/lib/game/components/components.dart +++ b/lib/game/components/components.dart @@ -9,5 +9,4 @@ export 'kicker.dart'; export 'launcher_ramp.dart'; export 'plunger.dart'; export 'score_points.dart'; -export 'spaceship_exit_rail.dart'; export 'wall.dart'; diff --git a/lib/game/game_assets.dart b/lib/game/game_assets.dart index dcb740a1..e16c31f4 100644 --- a/lib/game/game_assets.dart +++ b/lib/game/game_assets.dart @@ -21,11 +21,13 @@ extension PinballGameAssetsX on PinballGame { images.load(components.Assets.images.dashBumper.b.inactive.keyName), images.load(components.Assets.images.dashBumper.main.active.keyName), images.load(components.Assets.images.dashBumper.main.inactive.keyName), + images.load( + components.Assets.images.spaceshipRamp.spaceshipDropTube.keyName, + ), images.load(Assets.images.components.background.path), images.load(Assets.images.components.spaceshipRamp.path), images.load(Assets.images.components.spaceshipRailingBg.path), images.load(Assets.images.components.spaceshipRailingFg.path), - images.load(Assets.images.components.spaceshipDropTube.path), ]); } } diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart index 7796df34..833327d3 100644 --- a/lib/gen/assets.gen.dart +++ b/lib/gen/assets.gen.dart @@ -21,10 +21,6 @@ class $AssetsImagesComponentsGen { AssetGenImage get background => const AssetGenImage('assets/images/components/background.png'); - /// File path: assets/images/components/spaceship-drop-tube.png - AssetGenImage get spaceshipDropTube => - const AssetGenImage('assets/images/components/spaceship-drop-tube.png'); - /// File path: assets/images/components/spaceship_railing_bg.png AssetGenImage get spaceshipRailingBg => const AssetGenImage('assets/images/components/spaceship_railing_bg.png'); diff --git a/assets/images/components/spaceship-drop-tube.png b/packages/pinball_components/assets/images/spaceship_ramp/spaceship-drop-tube.png similarity index 100% rename from assets/images/components/spaceship-drop-tube.png rename to packages/pinball_components/assets/images/spaceship_ramp/spaceship-drop-tube.png diff --git a/packages/pinball_components/lib/gen/assets.gen.dart b/packages/pinball_components/lib/gen/assets.gen.dart index cf32e986..c9c81c69 100644 --- a/packages/pinball_components/lib/gen/assets.gen.dart +++ b/packages/pinball_components/lib/gen/assets.gen.dart @@ -27,6 +27,9 @@ class $AssetsImagesGen { AssetGenImage get spaceshipBridge => const AssetGenImage('assets/images/spaceship_bridge.png'); + $AssetsImagesSpaceshipRampGen get spaceshipRamp => + const $AssetsImagesSpaceshipRampGen(); + /// File path: assets/images/spaceship_saucer.png AssetGenImage get spaceshipSaucer => const AssetGenImage('assets/images/spaceship_saucer.png'); @@ -77,6 +80,14 @@ class $AssetsImagesFlipperGen { const AssetGenImage('assets/images/flipper/right.png'); } +class $AssetsImagesSpaceshipRampGen { + const $AssetsImagesSpaceshipRampGen(); + + /// File path: assets/images/spaceship_ramp/spaceship-drop-tube.png + AssetGenImage get spaceshipDropTube => const AssetGenImage( + 'assets/images/spaceship_ramp/spaceship-drop-tube.png'); +} + class $AssetsImagesDashBumperAGen { const $AssetsImagesDashBumperAGen(); diff --git a/packages/pinball_components/lib/src/components/components.dart b/packages/pinball_components/lib/src/components/components.dart index bbb2c29c..3416717b 100644 --- a/packages/pinball_components/lib/src/components/components.dart +++ b/packages/pinball_components/lib/src/components/components.dart @@ -13,3 +13,4 @@ export 'layer.dart'; export 'ramp_opening.dart'; export 'shapes/shapes.dart'; export 'spaceship.dart'; +export 'spaceship_exit_rail.dart'; diff --git a/packages/pinball_components/lib/src/components/spaceship.dart b/packages/pinball_components/lib/src/components/spaceship.dart index 588c0e33..21ba690e 100644 --- a/packages/pinball_components/lib/src/components/spaceship.dart +++ b/packages/pinball_components/lib/src/components/spaceship.dart @@ -37,7 +37,7 @@ class Spaceship extends Forge2DBlueprint { AndroidHead()..initialPosition = position, SpaceshipHole( outsideLayer: Layer.spaceshipExitRail, - outsidePriority: 2, + outsidePriority: SpaceshipExitRail.ballPriorityWhenOnSpaceshipExitRail, )..initialPosition = position - Vector2(5.2, 4.8), SpaceshipHole()..initialPosition = position - Vector2(-7.2, 0.8), SpaceshipWall()..initialPosition = position, diff --git a/lib/game/components/spaceship_exit_rail.dart b/packages/pinball_components/lib/src/components/spaceship_exit_rail.dart similarity index 94% rename from lib/game/components/spaceship_exit_rail.dart rename to packages/pinball_components/lib/src/components/spaceship_exit_rail.dart index e4be9b31..92c43fb9 100644 --- a/lib/game/components/spaceship_exit_rail.dart +++ b/packages/pinball_components/lib/src/components/spaceship_exit_rail.dart @@ -4,7 +4,7 @@ import 'dart:math' as math; import 'package:flame/components.dart'; import 'package:flame_forge2d/flame_forge2d.dart'; -import 'package:pinball/gen/assets.gen.dart'; +import 'package:pinball_components/gen/assets.gen.dart'; import 'package:pinball_components/pinball_components.dart' hide Assets; /// {@template spaceship_exit_rail} @@ -14,7 +14,7 @@ class SpaceshipExitRail extends Forge2DBlueprint { /// {@macro spaceship_exit_rail} SpaceshipExitRail(); - /// Base priority for wall while be on jetpack ramp. + /// Base priority for ball while be in [_SpaceshipExitRailRamp]. static const ballPriorityWhenOnSpaceshipExitRail = 2; @override @@ -73,7 +73,7 @@ class _SpaceshipExitRailRamp extends BodyComponent final middleLeftCurveShape = BezierCurveShape( controlPoints: [ - Vector2(-30.93, 18.2), + topLeftCurveShape.vertices.last, Vector2(-22.6, 10.3), Vector2(-30, 0.2), ], @@ -83,7 +83,7 @@ class _SpaceshipExitRailRamp extends BodyComponent final bottomLeftCurveShape = BezierCurveShape( controlPoints: [ - Vector2(-30, 0.2), + middleLeftCurveShape.vertices.last, Vector2(-36, -8.6), Vector2(-32.04, -18.3), ], @@ -111,7 +111,7 @@ class _SpaceshipExitRailRamp extends BodyComponent final bottomRightCurveShape = BezierCurveShape( controlPoints: [ - Vector2(-25.29, -1.7), + middleRightCurveShape.vertices.last, Vector2(-29.91, -8.5), Vector2(-26.8, -15.7), ], @@ -142,7 +142,7 @@ class _SpaceshipExitRailRamp extends BodyComponent Future _loadSprite() async { final sprite = await gameRef.loadSprite( - Assets.images.components.spaceshipDropTube.path, + Assets.images.spaceshipRamp.spaceshipDropTube.keyName, ); final spriteComponent = SpriteComponent( sprite: sprite, diff --git a/packages/pinball_components/pubspec.yaml b/packages/pinball_components/pubspec.yaml index 8fc9c6f8..db3347cb 100644 --- a/packages/pinball_components/pubspec.yaml +++ b/packages/pinball_components/pubspec.yaml @@ -32,6 +32,7 @@ flutter: - assets/images/dash_bumper/a/ - assets/images/dash_bumper/b/ - assets/images/dash_bumper/main/ + - assets/images/spaceship_ramp/ flutter_gen: line_length: 80 diff --git a/packages/pinball_components/test/helpers/mocks.dart b/packages/pinball_components/test/helpers/mocks.dart index 7771d1e1..dbe4d844 100644 --- a/packages/pinball_components/test/helpers/mocks.dart +++ b/packages/pinball_components/test/helpers/mocks.dart @@ -17,6 +17,8 @@ class MockSpaceshipEntrance extends Mock implements SpaceshipEntrance {} class MockSpaceshipHole extends Mock implements SpaceshipHole {} +class MockSpaceshipExitRailEnd extends Mock implements SpaceshipExitRailEnd {} + class MockContact extends Mock implements Contact {} class MockContactCallback extends Mock diff --git a/test/game/components/spaceship_exit_rail_test.dart b/packages/pinball_components/test/src/components/spaceship_exit_rail_test.dart similarity index 94% rename from test/game/components/spaceship_exit_rail_test.dart rename to packages/pinball_components/test/src/components/spaceship_exit_rail_test.dart index edd81aab..7f33cc79 100644 --- a/test/game/components/spaceship_exit_rail_test.dart +++ b/packages/pinball_components/test/src/components/spaceship_exit_rail_test.dart @@ -1,14 +1,13 @@ import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:pinball/game/game.dart'; import 'package:pinball_components/pinball_components.dart'; import '../../helpers/helpers.dart'; void main() { group('SpaceshipExitRail', () { - late PinballGame game; + late Forge2DGame game; late SpaceshipExitRailEnd exitRailEnd; late Ball ball; late Body body; @@ -16,7 +15,7 @@ void main() { late Filter filterData; setUp(() { - game = MockPinballGame(); + game = MockGame(); exitRailEnd = MockSpaceshipExitRailEnd(); diff --git a/test/helpers/mocks.dart b/test/helpers/mocks.dart index fbe8edfb..f139bc7b 100644 --- a/test/helpers/mocks.dart +++ b/test/helpers/mocks.dart @@ -66,8 +66,6 @@ class MockFilter extends Mock implements Filter {} class MockFixture extends Mock implements Fixture {} -class MockSpaceshipExitRailEnd extends Mock implements SpaceshipExitRailEnd {} - class MockComponentSet extends Mock implements ComponentSet {} class MockDashNestBumper extends Mock implements DashNestBumper {}