From ea662c5c9ba98c0dc76f9899b583571df9ac9501 Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Fri, 1 Apr 2022 00:40:20 +0200 Subject: [PATCH] refactor: moved dino walls to pinball_components --- lib/game/components/components.dart | 1 - lib/game/game_assets.dart | 4 +- lib/game/pinball_game.dart | 9 ++-- lib/gen/assets.gen.dart | 8 --- .../assets/images/dino}/dino-land-bottom.png | Bin .../assets/images/dino}/dino-land-top.png | Bin .../lib/gen/assets.gen.dart | 14 +++++- .../lib/src/components/components.dart | 1 + .../lib/src/components/dino_walls.dart | 46 +++++++++++++----- packages/pinball_components/pubspec.yaml | 1 + .../test/src/components/dino_walls_test.dart | 2 +- 11 files changed, 56 insertions(+), 30 deletions(-) rename {assets/images/components => packages/pinball_components/assets/images/dino}/dino-land-bottom.png (100%) rename {assets/images/components => packages/pinball_components/assets/images/dino}/dino-land-top.png (100%) rename lib/game/components/dino_wall.dart => packages/pinball_components/lib/src/components/dino_walls.dart (84%) rename test/game/components/dino_wall_test.dart => packages/pinball_components/test/src/components/dino_walls_test.dart (95%) diff --git a/lib/game/components/components.dart b/lib/game/components/components.dart index 766a9d42..e19c607c 100644 --- a/lib/game/components/components.dart +++ b/lib/game/components/components.dart @@ -2,7 +2,6 @@ export 'board.dart'; export 'bonus_word.dart'; export 'chrome_dino.dart'; export 'controlled_ball.dart'; -export 'dino_wall.dart'; export 'flipper_controller.dart'; export 'flutter_forest.dart'; export 'jetpack_ramp.dart'; diff --git a/lib/game/game_assets.dart b/lib/game/game_assets.dart index f89a999c..edfe7947 100644 --- a/lib/game/game_assets.dart +++ b/lib/game/game_assets.dart @@ -13,9 +13,9 @@ extension PinballGameAssetsX on PinballGame { images.load(components.Assets.images.flipper.right.keyName), images.load(components.Assets.images.baseboard.left.keyName), images.load(components.Assets.images.baseboard.right.keyName), + images.load(components.Assets.images.dino.dinoLandTop.keyName), + images.load(components.Assets.images.dino.dinoLandBottom.keyName), images.load(Assets.images.components.background.path), - images.load(Assets.images.components.dinoLandTop.path), - images.load(Assets.images.components.dinoLandBottom.path), ]); } } diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index 63dc4f95..c36a2d2c 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -66,12 +66,9 @@ class PinballGame extends Forge2DGame Future _addGameBoundaries() async { await add(BottomWall()); createBoundaries(this).forEach(add); - await add( - DinoTopWall()..initialPosition = Vector2(-2.4, 0), - ); - await add( - DinoBottomWall()..initialPosition = Vector2(-2.4, 0), - ); + unawaited(addFromBlueprint(DinoWalls( + position: Vector2(-2.4, 0), + ))); } Future _addPlunger() async { diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart index 42dc62ea..97be7f3e 100644 --- a/lib/gen/assets.gen.dart +++ b/lib/gen/assets.gen.dart @@ -20,14 +20,6 @@ class $AssetsImagesComponentsGen { /// File path: assets/images/components/background.png AssetGenImage get background => const AssetGenImage('assets/images/components/background.png'); - - /// File path: assets/images/components/dino-land-bottom.png - AssetGenImage get dinoLandBottom => - const AssetGenImage('assets/images/components/dino-land-bottom.png'); - - /// File path: assets/images/components/dino-land-top.png - AssetGenImage get dinoLandTop => - const AssetGenImage('assets/images/components/dino-land-top.png'); } class Assets { diff --git a/assets/images/components/dino-land-bottom.png b/packages/pinball_components/assets/images/dino/dino-land-bottom.png similarity index 100% rename from assets/images/components/dino-land-bottom.png rename to packages/pinball_components/assets/images/dino/dino-land-bottom.png diff --git a/assets/images/components/dino-land-top.png b/packages/pinball_components/assets/images/dino/dino-land-top.png similarity index 100% rename from assets/images/components/dino-land-top.png rename to packages/pinball_components/assets/images/dino/dino-land-top.png diff --git a/packages/pinball_components/lib/gen/assets.gen.dart b/packages/pinball_components/lib/gen/assets.gen.dart index 27a54591..8bd651ed 100644 --- a/packages/pinball_components/lib/gen/assets.gen.dart +++ b/packages/pinball_components/lib/gen/assets.gen.dart @@ -14,7 +14,7 @@ class $AssetsImagesGen { AssetGenImage get ball => const AssetGenImage('assets/images/ball.png'); $AssetsImagesBaseboardGen get baseboard => const $AssetsImagesBaseboardGen(); - + $AssetsImagesDinoGen get dino => const $AssetsImagesDinoGen(); $AssetsImagesFlipperGen get flipper => const $AssetsImagesFlipperGen(); /// File path: assets/images/flutter_sign_post.png @@ -42,6 +42,18 @@ class $AssetsImagesBaseboardGen { const AssetGenImage('assets/images/baseboard/right.png'); } +class $AssetsImagesDinoGen { + const $AssetsImagesDinoGen(); + + /// File path: assets/images/dino/dino-land-bottom.png + AssetGenImage get dinoLandBottom => + const AssetGenImage('assets/images/dino/dino-land-bottom.png'); + + /// File path: assets/images/dino/dino-land-top.png + AssetGenImage get dinoLandTop => + const AssetGenImage('assets/images/dino/dino-land-top.png'); +} + class $AssetsImagesFlipperGen { const $AssetsImagesFlipperGen(); diff --git a/packages/pinball_components/lib/src/components/components.dart b/packages/pinball_components/lib/src/components/components.dart index a475f91e..4e38c2c4 100644 --- a/packages/pinball_components/lib/src/components/components.dart +++ b/packages/pinball_components/lib/src/components/components.dart @@ -2,6 +2,7 @@ export 'ball.dart'; export 'baseboard.dart'; export 'board_dimensions.dart'; export 'board_side.dart'; +export 'dino_walls.dart'; export 'fire_effect.dart'; export 'flipper.dart'; export 'flutter_sign_post.dart'; diff --git a/lib/game/components/dino_wall.dart b/packages/pinball_components/lib/src/components/dino_walls.dart similarity index 84% rename from lib/game/components/dino_wall.dart rename to packages/pinball_components/lib/src/components/dino_walls.dart index c44dc789..7519d863 100644 --- a/lib/game/components/dino_wall.dart +++ b/packages/pinball_components/lib/src/components/dino_walls.dart @@ -1,12 +1,35 @@ -// ignore_for_file: avoid_renaming_method_parameters +import 'dart:async'; +import 'dart:math'; import 'package:flame/components.dart'; import 'package:flame_forge2d/flame_forge2d.dart'; -import 'package:pinball/gen/assets.gen.dart'; +import 'package:pinball_components/gen/assets.gen.dart'; import 'package:pinball_components/pinball_components.dart' hide Assets; +/// {@template spaceship} +/// A [Blueprint] which creates the spaceship feature. +/// {@endtemplate} +class DinoWalls extends Forge2DBlueprint { + /// {@macro spaceship} + DinoWalls({required this.position}); + + /// Total size of the spaceship. + static final size = Vector2(25, 19); + + /// The [position] where the elements will be created + final Vector2 position; + + @override + void build(_) { + addAll([ + DinoTopWall()..initialPosition = position, + DinoBottomWall()..initialPosition = position, + ]); + } +} + /// {@template dino_top_wall} -/// Wall located above dino, at the right of the board. +/// Wall segment located above [ChromeDino]. /// {@endtemplate} class DinoTopWall extends BodyComponent with InitialPosition { ///{@macro dino_top_wall} @@ -96,25 +119,26 @@ class DinoTopWall extends BodyComponent with InitialPosition { @override Future onLoad() async { await super.onLoad(); - await _loadBackground(); + await _loadSprite(); } - Future _loadBackground() async { + Future _loadSprite() async { final sprite = await gameRef.loadSprite( - Assets.images.components.dinoLandTop.path, + Assets.images.dino.dinoLandTop.keyName, ); final spriteComponent = SpriteComponent( sprite: sprite, size: Vector2(10.6, 27.7), anchor: Anchor.center, - )..position = Vector2(27, -28.2); + position: Vector2(27, -28.2), + ); await add(spriteComponent); } } /// {@template dino_bottom_wall} -/// Wall located below dino, at the right of the board. +/// Wall segment located below [ChromeDino]. /// {@endtemplate} class DinoBottomWall extends BodyComponent with InitialPosition { ///{@macro dino_top_wall} @@ -196,12 +220,12 @@ class DinoBottomWall extends BodyComponent with InitialPosition { @override Future onLoad() async { await super.onLoad(); - await _loadBackground(); + await _loadSprite(); } - Future _loadBackground() async { + Future _loadSprite() async { final sprite = await gameRef.loadSprite( - Assets.images.components.dinoLandBottom.path, + Assets.images.dino.dinoLandBottom.keyName, ); final spriteComponent = SpriteComponent( sprite: sprite, diff --git a/packages/pinball_components/pubspec.yaml b/packages/pinball_components/pubspec.yaml index c0eab284..d1f138d9 100644 --- a/packages/pinball_components/pubspec.yaml +++ b/packages/pinball_components/pubspec.yaml @@ -27,6 +27,7 @@ flutter: assets: - assets/images/ - assets/images/baseboard/ + - assets/images/dino/ - assets/images/flipper/ flutter_gen: diff --git a/test/game/components/dino_wall_test.dart b/packages/pinball_components/test/src/components/dino_walls_test.dart similarity index 95% rename from test/game/components/dino_wall_test.dart rename to packages/pinball_components/test/src/components/dino_walls_test.dart index 0fa68680..35f7706f 100644 --- a/test/game/components/dino_wall_test.dart +++ b/packages/pinball_components/test/src/components/dino_walls_test.dart @@ -1,7 +1,7 @@ import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_test/flame_test.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:pinball/game/components/components.dart'; +import 'package:pinball_components/pinball_components.dart'; import '../../helpers/helpers.dart';