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

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

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

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

Loading…
Cancel
Save