From 57b4d67072da0c6ce592d91eec9d0b70e3a77751 Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Tue, 12 Apr 2022 13:40:11 +0200 Subject: [PATCH] feat: added plunger zone and placed rocket over plunger --- lib/game/components/components.dart | 1 + lib/game/components/plunger_zone.dart | 41 +++++++++++++++++++ lib/game/pinball_game.dart | 8 ++-- .../lib/src/components/plunger.dart | 4 +- 4 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 lib/game/components/plunger_zone.dart diff --git a/lib/game/components/components.dart b/lib/game/components/components.dart index a5540614..8192b538 100644 --- a/lib/game/components/components.dart +++ b/lib/game/components/components.dart @@ -7,6 +7,7 @@ export 'controlled_plunger.dart'; export 'controlled_sparky_computer.dart'; export 'flutter_forest.dart'; export 'game_flow_controller.dart'; +export 'plunger_zone.dart'; export 'score_effect_controller.dart'; export 'score_points.dart'; export 'sparky_fire_zone.dart'; diff --git a/lib/game/components/plunger_zone.dart b/lib/game/components/plunger_zone.dart new file mode 100644 index 00000000..dc42bfcc --- /dev/null +++ b/lib/game/components/plunger_zone.dart @@ -0,0 +1,41 @@ +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(); + + 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 { + _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); + } +} diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index df602184..9b41add7 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -48,10 +48,8 @@ class PinballGame extends Forge2DGame unawaited(addFromBlueprint(LaunchRamp())); unawaited(addFromBlueprint(ControlledSparkyComputer())); - final plunger = ControlledPlunger(compressionDistance: 29) - ..initialPosition = Vector2(38, -19); - await add(plunger); - + final plungerZone = PlungerZone(); + unawaited(addFromBlueprint(plungerZone)); unawaited(add(Board())); unawaited(add(SparkyFireZone())); unawaited(addFromBlueprint(Slingshots())); @@ -71,7 +69,7 @@ class PinballGame extends Forge2DGame ), ); - controller.attachTo(plunger); + controller.attachTo(plungerZone.plunger); await super.onLoad(); } diff --git a/packages/pinball_components/lib/src/components/plunger.dart b/packages/pinball_components/lib/src/components/plunger.dart index 7e0ba5ba..b8ec1fb6 100644 --- a/packages/pinball_components/lib/src/components/plunger.dart +++ b/packages/pinball_components/lib/src/components/plunger.dart @@ -90,8 +90,8 @@ class _PlungerSpriteComponent extends SpriteComponent with HasGameRef { this.sprite = sprite; size = sprite.originalSize / 10; anchor = Anchor.center; - position = Vector2(2, 19); - angle = -0.033; + position = Vector2(1.5, 13.4); + angle = -0.008; } }