From bd106f4dbd4cef0de302727895bd0d9465c46143 Mon Sep 17 00:00:00 2001 From: alestiago Date: Sun, 1 May 2022 13:25:56 +0100 Subject: [PATCH] refactor: made LaunchRamp a Component --- lib/game/components/controlled_ball.dart | 1 - lib/game/components/launcher.dart | 8 ++++---- lib/game/pinball_game.dart | 16 +++------------- .../lib/src/components/launch_ramp.dart | 6 ++---- 4 files changed, 9 insertions(+), 22 deletions(-) diff --git a/lib/game/components/controlled_ball.dart b/lib/game/components/controlled_ball.dart index ff05ad62..f01da65d 100644 --- a/lib/game/components/controlled_ball.dart +++ b/lib/game/components/controlled_ball.dart @@ -19,7 +19,6 @@ class ControlledBall extends Ball with Controls { required CharacterTheme characterTheme, }) : super(baseColor: characterTheme.ballColor) { controller = BallController(this); - priority = RenderPriority.ballOnLaunchRamp; layer = Layer.launcher; } diff --git a/lib/game/components/launcher.dart b/lib/game/components/launcher.dart index 959e8da0..7921819b 100644 --- a/lib/game/components/launcher.dart +++ b/lib/game/components/launcher.dart @@ -1,4 +1,4 @@ -import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:flame/components.dart'; import 'package:pinball/game/components/components.dart'; import 'package:pinball_components/pinball_components.dart' hide Assets; import 'package:pinball_flame/pinball_flame.dart'; @@ -7,15 +7,15 @@ import 'package:pinball_flame/pinball_flame.dart'; /// A [Blueprint] which creates the [Plunger], [RocketSpriteComponent] and /// [LaunchRamp]. /// {@endtemplate} -class Launcher extends Blueprint { +class Launcher extends Component { /// {@macro launcher} Launcher() : super( - components: [ + children: [ + LaunchRamp(), ControlledPlunger(compressionDistance: 10.5) ..initialPosition = Vector2(41.1, 43), RocketSpriteComponent()..position = Vector2(43, 62.3), ], - blueprints: [LaunchRamp()], ); } diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index 74f547aa..a3607a5d 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -51,7 +51,7 @@ class PinballGame extends Forge2DGame await addFromBlueprint(Boundaries()); final launcher = Launcher(); - await addFromBlueprint(launcher); + await add(launcher); await add(Multipliers()); await add(FlutterForest()); await addFromBlueprint(SparkyScorch()); @@ -67,7 +67,6 @@ class PinballGame extends Forge2DGame ), ); - controller.attachTo(launcher.components.whereType().single); await super.onLoad(); } @@ -138,8 +137,6 @@ class _GameBallsController extends ComponentController with BlocComponent { _GameBallsController(PinballGame game) : super(game); - late final Plunger _plunger; - @override bool listenWhen(GameState? previousState, GameState newState) { final noBallsLeft = component.descendants().whereType().isEmpty; @@ -164,18 +161,11 @@ class _GameBallsController extends ComponentController final ball = ControlledBall.launch( characterTheme: component.characterTheme, )..initialPosition = Vector2( - _plunger.body.position.x, - _plunger.body.position.y - Ball.size.y, + Vector2(41.1, 43).x, + Vector2(41.1, 45).y - Ball.size.y, ); component.add(ball); } - - /// Attaches the controller to the plunger. - // TODO(alestiago): Remove this method and use onLoad instead. - // ignore: use_setters_to_change_properties - void attachTo(Plunger plunger) { - _plunger = plunger; - } } class DebugPinballGame extends PinballGame with FPSCounter { diff --git a/packages/pinball_components/lib/src/components/launch_ramp.dart b/packages/pinball_components/lib/src/components/launch_ramp.dart index 13f063b6..29d74ade 100644 --- a/packages/pinball_components/lib/src/components/launch_ramp.dart +++ b/packages/pinball_components/lib/src/components/launch_ramp.dart @@ -11,11 +11,11 @@ import 'package:pinball_flame/pinball_flame.dart'; /// A [Blueprint] which creates the [_LaunchRampBase] and /// [_LaunchRampForegroundRailing]. /// {@endtemplate} -class LaunchRamp extends Blueprint { +class LaunchRamp extends Component { /// {@macro launch_ramp} LaunchRamp() : super( - components: [ + children: [ _LaunchRampBase(), _LaunchRampForegroundRailing(), _LaunchRampExit()..initialPosition = Vector2(0.6, -34), @@ -31,7 +31,6 @@ class _LaunchRampBase extends BodyComponent with Layered { /// {@macro launch_ramp_base} _LaunchRampBase() : super( - priority: RenderPriority.launchRamp, renderBody: false, children: [ _LaunchRampBackgroundRailingSpriteComponent(), @@ -148,7 +147,6 @@ class _LaunchRampForegroundRailing extends BodyComponent { /// {@macro launch_ramp_foreground_railing} _LaunchRampForegroundRailing() : super( - priority: RenderPriority.launchRampForegroundRailing, children: [_LaunchRampForegroundRailingSpriteComponent()], renderBody: false, );