refactor: changed renderBody to allow tracing on ramps

pull/168/head
RuiAlonso 4 years ago
parent 278d641f3a
commit 79ad067784

@ -11,6 +11,9 @@ import 'package:pinball_components/pinball_components.dart';
/// [_LaunchRampForegroundRailing].
/// {@endtemplate}
class LaunchRamp extends Forge2DBlueprint {
/// Base priority for ball while be in [_LaunchRampBase].
static const ballPriorityInsideRamp = 0;
@override
void build(_) {
addAllContactCallback([
@ -40,7 +43,11 @@ class LaunchRamp extends Forge2DBlueprint {
/// {@endtemplate}
class _LaunchRampBase extends BodyComponent with InitialPosition, Layered {
/// {@macro launch_ramp_base}
_LaunchRampBase() : super(priority: -1) {
_LaunchRampBase()
: super(
priority: LaunchRamp.ballPriorityInsideRamp - 1,
) {
renderBody = false;
layer = Layer.launcher;
}
@ -116,7 +123,6 @@ class _LaunchRampBase extends BodyComponent with InitialPosition, Layered {
Future<void> onLoad() async {
await super.onLoad();
await _loadSprite();
renderBody = false;
}
Future<void> _loadSprite() async {
@ -142,7 +148,11 @@ class _LaunchRampBase extends BodyComponent with InitialPosition, Layered {
class _LaunchRampForegroundRailing extends BodyComponent
with InitialPosition, Layered {
/// {@macro launch_ramp_foreground_railing}
_LaunchRampForegroundRailing() : super(priority: 1) {
_LaunchRampForegroundRailing()
: super(
priority: LaunchRamp.ballPriorityInsideRamp + 1,
) {
renderBody = false;
layer = Layer.launcher;
}
@ -193,7 +203,6 @@ class _LaunchRampForegroundRailing extends BodyComponent
Future<void> onLoad() async {
await super.onLoad();
await _loadSprite();
renderBody = false;
}
Future<void> _loadSprite() async {
@ -224,7 +233,7 @@ class _LaunchRampExit extends RampOpening {
super(
insideLayer: Layer.launcher,
orientation: RampOrientation.down,
insidePriority: 3,
insidePriority: LaunchRamp.ballPriorityInsideRamp,
);
final double _rotation;

@ -37,7 +37,7 @@ class Spaceship extends Forge2DBlueprint {
AndroidHead()..initialPosition = position,
SpaceshipHole(
outsideLayer: Layer.spaceshipExitRail,
outsidePriority: SpaceshipRail.ballPriorityWhenOnSpaceshipRail,
outsidePriority: SpaceshipRail.ballPriorityInsideRail,
)..initialPosition = position - Vector2(5.2, 4.8),
SpaceshipHole()..initialPosition = position - Vector2(-7.2, 0.8),
SpaceshipWall()..initialPosition = position,

@ -15,7 +15,7 @@ class SpaceshipRail extends Forge2DBlueprint {
SpaceshipRail();
/// Base priority for ball while be in [_SpaceshipRailRamp].
static const ballPriorityWhenOnSpaceshipRail = 2;
static const ballPriorityInsideRail = 2;
@override
void build(_) {
@ -45,7 +45,7 @@ class SpaceshipRail extends Forge2DBlueprint {
class _SpaceshipRailRamp extends BodyComponent with InitialPosition, Layered {
_SpaceshipRailRamp()
: super(
priority: SpaceshipRail.ballPriorityWhenOnSpaceshipRail - 1,
priority: SpaceshipRail.ballPriorityInsideRail - 1,
) {
renderBody = false;
layer = Layer.spaceshipExitRail;
@ -162,7 +162,7 @@ class _SpaceshipRailForeground extends SpriteComponent with HasGameRef {
: super(
anchor: Anchor.center,
position: Vector2(-28.5, 19.7),
priority: SpaceshipRail.ballPriorityWhenOnSpaceshipRail + 1,
priority: SpaceshipRail.ballPriorityInsideRail + 1,
);
@override
@ -181,7 +181,7 @@ class _SpaceshipRailForeground extends SpriteComponent with HasGameRef {
class _SpaceshipRailBase extends BodyComponent with InitialPosition, Layered {
_SpaceshipRailBase({required this.radius})
: super(
priority: SpaceshipRail.ballPriorityWhenOnSpaceshipRail + 1,
priority: SpaceshipRail.ballPriorityInsideRail + 1,
) {
renderBody = false;
layer = Layer.board;

@ -60,6 +60,7 @@ class _SpaceshipRampBackground extends BodyComponent
with InitialPosition, Layered {
_SpaceshipRampBackground()
: super(priority: SpaceshipRamp.ballPriorityInsideRamp - 1) {
renderBody = false;
layer = Layer.spaceshipEntranceRamp;
}
@ -96,8 +97,6 @@ class _SpaceshipRampBackground extends BodyComponent
@override
Body createBody() {
renderBody = false;
final bodyDef = BodyDef()
..userData = this
..position = initialPosition;
@ -121,7 +120,7 @@ class _SpaceshipRampBackground extends BodyComponent
final spriteRampComponent = SpriteComponent(
sprite: spriteRamp,
size: Vector2(38.1, 33.8),
size: spriteRamp.originalSize / 10,
anchor: Anchor.center,
position: Vector2(-12.2, -53.5),
);
@ -131,9 +130,9 @@ class _SpaceshipRampBackground extends BodyComponent
);
final spriteRailingBgComponent = SpriteComponent(
sprite: spriteRailingBg,
size: Vector2(38.3, 35.1),
size: spriteRailingBg.originalSize / 10,
anchor: Anchor.center,
position: spriteRampComponent.position + Vector2(0, -1),
position: Vector2(-12.2, -54.5),
);
await addAll([
@ -148,6 +147,7 @@ class _SpaceshipRampForegroundRailing extends BodyComponent
with InitialPosition, Layered {
_SpaceshipRampForegroundRailing()
: super(priority: SpaceshipRamp.ballPriorityInsideRamp + 1) {
renderBody = false;
layer = Layer.spaceshipEntranceRamp;
}
@ -181,8 +181,6 @@ class _SpaceshipRampForegroundRailing extends BodyComponent
@override
Body createBody() {
renderBody = false;
final bodyDef = BodyDef()
..userData = this
..position = initialPosition;
@ -205,7 +203,7 @@ class _SpaceshipRampForegroundRailing extends BodyComponent
);
final spriteRailingFgComponent = SpriteComponent(
sprite: spriteRailingFg,
size: Vector2(26.1, 28.3),
size: spriteRailingFg.originalSize / 10,
anchor: Anchor.center,
position: Vector2(-12.2, -52.5),
);
@ -222,8 +220,6 @@ class _SpaceshipRampBase extends BodyComponent with InitialPosition, Layered {
@override
Body createBody() {
renderBody = false;
const baseWidth = 6;
final baseShape = BezierCurveShape(
controlPoints: [
@ -262,7 +258,9 @@ class _SpaceshipRampOpening extends RampOpening {
orientation: RampOrientation.down,
insidePriority: SpaceshipRamp.ballPriorityInsideRamp,
outsidePriority: outsidePriority,
);
) {
renderBody = false;
}
final double _rotation;
@ -270,7 +268,6 @@ class _SpaceshipRampOpening extends RampOpening {
@override
Shape get shape {
renderBody = false;
return PolygonShape()
..setAsBox(
_size.x,

Loading…
Cancel
Save