From 50ee9775df102f6fec242cf076924c57b629a181 Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Tue, 12 Apr 2022 17:11:44 +0200 Subject: [PATCH] refactor: move rocket to pinball components --- lib/game/components/components.dart | 2 +- lib/game/game_assets.dart | 2 +- lib/game/pinball_game.dart | 7 +++-- .../assets/images/plunger}/rocket.png | Bin .../lib/gen/assets.gen.dart | 4 +++ .../lib/src/components/components.dart | 1 + .../lib/src/components/rocket.dart | 24 ++++++++++++++++++ 7 files changed, 34 insertions(+), 6 deletions(-) rename {assets/images/components => packages/pinball_components/assets/images/plunger}/rocket.png (100%) create mode 100644 packages/pinball_components/lib/src/components/rocket.dart diff --git a/lib/game/components/components.dart b/lib/game/components/components.dart index 8192b538..6457f095 100644 --- a/lib/game/components/components.dart +++ b/lib/game/components/components.dart @@ -7,7 +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 'launcher.dart'; export 'score_effect_controller.dart'; export 'score_points.dart'; export 'sparky_fire_zone.dart'; diff --git a/lib/game/game_assets.dart b/lib/game/game_assets.dart index 6dd121d7..7325135a 100644 --- a/lib/game/game_assets.dart +++ b/lib/game/game_assets.dart @@ -47,6 +47,7 @@ extension PinballGameAssetsX on PinballGame { images.load(components.Assets.images.chromeDino.mouth.keyName), images.load(components.Assets.images.chromeDino.head.keyName), images.load(components.Assets.images.plunger.plunger.keyName), + images.load(components.Assets.images.plunger.rocket.keyName), images.load(components.Assets.images.sparky.computer.base.keyName), images.load(components.Assets.images.sparky.computer.top.keyName), images.load(components.Assets.images.sparky.bumper.a.active.keyName), @@ -57,7 +58,6 @@ extension PinballGameAssetsX on PinballGame { images.load(components.Assets.images.sparky.bumper.c.inactive.keyName), images.load(components.Assets.images.backboard.backboardScores.keyName), images.load(components.Assets.images.backboard.backboardGameOver.keyName), - images.load(Assets.images.components.rocket.path), images.load(Assets.images.components.background.path), ]; } diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index 9b41add7..4098cade 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -45,11 +45,10 @@ class PinballGame extends Forge2DGame await _addGameBoundaries(); unawaited(addFromBlueprint(Boundaries())); - unawaited(addFromBlueprint(LaunchRamp())); unawaited(addFromBlueprint(ControlledSparkyComputer())); - final plungerZone = PlungerZone(); - unawaited(addFromBlueprint(plungerZone)); + final launcher = Launcher(); + unawaited(addFromBlueprint(launcher)); unawaited(add(Board())); unawaited(add(SparkyFireZone())); unawaited(addFromBlueprint(Slingshots())); @@ -69,7 +68,7 @@ class PinballGame extends Forge2DGame ), ); - controller.attachTo(plungerZone.plunger); + controller.attachTo(launcher.plunger); await super.onLoad(); } diff --git a/assets/images/components/rocket.png b/packages/pinball_components/assets/images/plunger/rocket.png similarity index 100% rename from assets/images/components/rocket.png rename to packages/pinball_components/assets/images/plunger/rocket.png diff --git a/packages/pinball_components/lib/gen/assets.gen.dart b/packages/pinball_components/lib/gen/assets.gen.dart index ab64439f..1baa7daa 100644 --- a/packages/pinball_components/lib/gen/assets.gen.dart +++ b/packages/pinball_components/lib/gen/assets.gen.dart @@ -178,6 +178,10 @@ class $AssetsImagesPlungerGen { /// File path: assets/images/plunger/plunger.png AssetGenImage get plunger => const AssetGenImage('assets/images/plunger/plunger.png'); + + /// File path: assets/images/plunger/rocket.png + AssetGenImage get rocket => + const AssetGenImage('assets/images/plunger/rocket.png'); } class $AssetsImagesSlingshotGen { diff --git a/packages/pinball_components/lib/src/components/components.dart b/packages/pinball_components/lib/src/components/components.dart index b5e9392b..6fbc69f6 100644 --- a/packages/pinball_components/lib/src/components/components.dart +++ b/packages/pinball_components/lib/src/components/components.dart @@ -19,6 +19,7 @@ export 'launch_ramp.dart'; export 'layer.dart'; export 'plunger.dart'; export 'ramp_opening.dart'; +export 'rocket.dart'; export 'score_text.dart'; export 'shapes/shapes.dart'; export 'slingshot.dart'; diff --git a/packages/pinball_components/lib/src/components/rocket.dart b/packages/pinball_components/lib/src/components/rocket.dart new file mode 100644 index 00000000..ee22efca --- /dev/null +++ b/packages/pinball_components/lib/src/components/rocket.dart @@ -0,0 +1,24 @@ +import 'package:flame/components.dart'; +import 'package:pinball_components/gen/assets.gen.dart'; +import 'package:pinball_components/pinball_components.dart' hide Assets; + +/// {@template rocket_sprite_component} +/// A [SpriteComponent] for the rocket over [Plunger]. +/// {@endtemplate} +class RocketSpriteComponent extends SpriteComponent with HasGameRef { + // TODO(ruimiguel): change this priority to be over launcher ramp and bottom + // wall. + /// {@macro rocket_sprite_component} + RocketSpriteComponent() : super(priority: 5); + + @override + Future onLoad() async { + await super.onLoad(); + final sprite = await gameRef.loadSprite( + Assets.images.plunger.rocket.keyName, + ); + this.sprite = sprite; + size = sprite.originalSize / 10; + anchor = Anchor.center; + } +}