From c0f4ef05b36fc12d91505cf283469b35b78380b0 Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Tue, 12 Apr 2022 17:12:04 +0200 Subject: [PATCH] refactor: created Launcher to group rocket, plunger and launchramp --- lib/game/components/launcher.dart | 27 ++++++++++++++++ lib/game/components/plunger_zone.dart | 44 --------------------------- 2 files changed, 27 insertions(+), 44 deletions(-) create mode 100644 lib/game/components/launcher.dart delete mode 100644 lib/game/components/plunger_zone.dart diff --git a/lib/game/components/launcher.dart b/lib/game/components/launcher.dart new file mode 100644 index 00000000..a9964ea8 --- /dev/null +++ b/lib/game/components/launcher.dart @@ -0,0 +1,27 @@ +import 'package:flame/components.dart'; +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:pinball/game/components/components.dart'; +import 'package:pinball_components/pinball_components.dart' hide Assets; + +/// {@template plunger_zone} +/// A [Blueprint] which groups the [Plunger], [RocketSpriteComponent] and +/// [LaunchRamp]. +/// {@endtemplate} +class Launcher extends Forge2DBlueprint { + /// {@macro plunger_zone} + Launcher(); + + /// [Plunger] to launch the [Ball] into the board. + late final Plunger plunger; + + @override + void build(Forge2DGame gameRef) { + plunger = ControlledPlunger(compressionDistance: 12.3) + ..initialPosition = Vector2(40.1, -38); + + final _rocket = RocketSpriteComponent()..position = Vector2(43, 62); + + gameRef.addFromBlueprint(LaunchRamp()); + addAll([_rocket, plunger]); + } +} diff --git a/lib/game/components/plunger_zone.dart b/lib/game/components/plunger_zone.dart deleted file mode 100644 index 812e7d15..00000000 --- a/lib/game/components/plunger_zone.dart +++ /dev/null @@ -1,44 +0,0 @@ -import 'package:flame/components.dart'; -import 'package:flame_forge2d/flame_forge2d.dart'; -import 'package:pinball/game/components/components.dart'; -import 'package:pinball/gen/assets.gen.dart'; -import 'package:pinball_components/pinball_components.dart' hide Assets; - -/// {@template plunger_zone} -/// A [Blueprint] which creates zone for the [Plunger]. -/// {@endtemplate} -class PlungerZone extends Forge2DBlueprint { - /// {@macro plunger_zone} - PlungerZone(); - - /// [Plunger] to launch the [Ball] into the board. - late final Plunger plunger; - - @override - void build(Forge2DGame gameRef) { - plunger = ControlledPlunger(compressionDistance: 12.3) - ..initialPosition = Vector2(40.1, -38); - - final _rocket = _PlungerRocketSpriteComponent(); - - addAll([_rocket, plunger]); - } -} - -class _PlungerRocketSpriteComponent extends SpriteComponent with HasGameRef { - // TODO(ruimiguel): change this priority to be over launcher ramp and bottom - // wall. - _PlungerRocketSpriteComponent() : super(priority: 5); - - @override - Future onLoad() async { - await super.onLoad(); - final sprite = await gameRef.loadSprite( - Assets.images.components.rocket.path, - ); - this.sprite = sprite; - size = sprite.originalSize / 10; - anchor = Anchor.center; - position = Vector2(43.5, 62); - } -}