From fbf880ecd2f47dba8c34217464de68694199d2f5 Mon Sep 17 00:00:00 2001 From: Allison Ryan Date: Tue, 26 Apr 2022 10:32:58 -0500 Subject: [PATCH] refactor: bottom group blueprint --- lib/game/components/bottom_group.dart | 26 ++++++------- lib/game/pinball_game.dart | 2 +- test/game/components/bottom_group_test.dart | 43 ++++++++++----------- 3 files changed, 32 insertions(+), 39 deletions(-) diff --git a/lib/game/components/bottom_group.dart b/lib/game/components/bottom_group.dart index 2abf4d88..f50e022a 100644 --- a/lib/game/components/bottom_group.dart +++ b/lib/game/components/bottom_group.dart @@ -1,6 +1,7 @@ import 'package:flame/components.dart'; import 'package:pinball/game/game.dart'; import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_flame/pinball_flame.dart'; /// {@template bottom_group} /// Grouping of the board's symmetrical bottom [Component]s. @@ -8,21 +9,15 @@ import 'package:pinball_components/pinball_components.dart'; /// The [BottomGroup] consists of [Flipper]s, [Baseboard]s and [Kicker]s. /// {@endtemplate} // TODO(allisonryan0002): Consider renaming. -class BottomGroup extends Component { +class BottomGroup extends Blueprint { /// {@macro bottom_group} - BottomGroup() : super(priority: RenderPriority.bottomGroup); - - @override - Future onLoad() async { - final rightSide = _BottomGroupSide( - side: BoardSide.right, - ); - final leftSide = _BottomGroupSide( - side: BoardSide.left, - ); - - await addAll([rightSide, leftSide]); - } + BottomGroup() + : super( + components: [ + _BottomGroupSide(side: BoardSide.right), + _BottomGroupSide(side: BoardSide.left), + ], + ); } /// {@template bottom_group_side} @@ -34,7 +29,8 @@ class _BottomGroupSide extends Component { /// {@macro bottom_group_side} _BottomGroupSide({ required BoardSide side, - }) : _side = side; + }) : _side = side, + super(priority: RenderPriority.bottomGroup); final BoardSide _side; diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index 0bc23371..de95d264 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -47,7 +47,7 @@ class PinballGame extends Forge2DGame unawaited(add(CameraController(this))); unawaited(add(Backboard.waiting(position: Vector2(0, -88)))); await add(Drain()); - await add(BottomGroup()); + await addFromBlueprint(BottomGroup()); unawaited(addFromBlueprint(Boundaries())); unawaited(addFromBlueprint(LaunchRamp())); diff --git a/test/game/components/bottom_group_test.dart b/test/game/components/bottom_group_test.dart index 4cc7d7e6..378166b7 100644 --- a/test/game/components/bottom_group_test.dart +++ b/test/game/components/bottom_group_test.dart @@ -4,6 +4,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 'package:pinball_flame/pinball_flame.dart'; import '../../helpers/helpers.dart'; @@ -21,10 +22,8 @@ void main() { flameTester.test( 'loads correctly', (game) async { - final bottomGroup = BottomGroup(); - await game.ensureAdd(bottomGroup); - - expect(game.contains(bottomGroup), isTrue); + await game.addFromBlueprint(BottomGroup()); + await game.ready(); }, ); @@ -32,13 +31,12 @@ void main() { flameTester.test( 'one left flipper', (game) async { - final bottomGroup = BottomGroup(); - await game.ensureAdd(bottomGroup); + await game.addFromBlueprint(BottomGroup()); + await game.ready(); - final leftFlippers = - bottomGroup.descendants().whereType().where( - (flipper) => flipper.side.isLeft, - ); + final leftFlippers = game.descendants().whereType().where( + (flipper) => flipper.side.isLeft, + ); expect(leftFlippers.length, equals(1)); }, ); @@ -46,12 +44,12 @@ void main() { flameTester.test( 'one right flipper', (game) async { - final bottomGroup = BottomGroup(); - await game.ensureAdd(bottomGroup); - final rightFlippers = - bottomGroup.descendants().whereType().where( - (flipper) => flipper.side.isRight, - ); + await game.addFromBlueprint(BottomGroup()); + await game.ready(); + + final rightFlippers = game.descendants().whereType().where( + (flipper) => flipper.side.isRight, + ); expect(rightFlippers.length, equals(1)); }, ); @@ -59,11 +57,10 @@ void main() { flameTester.test( 'two Baseboards', (game) async { - final bottomGroup = BottomGroup(); - await game.ensureAdd(bottomGroup); + await game.addFromBlueprint(BottomGroup()); + await game.ready(); - final basebottomGroups = - bottomGroup.descendants().whereType(); + final basebottomGroups = game.descendants().whereType(); expect(basebottomGroups.length, equals(2)); }, ); @@ -71,10 +68,10 @@ void main() { flameTester.test( 'two Kickers', (game) async { - final bottomGroup = BottomGroup(); - await game.ensureAdd(bottomGroup); + await game.addFromBlueprint(BottomGroup()); + await game.ready(); - final kickers = bottomGroup.descendants().whereType(); + final kickers = game.descendants().whereType(); expect(kickers.length, equals(2)); }, );