From 79ad0677847ceb64275ed7726340805f9101659b Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Thu, 7 Apr 2022 18:15:08 +0200 Subject: [PATCH] refactor: changed renderBody to allow tracing on ramps --- .../lib/src/components/launch_ramp.dart | 19 ++++++++++++----- .../lib/src/components/spaceship.dart | 2 +- .../lib/src/components/spaceship_rail.dart | 8 +++---- .../lib/src/components/spaceship_ramp.dart | 21 ++++++++----------- 4 files changed, 28 insertions(+), 22 deletions(-) diff --git a/packages/pinball_components/lib/src/components/launch_ramp.dart b/packages/pinball_components/lib/src/components/launch_ramp.dart index 3268cc46..d5b381a6 100644 --- a/packages/pinball_components/lib/src/components/launch_ramp.dart +++ b/packages/pinball_components/lib/src/components/launch_ramp.dart @@ -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 onLoad() async { await super.onLoad(); await _loadSprite(); - renderBody = false; } Future _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 onLoad() async { await super.onLoad(); await _loadSprite(); - renderBody = false; } Future _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; diff --git a/packages/pinball_components/lib/src/components/spaceship.dart b/packages/pinball_components/lib/src/components/spaceship.dart index f1b58db0..3c079d11 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: SpaceshipRail.ballPriorityWhenOnSpaceshipRail, + outsidePriority: SpaceshipRail.ballPriorityInsideRail, )..initialPosition = position - Vector2(5.2, 4.8), SpaceshipHole()..initialPosition = position - Vector2(-7.2, 0.8), SpaceshipWall()..initialPosition = position, diff --git a/packages/pinball_components/lib/src/components/spaceship_rail.dart b/packages/pinball_components/lib/src/components/spaceship_rail.dart index ace12e61..f1572a9e 100644 --- a/packages/pinball_components/lib/src/components/spaceship_rail.dart +++ b/packages/pinball_components/lib/src/components/spaceship_rail.dart @@ -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; diff --git a/packages/pinball_components/lib/src/components/spaceship_ramp.dart b/packages/pinball_components/lib/src/components/spaceship_ramp.dart index 6fb6cda0..698c0c4c 100644 --- a/packages/pinball_components/lib/src/components/spaceship_ramp.dart +++ b/packages/pinball_components/lib/src/components/spaceship_ramp.dart @@ -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,