From f3568a6380d8d4617f88efcd4fcb2ba85d53a019 Mon Sep 17 00:00:00 2001 From: alestiago Date: Fri, 22 Apr 2022 04:25:00 +0100 Subject: [PATCH] feat: included blueprints getter --- packages/pinball_flame/lib/src/blueprint.dart | 7 +++++++ packages/pinball_flame/test/src/blueprint_test.dart | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/packages/pinball_flame/lib/src/blueprint.dart b/packages/pinball_flame/lib/src/blueprint.dart index cc1d31ae..b856231a 100644 --- a/packages/pinball_flame/lib/src/blueprint.dart +++ b/packages/pinball_flame/lib/src/blueprint.dart @@ -1,5 +1,6 @@ import 'package:flame/components.dart'; import 'package:flame/game.dart'; +import 'package:flutter/material.dart'; // TODO(erickzanardo): Keeping this inside our code base // so we can experiment with the idea, but this is a @@ -18,6 +19,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 +28,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: [