From 8a9c269b60e9f9e41bd026e69d1a0359e77e9c16 Mon Sep 17 00:00:00 2001 From: Alejandro Santiago Date: Fri, 22 Apr 2022 04:34:36 +0100 Subject: [PATCH] feat: include `blueprints` getter (#220) --- packages/pinball_flame/lib/src/blueprint.dart | 6 ++++++ packages/pinball_flame/test/src/blueprint_test.dart | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/packages/pinball_flame/lib/src/blueprint.dart b/packages/pinball_flame/lib/src/blueprint.dart index cc1d31ae..de9c8b2c 100644 --- a/packages/pinball_flame/lib/src/blueprint.dart +++ b/packages/pinball_flame/lib/src/blueprint.dart @@ -18,6 +18,7 @@ class Blueprint extends Component { }) { if (components != null) _components.addAll(components); if (blueprints != null) { + _blueprints.addAll(blueprints); for (final blueprint in blueprints) { _components.addAll(blueprint.components); } @@ -26,12 +27,17 @@ class Blueprint extends Component { final List _components = []; + final List _blueprints = []; + Future _addToParent(Component parent) async { await parent.addAll(_components); } /// Returns a copy of the components built by this blueprint. List get components => List.unmodifiable(_components); + + /// Returns a copy of the blueprints built by this blueprint. + List get blueprints => List.unmodifiable(_blueprints); } /// Adds helper methods regarding [Blueprint]s to [FlameGame]. diff --git a/packages/pinball_flame/test/src/blueprint_test.dart b/packages/pinball_flame/test/src/blueprint_test.dart index 7ab25125..402d5059 100644 --- a/packages/pinball_flame/test/src/blueprint_test.dart +++ b/packages/pinball_flame/test/src/blueprint_test.dart @@ -27,6 +27,18 @@ void main() { expect(blueprint.components, contains(component2)); }); + test('correctly sets and gets blueprints', () { + final blueprint2 = Blueprint( + components: [Component()], + ); + final blueprint1 = Blueprint( + components: [Component()], + blueprints: [blueprint2], + ); + + expect(blueprint1.blueprints, contains(blueprint2)); + }); + flameTester.test('adds the components to parent on attach', (game) async { final blueprint = Blueprint( components: [