From f031359439b8a8ebccca6bd1cea3b485ff501635 Mon Sep 17 00:00:00 2001 From: Allison Ryan Date: Tue, 29 Mar 2022 10:48:04 -0500 Subject: [PATCH] refactor: move to components package --- lib/game/components/board.dart | 1 + lib/game/components/components.dart | 2 -- lib/game/game_assets.dart | 4 +-- lib/gen/assets.gen.dart | 15 ---------- .../assets/images/baseboard/left.png | Bin .../assets/images/baseboard/right.png | Bin .../lib/gen/assets.gen.dart | 10 +++++++ .../lib/src}/components/baseboard.dart | 12 ++++---- .../lib/src}/components/board_side.dart | 4 ++- .../lib/src/components/components.dart | 2 ++ packages/pinball_components/pubspec.yaml | 2 ++ .../pinball_components/sandbox/lib/main.dart | 2 +- .../lib/stories/baseboard/baseboard.dart | 15 ++++++++++ .../sandbox/lib/stories/baseboard/basic.dart | 26 ++++++++++++++++++ .../sandbox/lib/stories/stories.dart | 2 ++ .../test/src}/components/baseboard_test.dart | 12 +++++--- .../test/src}/components/board_side_test.dart | 2 +- pubspec.yaml | 1 - test/game/components/board_test.dart | 1 + test/game/components/kicker_test.dart | 1 + 20 files changed, 82 insertions(+), 32 deletions(-) rename assets/images/components/baseboards/left-baseboard.png => packages/pinball_components/assets/images/baseboard/left.png (100%) rename assets/images/components/baseboards/right-baseboard.png => packages/pinball_components/assets/images/baseboard/right.png (100%) rename {lib/game => packages/pinball_components/lib/src}/components/baseboard.dart (91%) rename {lib/game => packages/pinball_components/lib/src}/components/board_side.dart (83%) create mode 100644 packages/pinball_components/sandbox/lib/stories/baseboard/baseboard.dart create mode 100644 packages/pinball_components/sandbox/lib/stories/baseboard/basic.dart rename {test/game => packages/pinball_components/test/src}/components/baseboard_test.dart (86%) rename {test/game => packages/pinball_components/test/src}/components/board_side_test.dart (92%) diff --git a/lib/game/components/board.dart b/lib/game/components/board.dart index cc4f1edd..872c8373 100644 --- a/lib/game/components/board.dart +++ b/lib/game/components/board.dart @@ -1,5 +1,6 @@ import 'package:flame/components.dart'; import 'package:pinball/game/game.dart'; +import 'package:pinball_components/pinball_components.dart'; /// {@template board} /// The main flat surface of the [PinballGame]. diff --git a/lib/game/components/components.dart b/lib/game/components/components.dart index 7c3347a6..33247083 100644 --- a/lib/game/components/components.dart +++ b/lib/game/components/components.dart @@ -1,7 +1,5 @@ export 'ball.dart'; -export 'baseboard.dart'; export 'board.dart'; -export 'board_side.dart'; export 'bonus_word.dart'; export 'chrome_dino.dart'; export 'flipper.dart'; diff --git a/lib/game/game_assets.dart b/lib/game/game_assets.dart index 3ef9f9d3..0ac2ddca 100644 --- a/lib/game/game_assets.dart +++ b/lib/game/game_assets.dart @@ -10,8 +10,8 @@ extension PinballGameAssetsX on PinballGame { images.load(components.Assets.images.ball.keyName), images.load(Assets.images.components.flipper.path), images.load(Assets.images.components.background.path), - images.load(Assets.images.components.baseboards.leftBaseboard.path), - images.load(Assets.images.components.baseboards.rightBaseboard.path), + images.load(components.Assets.images.baseboard.left.keyName), + images.load(components.Assets.images.baseboard.right.keyName), images.load(Assets.images.components.spaceship.androidTop.path), images.load(Assets.images.components.spaceship.androidBottom.path), images.load(Assets.images.components.spaceship.lower.path), diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart index 62c591d1..8c228e16 100644 --- a/lib/gen/assets.gen.dart +++ b/lib/gen/assets.gen.dart @@ -21,9 +21,6 @@ class $AssetsImagesComponentsGen { AssetGenImage get background => const AssetGenImage('assets/images/components/background.png'); - $AssetsImagesComponentsBaseboardsGen get baseboards => - const $AssetsImagesComponentsBaseboardsGen(); - /// File path: assets/images/components/flipper.png AssetGenImage get flipper => const AssetGenImage('assets/images/components/flipper.png'); @@ -32,18 +29,6 @@ class $AssetsImagesComponentsGen { const $AssetsImagesComponentsSpaceshipGen(); } -class $AssetsImagesComponentsBaseboardsGen { - const $AssetsImagesComponentsBaseboardsGen(); - - /// File path: assets/images/components/baseboards/left-baseboard.png - AssetGenImage get leftBaseboard => const AssetGenImage( - 'assets/images/components/baseboards/left-baseboard.png'); - - /// File path: assets/images/components/baseboards/right-baseboard.png - AssetGenImage get rightBaseboard => const AssetGenImage( - 'assets/images/components/baseboards/right-baseboard.png'); -} - class $AssetsImagesComponentsSpaceshipGen { const $AssetsImagesComponentsSpaceshipGen(); diff --git a/assets/images/components/baseboards/left-baseboard.png b/packages/pinball_components/assets/images/baseboard/left.png similarity index 100% rename from assets/images/components/baseboards/left-baseboard.png rename to packages/pinball_components/assets/images/baseboard/left.png diff --git a/assets/images/components/baseboards/right-baseboard.png b/packages/pinball_components/assets/images/baseboard/right.png similarity index 100% rename from assets/images/components/baseboards/right-baseboard.png rename to packages/pinball_components/assets/images/baseboard/right.png diff --git a/packages/pinball_components/lib/gen/assets.gen.dart b/packages/pinball_components/lib/gen/assets.gen.dart index c4ed6ca0..7ad1fd08 100644 --- a/packages/pinball_components/lib/gen/assets.gen.dart +++ b/packages/pinball_components/lib/gen/assets.gen.dart @@ -9,6 +9,16 @@ class $AssetsImagesGen { const $AssetsImagesGen(); AssetGenImage get ball => const AssetGenImage('assets/images/ball.png'); + $AssetsImagesBaseboardGen get baseboard => const $AssetsImagesBaseboardGen(); +} + +class $AssetsImagesBaseboardGen { + const $AssetsImagesBaseboardGen(); + + AssetGenImage get left => + const AssetGenImage('assets/images/baseboard/left.png'); + AssetGenImage get right => + const AssetGenImage('assets/images/baseboard/right.png'); } class Assets { diff --git a/lib/game/components/baseboard.dart b/packages/pinball_components/lib/src/components/baseboard.dart similarity index 91% rename from lib/game/components/baseboard.dart rename to packages/pinball_components/lib/src/components/baseboard.dart index 70b5deed..cbfd30a1 100644 --- a/lib/game/components/baseboard.dart +++ b/packages/pinball_components/lib/src/components/baseboard.dart @@ -2,9 +2,11 @@ import 'dart:math' as math; import 'package:flame/components.dart'; import 'package:flame_forge2d/flame_forge2d.dart'; -import 'package:pinball/game/game.dart'; -import 'package:pinball/gen/assets.gen.dart'; -import 'package:pinball_components/pinball_components.dart' hide Assets; +import 'package:pinball_components/pinball_components.dart'; + +// ignore_for_file: comment_references +// TODO(allisonryan0002): Revisit ignore lint rule once Flipper is moved to this +// package. /// {@template baseboard} /// Wing-shaped board piece to corral the [Ball] towards the [Flipper]s. @@ -90,8 +92,8 @@ class Baseboard extends BodyComponent with InitialPosition { final sprite = await gameRef.loadSprite( (_side.isLeft) - ? Assets.images.components.baseboards.leftBaseboard.path - : Assets.images.components.baseboards.rightBaseboard.path, + ? Assets.images.baseboard.left.keyName + : Assets.images.baseboard.right.keyName, ); await add( diff --git a/lib/game/components/board_side.dart b/packages/pinball_components/lib/src/components/board_side.dart similarity index 83% rename from lib/game/components/board_side.dart rename to packages/pinball_components/lib/src/components/board_side.dart index 2ef8d651..d395f287 100644 --- a/lib/game/components/board_side.dart +++ b/packages/pinball_components/lib/src/components/board_side.dart @@ -1,4 +1,6 @@ -import 'package:pinball/game/game.dart'; +// ignore_for_file: comment_references +// TODO(allisonryan0002): Revisit ignore lint rule once Kicker is moved to this +// package. /// Indicates a side of the board. /// diff --git a/packages/pinball_components/lib/src/components/components.dart b/packages/pinball_components/lib/src/components/components.dart index a55f9566..541e44da 100644 --- a/packages/pinball_components/lib/src/components/components.dart +++ b/packages/pinball_components/lib/src/components/components.dart @@ -1,4 +1,6 @@ export 'ball.dart'; +export 'baseboard.dart'; +export 'board_side.dart'; export 'fire_effect.dart'; export 'initial_position.dart'; export 'layer.dart'; diff --git a/packages/pinball_components/pubspec.yaml b/packages/pinball_components/pubspec.yaml index 1c8dfbe3..9ec4ee80 100644 --- a/packages/pinball_components/pubspec.yaml +++ b/packages/pinball_components/pubspec.yaml @@ -26,6 +26,8 @@ flutter: generate: true assets: - assets/images/ + - assets/images/baseboard/ + flutter_gen: line_length: 80 diff --git a/packages/pinball_components/sandbox/lib/main.dart b/packages/pinball_components/sandbox/lib/main.dart index 44b594d7..d2089630 100644 --- a/packages/pinball_components/sandbox/lib/main.dart +++ b/packages/pinball_components/sandbox/lib/main.dart @@ -6,7 +6,6 @@ // https://opensource.org/licenses/MIT. import 'package:dashbook/dashbook.dart'; import 'package:flutter/material.dart'; -import 'package:sandbox/stories/effects/effects.dart'; import 'package:sandbox/stories/stories.dart'; void main() { @@ -15,5 +14,6 @@ void main() { addBallStories(dashbook); addLayerStories(dashbook); addEffectsStories(dashbook); + addBaseboardStories(dashbook); runApp(dashbook); } diff --git a/packages/pinball_components/sandbox/lib/stories/baseboard/baseboard.dart b/packages/pinball_components/sandbox/lib/stories/baseboard/baseboard.dart new file mode 100644 index 00000000..96d89928 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/baseboard/baseboard.dart @@ -0,0 +1,15 @@ +import 'package:dashbook/dashbook.dart'; +import 'package:flame/game.dart'; +import 'package:sandbox/common/common.dart'; +import 'package:sandbox/stories/baseboard/basic.dart'; + +void addBaseboardStories(Dashbook dashbook) { + dashbook.storiesOf('Baseboard').add( + 'Basic', + (context) => GameWidget( + game: BasicBaseboardGame(), + ), + codeLink: buildSourceLink('baseboard/basic.dart'), + info: BasicBaseboardGame.info, + ); +} diff --git a/packages/pinball_components/sandbox/lib/stories/baseboard/basic.dart b/packages/pinball_components/sandbox/lib/stories/baseboard/basic.dart new file mode 100644 index 00000000..ea10da2c --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/baseboard/basic.dart @@ -0,0 +1,26 @@ +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:sandbox/common/common.dart'; + +class BasicBaseboardGame extends BasicGame { + static const info = ''' + Basic example of how a Baseboard works. +'''; + + @override + Future onLoad() async { + await super.onLoad(); + + final center = screenToWorld(camera.viewport.canvasSize! / 2); + + final leftBaseboard = Baseboard(side: BoardSide.left) + ..initialPosition = center - Vector2(Baseboard.size.x, 0); + final rightBaseboard = Baseboard(side: BoardSide.right) + ..initialPosition = center + Vector2(Baseboard.size.x, 0); + + await addAll([ + leftBaseboard, + rightBaseboard, + ]); + } +} diff --git a/packages/pinball_components/sandbox/lib/stories/stories.dart b/packages/pinball_components/sandbox/lib/stories/stories.dart index 1135fbaf..2fbf26f5 100644 --- a/packages/pinball_components/sandbox/lib/stories/stories.dart +++ b/packages/pinball_components/sandbox/lib/stories/stories.dart @@ -1,2 +1,4 @@ export 'ball/ball.dart'; +export 'baseboard/baseboard.dart'; +export 'effects/effects.dart'; export 'layer/layer.dart'; diff --git a/test/game/components/baseboard_test.dart b/packages/pinball_components/test/src/components/baseboard_test.dart similarity index 86% rename from test/game/components/baseboard_test.dart rename to packages/pinball_components/test/src/components/baseboard_test.dart index f834a41e..b1ce58e2 100644 --- a/test/game/components/baseboard_test.dart +++ b/packages/pinball_components/test/src/components/baseboard_test.dart @@ -3,12 +3,16 @@ 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/game.dart'; +import 'package:pinball_components/pinball_components.dart'; + +import '../../helpers/helpers.dart'; void main() { group('Baseboard', () { + // TODO(allisonryan0002): Add golden tests. + TestWidgetsFlutterBinding.ensureInitialized(); - final flameTester = FlameTester(Forge2DGame.new); + final flameTester = FlameTester(TestGame.new); flameTester.test( 'loads correctly', @@ -61,14 +65,14 @@ void main() { group('fixtures', () { flameTester.test( - 'has six', + 'has seven', (game) async { final baseboard = Baseboard( side: BoardSide.left, ); await game.ensureAdd(baseboard); - expect(baseboard.body.fixtures.length, equals(6)); + expect(baseboard.body.fixtures.length, equals(7)); }, ); }); diff --git a/test/game/components/board_side_test.dart b/packages/pinball_components/test/src/components/board_side_test.dart similarity index 92% rename from test/game/components/board_side_test.dart rename to packages/pinball_components/test/src/components/board_side_test.dart index ba201065..7c17828d 100644 --- a/test/game/components/board_side_test.dart +++ b/packages/pinball_components/test/src/components/board_side_test.dart @@ -1,5 +1,5 @@ import 'package:flutter_test/flutter_test.dart'; -import 'package:pinball/game/game.dart'; +import 'package:pinball_components/pinball_components.dart'; void main() { group( diff --git a/pubspec.yaml b/pubspec.yaml index b37e296e..1efe9281 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,7 +43,6 @@ flutter: assets: - assets/images/components/ - - assets/images/components/baseboards/ - assets/images/components/spaceship/ flutter_gen: diff --git a/test/game/components/board_test.dart b/test/game/components/board_test.dart index f6304cec..7b74d0da 100644 --- a/test/game/components/board_test.dart +++ b/test/game/components/board_test.dart @@ -3,6 +3,7 @@ import 'package:flame_test/flame_test.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:pinball/game/game.dart'; +import 'package:pinball_components/pinball_components.dart'; import '../../helpers/helpers.dart'; diff --git a/test/game/components/kicker_test.dart b/test/game/components/kicker_test.dart index 211ff8ad..333c7fbe 100644 --- a/test/game/components/kicker_test.dart +++ b/test/game/components/kicker_test.dart @@ -4,6 +4,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/game.dart'; +import 'package:pinball_components/pinball_components.dart'; void main() { group('Kicker', () {