diff --git a/lib/game/components/android_acres.dart b/lib/game/components/android_acres.dart index 752f68f9..4a235619 100644 --- a/lib/game/components/android_acres.dart +++ b/lib/game/components/android_acres.dart @@ -16,12 +16,12 @@ class AndroidAcres extends Blueprint { components: [ AndroidBumper.a( children: [ - ScoringBehavior(points: 20), + ScoringBehavior(points: 20000), ], )..initialPosition = Vector2(-32.52, -9.1), AndroidBumper.b( children: [ - ScoringBehavior(points: 20), + ScoringBehavior(points: 20000), ], )..initialPosition = Vector2(-22.89, -17.35), ], diff --git a/lib/game/components/bottom_group.dart b/lib/game/components/bottom_group.dart index d0184d33..5d0cf97e 100644 --- a/lib/game/components/bottom_group.dart +++ b/lib/game/components/bottom_group.dart @@ -48,6 +48,9 @@ class _BottomGroupSide extends Component { ); final kicker = Kicker( side: _side, + children: [ + ScoringBehavior(points: 5000), + ], )..initialPosition = Vector2( (22.4 * direction) + centerXAdjustment, 25, diff --git a/lib/game/components/flutter_forest/flutter_forest.dart b/lib/game/components/flutter_forest/flutter_forest.dart index d7447543..7508d5c3 100644 --- a/lib/game/components/flutter_forest/flutter_forest.dart +++ b/lib/game/components/flutter_forest/flutter_forest.dart @@ -23,17 +23,17 @@ class FlutterForest extends Component { )..initialPosition = Vector2(8.35, -58.3), DashNestBumper.main( children: [ - ScoringBehavior(points: 20), + ScoringBehavior(points: 200000), ], )..initialPosition = Vector2(18.55, -59.35), DashNestBumper.a( children: [ - ScoringBehavior(points: 20), + ScoringBehavior(points: 20000), ], )..initialPosition = Vector2(8.95, -51.95), DashNestBumper.b( children: [ - ScoringBehavior(points: 20), + ScoringBehavior(points: 20000), ], )..initialPosition = Vector2(23.3, -46.75), DashAnimatronic()..position = Vector2(20, -66), diff --git a/lib/game/components/google_word/google_word.dart b/lib/game/components/google_word/google_word.dart index 9a9faa9a..63999fe1 100644 --- a/lib/game/components/google_word/google_word.dart +++ b/lib/game/components/google_word/google_word.dart @@ -1,6 +1,7 @@ import 'package:flame/components.dart'; import 'package:flutter/material.dart'; import 'package:pinball/game/components/google_word/behaviors/behaviors.dart'; +import 'package:pinball/game/game.dart'; import 'package:pinball_components/pinball_components.dart'; /// {@template google_word} @@ -12,12 +13,30 @@ class GoogleWord extends Component { required Vector2 position, }) : super( children: [ - GoogleLetter(0)..initialPosition = position + Vector2(-12.92, 1.82), - GoogleLetter(1)..initialPosition = position + Vector2(-8.33, -0.65), - GoogleLetter(2)..initialPosition = position + Vector2(-2.88, -1.75), - GoogleLetter(3)..initialPosition = position + Vector2(2.88, -1.75), - GoogleLetter(4)..initialPosition = position + Vector2(8.33, -0.65), - GoogleLetter(5)..initialPosition = position + Vector2(12.92, 1.82), + GoogleLetter( + 0, + children: [ScoringBehavior(points: 5000)], + )..initialPosition = position + Vector2(-12.92, 1.82), + GoogleLetter( + 1, + children: [ScoringBehavior(points: 5000)], + )..initialPosition = position + Vector2(-8.33, -0.65), + GoogleLetter( + 2, + children: [ScoringBehavior(points: 5000)], + )..initialPosition = position + Vector2(-2.88, -1.75), + GoogleLetter( + 3, + children: [ScoringBehavior(points: 5000)], + )..initialPosition = position + Vector2(2.88, -1.75), + GoogleLetter( + 4, + children: [ScoringBehavior(points: 5000)], + )..initialPosition = position + Vector2(8.33, -0.65), + GoogleLetter( + 5, + children: [ScoringBehavior(points: 5000)], + )..initialPosition = position + Vector2(12.92, 1.82), GoogleWordBonusBehavior(), ], ); diff --git a/lib/game/components/sparky_fire_zone.dart b/lib/game/components/sparky_fire_zone.dart index 5c00e5c9..a37c2469 100644 --- a/lib/game/components/sparky_fire_zone.dart +++ b/lib/game/components/sparky_fire_zone.dart @@ -18,17 +18,17 @@ class SparkyFireZone extends Blueprint { components: [ SparkyBumper.a( children: [ - ScoringBehavior(points: 20), + ScoringBehavior(points: 20000), ], )..initialPosition = Vector2(-22.9, -41.65), SparkyBumper.b( children: [ - ScoringBehavior(points: 20), + ScoringBehavior(points: 20000), ], )..initialPosition = Vector2(-21.25, -57.9), SparkyBumper.c( children: [ - ScoringBehavior(points: 20), + ScoringBehavior(points: 20000), ], )..initialPosition = Vector2(-3.3, -52.55), SparkyComputerSensor()..initialPosition = Vector2(-13, -49.8), @@ -47,7 +47,13 @@ class SparkyFireZone extends Blueprint { class SparkyComputerSensor extends BodyComponent with InitialPosition, ContactCallbacks { /// {@macro sparky_computer_sensor} - SparkyComputerSensor() : super(renderBody: false); + SparkyComputerSensor() + : super( + renderBody: false, + children: [ + ScoringBehavior(points: 200000), + ], + ); @override Body createBody() { diff --git a/packages/pinball_components/lib/src/components/google_letter/google_letter.dart b/packages/pinball_components/lib/src/components/google_letter/google_letter.dart index 63207e01..a865acf8 100644 --- a/packages/pinball_components/lib/src/components/google_letter/google_letter.dart +++ b/packages/pinball_components/lib/src/components/google_letter/google_letter.dart @@ -13,12 +13,14 @@ export 'cubit/google_letter_cubit.dart'; class GoogleLetter extends BodyComponent with InitialPosition { /// {@macro google_letter} GoogleLetter( - int index, - ) : bloc = GoogleLetterCubit(), + int index, { + Iterable? children, + }) : bloc = GoogleLetterCubit(), super( children: [ GoogleLetterBallContactBehavior(), - _GoogleLetterSprite(_GoogleLetterSprite.spritePaths[index]) + _GoogleLetterSprite(_GoogleLetterSprite.spritePaths[index]), + ...?children, ], ); diff --git a/packages/pinball_components/lib/src/components/kicker.dart b/packages/pinball_components/lib/src/components/kicker.dart index 12cd638d..527ffde4 100644 --- a/packages/pinball_components/lib/src/components/kicker.dart +++ b/packages/pinball_components/lib/src/components/kicker.dart @@ -16,9 +16,13 @@ class Kicker extends BodyComponent with InitialPosition { /// {@macro kicker} Kicker({ required BoardSide side, + Iterable? children, }) : _side = side, super( - children: [_KickerSpriteComponent(side: side)], + children: [ + _KickerSpriteComponent(side: side), + ...?children, + ], renderBody: false, ); diff --git a/packages/pinball_components/test/src/components/google_letter/google_letter_test.dart b/packages/pinball_components/test/src/components/google_letter/google_letter_test.dart index 624168b9..7ad0e64b 100644 --- a/packages/pinball_components/test/src/components/google_letter/google_letter_test.dart +++ b/packages/pinball_components/test/src/components/google_letter/google_letter_test.dart @@ -1,6 +1,7 @@ // ignore_for_file: cascade_invocations import 'package:bloc_test/bloc_test.dart'; +import 'package:flame/components.dart'; import 'package:flame_test/flame_test.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; @@ -80,6 +81,16 @@ void main() { }, ); + flameTester.test('adds new children', (game) async { + final component = Component(); + final googleLetter = GoogleLetter( + 1, + children: [component], + ); + await game.ensureAdd(googleLetter); + expect(googleLetter.children, contains(component)); + }); + test('throws error when index out of range', () { expect(() => GoogleLetter(-1), throwsA(isA())); expect(() => GoogleLetter(6), throwsA(isA())); diff --git a/packages/pinball_components/test/src/components/kicker_test.dart b/packages/pinball_components/test/src/components/kicker_test.dart index 8c48a1fb..aebf9380 100644 --- a/packages/pinball_components/test/src/components/kicker_test.dart +++ b/packages/pinball_components/test/src/components/kicker_test.dart @@ -1,5 +1,6 @@ // ignore_for_file: cascade_invocations +import 'package:flame/components.dart'; import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_test/flame_test.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -44,6 +45,16 @@ void main() { }, ); + flameTester.test('adds new children', (game) async { + final component = Component(); + final kicker = Kicker( + side: BoardSide.left, + children: [component], + ); + await game.ensureAdd(kicker); + expect(kicker.children, contains(component)); + }); + flameTester.test( 'body is static', (game) async {