From 5f9fbbe13070a754d2813919cc849fa2e1911573 Mon Sep 17 00:00:00 2001 From: Allison Ryan Date: Sun, 1 May 2022 14:25:39 -0500 Subject: [PATCH] refactor: simplify ball entering spaceship --- .../lib/src/components/android_spaceship.dart | 25 ++++++++++++++++ .../lib/src/components/spaceship_ramp.dart | 30 ++++--------------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/packages/pinball_components/lib/src/components/android_spaceship.dart b/packages/pinball_components/lib/src/components/android_spaceship.dart index 1dcf6780..4fe66436 100644 --- a/packages/pinball_components/lib/src/components/android_spaceship.dart +++ b/packages/pinball_components/lib/src/components/android_spaceship.dart @@ -17,6 +17,7 @@ class AndroidSpaceship extends Blueprint { _SpaceshipSaucerSpriteAnimationComponent()..position = position, _LightBeamSpriteComponent()..position = position + Vector2(2.5, 5), _AndroidHead()..initialPosition = position + Vector2(0.5, 0.25), + _SpaceshipEntrance(), _SpaceshipHole( outsideLayer: Layer.spaceshipExitRail, outsidePriority: RenderPriority.ballOnSpaceshipRail, @@ -185,6 +186,30 @@ class _AndroidHeadSpriteAnimationComponent extends SpriteAnimationComponent } } +class _SpaceshipEntrance extends LayerSensor { + _SpaceshipEntrance() + : super( + insideLayer: Layer.spaceship, + outsideLayer: Layer.spaceshipEntranceRamp, + orientation: LayerEntranceOrientation.up, + insidePriority: RenderPriority.ballOnSpaceship, + outsidePriority: RenderPriority.ballOnSpaceshipRamp, + ) { + layer = Layer.spaceship; + } + + @override + Shape get shape { + return PolygonShape() + ..setAsBox( + 2, + 0.1, + Vector2(-27.4, -37.2), + -0.12, + ); + } +} + class _SpaceshipHole extends LayerSensor { _SpaceshipHole({required Layer outsideLayer, required int outsidePriority}) : super( diff --git a/packages/pinball_components/lib/src/components/spaceship_ramp.dart b/packages/pinball_components/lib/src/components/spaceship_ramp.dart index 6a034daa..19823a3e 100644 --- a/packages/pinball_components/lib/src/components/spaceship_ramp.dart +++ b/packages/pinball_components/lib/src/components/spaceship_ramp.dart @@ -15,19 +15,7 @@ class SpaceshipRamp extends Blueprint { SpaceshipRamp() : super( components: [ - _SpaceshipRampOpening( - outsidePriority: RenderPriority.ballOnBoard, - rotation: math.pi, - ) - ..initialPosition = Vector2(1.7, -19.8) - ..layer = Layer.opening, - _SpaceshipRampOpening( - outsideLayer: Layer.spaceship, - outsidePriority: RenderPriority.ballOnSpaceship, - rotation: math.pi, - ) - ..initialPosition = Vector2(-13.7, -18.6) - ..layer = Layer.spaceshipEntranceRamp, + _SpaceshipRampOpening()..initialPosition = Vector2(1.7, -19.8), _SpaceshipRampBackground(), _SpaceshipRampBoardOpeningSpriteComponent() ..position = Vector2(3.4, -39.5), @@ -343,21 +331,15 @@ class _SpaceshipRampBase extends BodyComponent with InitialPosition, Layered { /// {@endtemplate} class _SpaceshipRampOpening extends LayerSensor { /// {@macro spaceship_ramp_opening} - _SpaceshipRampOpening({ - Layer? outsideLayer, - int? outsidePriority, - required double rotation, - }) : _rotation = rotation, - super( + _SpaceshipRampOpening() + : super( insideLayer: Layer.spaceshipEntranceRamp, - outsideLayer: outsideLayer, + outsideLayer: Layer.opening, orientation: LayerEntranceOrientation.down, insidePriority: RenderPriority.ballOnSpaceshipRamp, - outsidePriority: outsidePriority, + outsidePriority: RenderPriority.ballOnBoard, ); - final double _rotation; - static final Vector2 _size = Vector2(_SpaceshipRampBackground.width / 3, .1); @override @@ -367,7 +349,7 @@ class _SpaceshipRampOpening extends LayerSensor { _size.x, _size.y, initialPosition, - _rotation, + math.pi, ); } }