refactor: simplify ball entering spaceship

pull/298/head
Allison Ryan 3 years ago
parent 3bb5f42f58
commit 5f9fbbe130

@ -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(

@ -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,
);
}
}

Loading…
Cancel
Save