From 92b83dc892f2848f344b9550055ae6d8c49178b1 Mon Sep 17 00:00:00 2001 From: Allison Ryan <77211884+allisonryan0002@users.noreply.github.com> Date: Sun, 1 May 2022 20:15:18 -0500 Subject: [PATCH] feat: implement blinking `Kicker` assets (#283) * refactor: simplified Fixtures creation * feat: add blinking assets * test: blinking and asset updates * docs: clean kicker docs * refactor: adjusted Kicker constructor * refactor: moved Mock Co-authored-by: alestiago --- lib/game/components/bottom_group.dart | 10 +- lib/game/game_assets.dart | 6 +- .../assets/images/kicker/left.png | Bin 14253 -> 0 bytes .../assets/images/kicker/left/dimmed.png | Bin 0 -> 16758 bytes .../assets/images/kicker/left/lit.png | Bin 0 -> 17115 bytes .../assets/images/kicker/right.png | Bin 13917 -> 0 bytes .../assets/images/kicker/right/dimmed.png | Bin 0 -> 16776 bytes .../assets/images/kicker/right/lit.png | Bin 0 -> 17139 bytes .../lib/gen/assets.gen.dart | 33 ++++- .../lib/src/components/components.dart | 2 +- .../kicker/behaviors/behaviors.dart | 2 + .../kicker_ball_contact_behavior.dart | 14 ++ .../behaviors/kicker_blinking_behavior.dart | 37 ++++++ .../components/kicker/cubit/kicker_cubit.dart | 17 +++ .../components/kicker/cubit/kicker_state.dart | 8 ++ .../src/components/{ => kicker}/kicker.dart | 121 +++++++++++++----- packages/pinball_components/pubspec.yaml | 3 +- .../lib/stories/bottom_group/kicker_game.dart | 14 +- .../lib/stories/plunger/plunger_game.dart | 2 +- .../test/src/components/golden/kickers.png | Bin 60136 -> 71945 bytes .../kicker_ball_contact_behavior_test.dart | 53 ++++++++ .../kicker_blinking_behavior_test.dart | 50 ++++++++ .../kicker/cubit/kicker_cubit_test.dart | 24 ++++ .../test/src/components/kicker_test.dart | 100 ++++++++++----- test/game/components/bottom_group_test.dart | 4 + test/game/pinball_game_test.dart | 6 +- 26 files changed, 415 insertions(+), 91 deletions(-) delete mode 100644 packages/pinball_components/assets/images/kicker/left.png create mode 100644 packages/pinball_components/assets/images/kicker/left/dimmed.png create mode 100644 packages/pinball_components/assets/images/kicker/left/lit.png delete mode 100644 packages/pinball_components/assets/images/kicker/right.png create mode 100644 packages/pinball_components/assets/images/kicker/right/dimmed.png create mode 100644 packages/pinball_components/assets/images/kicker/right/lit.png create mode 100644 packages/pinball_components/lib/src/components/kicker/behaviors/behaviors.dart create mode 100644 packages/pinball_components/lib/src/components/kicker/behaviors/kicker_ball_contact_behavior.dart create mode 100644 packages/pinball_components/lib/src/components/kicker/behaviors/kicker_blinking_behavior.dart create mode 100644 packages/pinball_components/lib/src/components/kicker/cubit/kicker_cubit.dart create mode 100644 packages/pinball_components/lib/src/components/kicker/cubit/kicker_state.dart rename packages/pinball_components/lib/src/components/{ => kicker}/kicker.dart (55%) create mode 100644 packages/pinball_components/test/src/components/kicker/behaviors/kicker_ball_contact_behavior_test.dart create mode 100644 packages/pinball_components/test/src/components/kicker/behaviors/kicker_blinking_behavior_test.dart create mode 100644 packages/pinball_components/test/src/components/kicker/cubit/kicker_cubit_test.dart diff --git a/lib/game/components/bottom_group.dart b/lib/game/components/bottom_group.dart index bc5f473c..b4a888f4 100644 --- a/lib/game/components/bottom_group.dart +++ b/lib/game/components/bottom_group.dart @@ -38,7 +38,7 @@ class _BottomGroupSide extends Component { @override Future onLoad() async { final direction = _side.direction; - final centerXAdjustment = _side.isLeft ? 0 : -6.5; + final centerXAdjustment = _side.isLeft ? 0 : -6.66; final flipper = ControlledFlipper( side: _side, @@ -46,16 +46,16 @@ class _BottomGroupSide extends Component { final baseboard = Baseboard(side: _side) ..initialPosition = Vector2( (25.58 * direction) + centerXAdjustment, - 28.69, + 28.71, ); final kicker = Kicker( side: _side, children: [ - ScoringBehavior(points: 5000), + ScoringBehavior(points: 5000)..applyTo(['bouncy_edge']), ], )..initialPosition = Vector2( - (22.4 * direction) + centerXAdjustment, - 25, + (22.64 * direction) + centerXAdjustment, + 25.1, ); await addAll([flipper, baseboard, kicker]); diff --git a/lib/game/game_assets.dart b/lib/game/game_assets.dart index 744593fb..e48ab7ff 100644 --- a/lib/game/game_assets.dart +++ b/lib/game/game_assets.dart @@ -24,8 +24,10 @@ extension PinballGameAssetsX on PinballGame { images.load(components.Assets.images.flipper.right.keyName), images.load(components.Assets.images.baseboard.left.keyName), images.load(components.Assets.images.baseboard.right.keyName), - images.load(components.Assets.images.kicker.left.keyName), - images.load(components.Assets.images.kicker.right.keyName), + images.load(components.Assets.images.kicker.left.lit.keyName), + images.load(components.Assets.images.kicker.left.dimmed.keyName), + images.load(components.Assets.images.kicker.right.lit.keyName), + images.load(components.Assets.images.kicker.right.dimmed.keyName), images.load(components.Assets.images.slingshot.upper.keyName), images.load(components.Assets.images.slingshot.lower.keyName), images.load(components.Assets.images.launchRamp.ramp.keyName), diff --git a/packages/pinball_components/assets/images/kicker/left.png b/packages/pinball_components/assets/images/kicker/left.png deleted file mode 100644 index 42bd5030e8b4acf1d86d9f8fd2839e2744feac18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14253 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

EG#nZHXj1yfnlRxPU2iEB4)l=K^?Pq?W;A$nT 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 literal 0 HcmV?d00001 diff --git a/packages/pinball_components/assets/images/kicker/left/lit.png b/packages/pinball_components/assets/images/kicker/left/lit.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f576611bd1f14dd19ef727ed2ebc3c5c8be1da GIT binary patch literal 17115 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 }s|;f=d*V!pDNuSPH5 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 literal 0 HcmV?d00001 diff --git a/packages/pinball_components/assets/images/kicker/right/lit.png b/packages/pinball_components/assets/images/kicker/right/lit.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe992b4cca23668baeadb8a9c63818240057ce3 GIT binary patch literal 17139 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 - const AssetGenImage('assets/images/kicker/left.png'); - - /// File path: assets/images/kicker/right.png - AssetGenImage get right => - const AssetGenImage('assets/images/kicker/right.png'); + $AssetsImagesKickerLeftGen get left => const $AssetsImagesKickerLeftGen(); + $AssetsImagesKickerRightGen get right => const $AssetsImagesKickerRightGen(); } class $AssetsImagesLaunchRampGen { @@ -344,6 +339,30 @@ class $AssetsImagesDinoAnimatronicGen { const AssetGenImage('assets/images/dino/animatronic/mouth.png'); } +class $AssetsImagesKickerLeftGen { + const $AssetsImagesKickerLeftGen(); + + /// File path: assets/images/kicker/left/dimmed.png + AssetGenImage get dimmed => + const AssetGenImage('assets/images/kicker/left/dimmed.png'); + + /// File path: assets/images/kicker/left/lit.png + AssetGenImage get lit => + const AssetGenImage('assets/images/kicker/left/lit.png'); +} + +class $AssetsImagesKickerRightGen { + const $AssetsImagesKickerRightGen(); + + /// File path: assets/images/kicker/right/dimmed.png + AssetGenImage get dimmed => + const AssetGenImage('assets/images/kicker/right/dimmed.png'); + + /// File path: assets/images/kicker/right/lit.png + AssetGenImage get lit => + const AssetGenImage('assets/images/kicker/right/lit.png'); +} + class $AssetsImagesMultiplierX2Gen { const $AssetsImagesMultiplierX2Gen(); diff --git a/packages/pinball_components/lib/src/components/components.dart b/packages/pinball_components/lib/src/components/components.dart index fc037fbd..a0beda53 100644 --- a/packages/pinball_components/lib/src/components/components.dart +++ b/packages/pinball_components/lib/src/components/components.dart @@ -17,7 +17,7 @@ export 'flipper.dart'; export 'google_letter/google_letter.dart'; export 'initial_position.dart'; export 'joint_anchor.dart'; -export 'kicker.dart'; +export 'kicker/kicker.dart'; export 'launch_ramp.dart'; export 'layer.dart'; export 'layer_sensor.dart'; diff --git a/packages/pinball_components/lib/src/components/kicker/behaviors/behaviors.dart b/packages/pinball_components/lib/src/components/kicker/behaviors/behaviors.dart new file mode 100644 index 00000000..e1098a34 --- /dev/null +++ b/packages/pinball_components/lib/src/components/kicker/behaviors/behaviors.dart @@ -0,0 +1,2 @@ +export 'kicker_ball_contact_behavior.dart'; +export 'kicker_blinking_behavior.dart'; diff --git a/packages/pinball_components/lib/src/components/kicker/behaviors/kicker_ball_contact_behavior.dart b/packages/pinball_components/lib/src/components/kicker/behaviors/kicker_ball_contact_behavior.dart new file mode 100644 index 00000000..d5d2eb6c --- /dev/null +++ b/packages/pinball_components/lib/src/components/kicker/behaviors/kicker_ball_contact_behavior.dart @@ -0,0 +1,14 @@ +// ignore_for_file: public_member_api_docs + +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_flame/pinball_flame.dart'; + +class KickerBallContactBehavior extends ContactBehavior { + @override + void beginContact(Object other, Contact contact) { + super.beginContact(other, contact); + if (other is! Ball) return; + parent.bloc.onBallContacted(); + } +} diff --git a/packages/pinball_components/lib/src/components/kicker/behaviors/kicker_blinking_behavior.dart b/packages/pinball_components/lib/src/components/kicker/behaviors/kicker_blinking_behavior.dart new file mode 100644 index 00000000..569d461f --- /dev/null +++ b/packages/pinball_components/lib/src/components/kicker/behaviors/kicker_blinking_behavior.dart @@ -0,0 +1,37 @@ +import 'package:flame/components.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_flame/pinball_flame.dart'; + +/// {@template kicker_blinking_behavior} +/// Makes a [Kicker] blink back to [KickerState.lit] when [KickerState.dimmed]. +/// {@endtemplate} +class KickerBlinkingBehavior extends TimerComponent with ParentIsA { + /// {@macro kicker_blinking_behavior} + KickerBlinkingBehavior() : super(period: 0.05); + + void _onNewState(KickerState state) { + switch (state) { + case KickerState.lit: + break; + case KickerState.dimmed: + timer + ..reset() + ..start(); + break; + } + } + + @override + Future onLoad() async { + await super.onLoad(); + timer.stop(); + parent.bloc.stream.listen(_onNewState); + } + + @override + void onTick() { + super.onTick(); + timer.stop(); + parent.bloc.onBlinked(); + } +} diff --git a/packages/pinball_components/lib/src/components/kicker/cubit/kicker_cubit.dart b/packages/pinball_components/lib/src/components/kicker/cubit/kicker_cubit.dart new file mode 100644 index 00000000..488f4683 --- /dev/null +++ b/packages/pinball_components/lib/src/components/kicker/cubit/kicker_cubit.dart @@ -0,0 +1,17 @@ +// ignore_for_file: public_member_api_docs + +import 'package:bloc/bloc.dart'; + +part 'kicker_state.dart'; + +class KickerCubit extends Cubit { + KickerCubit() : super(KickerState.lit); + + void onBallContacted() { + emit(KickerState.dimmed); + } + + void onBlinked() { + emit(KickerState.lit); + } +} diff --git a/packages/pinball_components/lib/src/components/kicker/cubit/kicker_state.dart b/packages/pinball_components/lib/src/components/kicker/cubit/kicker_state.dart new file mode 100644 index 00000000..08d52709 --- /dev/null +++ b/packages/pinball_components/lib/src/components/kicker/cubit/kicker_state.dart @@ -0,0 +1,8 @@ +// ignore_for_file: public_member_api_docs + +part of 'kicker_cubit.dart'; + +enum KickerState { + lit, + dimmed, +} diff --git a/packages/pinball_components/lib/src/components/kicker.dart b/packages/pinball_components/lib/src/components/kicker/kicker.dart similarity index 55% rename from packages/pinball_components/lib/src/components/kicker.dart rename to packages/pinball_components/lib/src/components/kicker/kicker.dart index 527ffde4..3301e2ba 100644 --- a/packages/pinball_components/lib/src/components/kicker.dart +++ b/packages/pinball_components/lib/src/components/kicker/kicker.dart @@ -2,9 +2,15 @@ import 'dart:math' as math; import 'package:flame/components.dart'; import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:flutter/material.dart'; import 'package:geometry/geometry.dart' as geometry show centroid; import 'package:pinball_components/gen/assets.gen.dart'; import 'package:pinball_components/pinball_components.dart' hide Assets; +import 'package:pinball_components/src/components/bumping_behavior.dart'; +import 'package:pinball_components/src/components/kicker/behaviors/behaviors.dart'; +import 'package:pinball_flame/pinball_flame.dart'; + +export 'cubit/kicker_cubit.dart'; /// {@template kicker} /// Triangular [BodyType.static] body that propels the [Ball] towards the @@ -17,42 +23,69 @@ class Kicker extends BodyComponent with InitialPosition { Kicker({ required BoardSide side, Iterable? children, + }) : this._( + side: side, + bloc: KickerCubit(), + children: children, + ); + + Kicker._({ + required BoardSide side, + required this.bloc, + Iterable? children, }) : _side = side, super( children: [ - _KickerSpriteComponent(side: side), + BumpingBehavior(strength: 15)..applyTo(['bouncy_edge']), + KickerBallContactBehavior()..applyTo(['bouncy_edge']), + KickerBlinkingBehavior(), + _KickerSpriteGroupComponent( + side: side, + state: bloc.state, + ), ...?children, ], renderBody: false, ); - /// The size of the [Kicker] body. - static final Vector2 size = Vector2(4.4, 15); + /// Creates a [Kicker] without any children. + /// + /// This can be used for testing [Kicker]'s behaviors in isolation. + // TODO(alestiago): Refactor injecting bloc once the following is merged: + // https://github.com/flame-engine/flame/pull/1538 + @visibleForTesting + Kicker.test({ + required this.bloc, + required BoardSide side, + }) : _side = side; + + // TODO(alestiago): Consider refactoring once the following is merged: + // https://github.com/flame-engine/flame/pull/1538 + // ignore: public_member_api_docs + final KickerCubit bloc; + + @override + void onRemove() { + bloc.close(); + super.onRemove(); + } /// Whether the [Kicker] is on the left or right side of the board. - /// - /// A [Kicker] with [BoardSide.left] propels the [Ball] to the right, - /// whereas a [Kicker] with [BoardSide.right] propels the [Ball] to the - /// left. final BoardSide _side; List _createFixtureDefs() { - final fixturesDefs = []; final direction = _side.direction; const quarterPi = math.pi / 4; + final size = Vector2(4.4, 15); final upperCircle = CircleShape()..radius = 1.6; upperCircle.position.setValues(0, upperCircle.radius / 2); - final upperCircleFixtureDef = FixtureDef(upperCircle); - fixturesDefs.add(upperCircleFixtureDef); final lowerCircle = CircleShape()..radius = 1.6; lowerCircle.position.setValues( size.x * -direction, size.y + 0.8, ); - final lowerCircleFixtureDef = FixtureDef(lowerCircle); - fixturesDefs.add(lowerCircleFixtureDef); final wallFacingEdge = EdgeShape() ..set( @@ -63,8 +96,6 @@ class Kicker extends BodyComponent with InitialPosition { ), Vector2(2.5 * direction, size.y - 2), ); - final wallFacingLineFixtureDef = FixtureDef(wallFacingEdge); - fixturesDefs.add(wallFacingLineFixtureDef); final bottomEdge = EdgeShape() ..set( @@ -75,8 +106,6 @@ class Kicker extends BodyComponent with InitialPosition { lowerCircle.radius * math.sin(quarterPi), ), ); - final bottomLineFixtureDef = FixtureDef(bottomEdge); - fixturesDefs.add(bottomLineFixtureDef); final bouncyEdge = EdgeShape() ..set( @@ -92,12 +121,13 @@ class Kicker extends BodyComponent with InitialPosition { ), ); - final bouncyFixtureDef = FixtureDef( - bouncyEdge, - // TODO(alestiago): Play with restitution value once game is bundled. - restitution: 10, - ); - fixturesDefs.add(bouncyFixtureDef); + final fixturesDefs = [ + FixtureDef(upperCircle), + FixtureDef(lowerCircle), + FixtureDef(wallFacingEdge), + FixtureDef(bottomEdge), + FixtureDef(bouncyEdge, userData: 'bouncy_edge'), + ]; // TODO(alestiago): Evaluate if there is value on centering the fixtures. final centroid = geometry.centroid( @@ -130,25 +160,46 @@ class Kicker extends BodyComponent with InitialPosition { } } -class _KickerSpriteComponent extends SpriteComponent with HasGameRef { - _KickerSpriteComponent({required BoardSide side}) : _side = side; +class _KickerSpriteGroupComponent extends SpriteGroupComponent + with HasGameRef, ParentIsA { + _KickerSpriteGroupComponent({ + required BoardSide side, + required KickerState state, + }) : _side = side, + super( + anchor: Anchor.center, + position: Vector2(0.7 * -side.direction, -2.2), + current: state, + ); final BoardSide _side; @override Future onLoad() async { await super.onLoad(); - - // TODO(alestiago): Used cached asset. - final sprite = await gameRef.loadSprite( - (_side.isLeft) - ? Assets.images.kicker.left.keyName - : Assets.images.kicker.right.keyName, - ); - this.sprite = sprite; - size = sprite.originalSize / 10; - anchor = Anchor.center; - position = Vector2(0.7 * -_side.direction, -2.2); + // TODO(alestiago): Consider refactoring once the following is merged: + // https://github.com/flame-engine/flame/pull/1538 + // ignore: public_member_api_docs + parent.bloc.stream.listen((state) => current = state); + + final sprites = { + KickerState.lit: Sprite( + gameRef.images.fromCache( + (_side.isLeft) + ? Assets.images.kicker.left.lit.keyName + : Assets.images.kicker.right.lit.keyName, + ), + ), + KickerState.dimmed: Sprite( + gameRef.images.fromCache( + (_side.isLeft) + ? Assets.images.kicker.left.dimmed.keyName + : Assets.images.kicker.right.dimmed.keyName, + ), + ), + }; + this.sprites = sprites; + size = sprites[current]!.originalSize / 10; } } diff --git a/packages/pinball_components/pubspec.yaml b/packages/pinball_components/pubspec.yaml index 29b4e31a..8352afa3 100644 --- a/packages/pinball_components/pubspec.yaml +++ b/packages/pinball_components/pubspec.yaml @@ -64,7 +64,8 @@ flutter: - assets/images/android/bumper/a/ - assets/images/android/bumper/b/ - assets/images/android/bumper/cow/ - - assets/images/kicker/ + - assets/images/kicker/left/ + - assets/images/kicker/right/ - assets/images/plunger/ - assets/images/slingshot/ - assets/images/sparky/ diff --git a/packages/pinball_components/sandbox/lib/stories/bottom_group/kicker_game.dart b/packages/pinball_components/sandbox/lib/stories/bottom_group/kicker_game.dart index 9b7d96cc..590638e0 100644 --- a/packages/pinball_components/sandbox/lib/stories/bottom_group/kicker_game.dart +++ b/packages/pinball_components/sandbox/lib/stories/bottom_group/kicker_game.dart @@ -3,6 +3,16 @@ import 'package:pinball_components/pinball_components.dart'; import 'package:sandbox/stories/ball/basic_ball_game.dart'; class KickerGame extends BallGame { + KickerGame() + : super( + imagesFileNames: [ + Assets.images.kicker.left.lit.keyName, + Assets.images.kicker.left.dimmed.keyName, + Assets.images.kicker.right.lit.keyName, + Assets.images.kicker.right.dimmed.keyName, + ], + ); + static const description = ''' Shows how Kickers are rendered. @@ -18,9 +28,9 @@ class KickerGame extends BallGame { await addAll( [ Kicker(side: BoardSide.left) - ..initialPosition = Vector2(center.x - (Kicker.size.x * 2), center.y), + ..initialPosition = Vector2(center.x - 8.8, center.y), Kicker(side: BoardSide.right) - ..initialPosition = Vector2(center.x + (Kicker.size.x * 2), center.y), + ..initialPosition = Vector2(center.x + 8.8, center.y), ], ); diff --git a/packages/pinball_components/sandbox/lib/stories/plunger/plunger_game.dart b/packages/pinball_components/sandbox/lib/stories/plunger/plunger_game.dart index 29eded8c..0f1ec2e4 100644 --- a/packages/pinball_components/sandbox/lib/stories/plunger/plunger_game.dart +++ b/packages/pinball_components/sandbox/lib/stories/plunger/plunger_game.dart @@ -29,7 +29,7 @@ class PlungerGame extends BallGame with KeyboardEvents, Traceable { final center = screenToWorld(camera.viewport.canvasSize! / 2); await add( plunger = Plunger(compressionDistance: 29) - ..initialPosition = Vector2(center.x - (Kicker.size.x * 2), center.y), + ..initialPosition = Vector2(center.x - 8.8, center.y), ); await traceAllBodies(); } diff --git a/packages/pinball_components/test/src/components/golden/kickers.png b/packages/pinball_components/test/src/components/golden/kickers.png index 231769238f77b05d239a6940780237d1c317f0d3..1b019de9d13193ee0a378356072f894150487b8f 100644 GIT binary patch literal 71945 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 bDhie{Y|^&xyH?Zs02Ftgu6{1-oD!M<){ocC literal 60136 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, + ); + }); + + flameTester.test( + 'beginContact emits onBallContacted when contacts with a ball', + (game) async { + final behavior = KickerBallContactBehavior(); + final bloc = _MockKickerCubit(); + whenListen( + bloc, + const Stream.empty(), + initialState: KickerState.lit, + ); + + final kicker = Kicker.test( + side: BoardSide.left, + bloc: bloc, + ); + await kicker.add(behavior); + await game.ensureAdd(kicker); + + behavior.beginContact(MockBall(), MockContact()); + + verify(kicker.bloc.onBallContacted).called(1); + }, + ); + }, + ); +} diff --git a/packages/pinball_components/test/src/components/kicker/behaviors/kicker_blinking_behavior_test.dart b/packages/pinball_components/test/src/components/kicker/behaviors/kicker_blinking_behavior_test.dart new file mode 100644 index 00000000..3b6f0c20 --- /dev/null +++ b/packages/pinball_components/test/src/components/kicker/behaviors/kicker_blinking_behavior_test.dart @@ -0,0 +1,50 @@ +import 'dart:async'; + +import 'package:bloc_test/bloc_test.dart'; +import 'package:flame_test/flame_test.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_components/src/components/kicker/behaviors/behaviors.dart'; + +import '../../../../helpers/helpers.dart'; + +class _MockKickerCubit extends Mock implements KickerCubit {} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + final flameTester = FlameTester(TestGame.new); + + group( + 'KickerBlinkingBehavior', + () { + flameTester.testGameWidget( + 'calls onBlinked after 0.05 seconds when dimmed', + setUp: (game, tester) async { + final behavior = KickerBlinkingBehavior(); + final bloc = _MockKickerCubit(); + final streamController = StreamController(); + whenListen( + bloc, + streamController.stream, + initialState: KickerState.lit, + ); + + final kicker = Kicker.test( + side: BoardSide.left, + bloc: bloc, + ); + await kicker.add(behavior); + await game.ensureAdd(kicker); + + streamController.add(KickerState.dimmed); + await tester.pump(); + game.update(0.05); + + await streamController.close(); + verify(bloc.onBlinked).called(1); + }, + ); + }, + ); +} diff --git a/packages/pinball_components/test/src/components/kicker/cubit/kicker_cubit_test.dart b/packages/pinball_components/test/src/components/kicker/cubit/kicker_cubit_test.dart new file mode 100644 index 00000000..ed1d4a46 --- /dev/null +++ b/packages/pinball_components/test/src/components/kicker/cubit/kicker_cubit_test.dart @@ -0,0 +1,24 @@ +import 'package:bloc_test/bloc_test.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:pinball_components/pinball_components.dart'; + +void main() { + group( + 'KickerCubit', + () { + blocTest( + 'onBallContacted emits dimmed', + build: KickerCubit.new, + act: (bloc) => bloc.onBallContacted(), + expect: () => [KickerState.dimmed], + ); + + blocTest( + 'onBlinked emits lit', + build: KickerCubit.new, + act: (bloc) => bloc.onBlinked(), + expect: () => [KickerState.lit], + ); + }, + ); +} diff --git a/packages/pinball_components/test/src/components/kicker_test.dart b/packages/pinball_components/test/src/components/kicker_test.dart index aebf9380..4d3fc14d 100644 --- a/packages/pinball_components/test/src/components/kicker_test.dart +++ b/packages/pinball_components/test/src/components/kicker_test.dart @@ -1,29 +1,44 @@ // ignore_for_file: cascade_invocations +import 'package:bloc_test/bloc_test.dart'; 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'; +import 'package:mocktail/mocktail.dart'; import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_components/src/components/bumping_behavior.dart'; +import 'package:pinball_components/src/components/kicker/behaviors/behaviors.dart'; import '../../helpers/helpers.dart'; +class _MockKickerCubit extends Mock implements KickerCubit {} + void main() { group('Kicker', () { - final flameTester = FlameTester(TestGame.new); + final assets = [ + Assets.images.kicker.left.lit.keyName, + Assets.images.kicker.left.dimmed.keyName, + Assets.images.kicker.right.lit.keyName, + Assets.images.kicker.right.dimmed.keyName, + ]; + final flameTester = FlameTester(() => TestGame(assets)); flameTester.testGameWidget( 'renders correctly', setUp: (game, tester) async { + await game.images.loadAll(assets); final leftKicker = Kicker( side: BoardSide.left, - )..initialPosition = Vector2(-20, 0); + ) + ..initialPosition = Vector2(-20, 0) + ..renderBody = false; final rightKicker = Kicker( side: BoardSide.right, )..initialPosition = Vector2(20, 0); await game.ensureAddAll([leftKicker, rightKicker]); game.camera.followVector2(Vector2.zero()); + await tester.pump(); }, verify: (game, tester) async { await expectLater( @@ -36,8 +51,9 @@ void main() { flameTester.test( 'loads correctly', (game) async { - final kicker = Kicker( + final kicker = Kicker.test( side: BoardSide.left, + bloc: KickerCubit(), ); await game.ensureAdd(kicker); @@ -45,58 +61,72 @@ void main() { }, ); - flameTester.test('adds new children', (game) async { - final component = Component(); - final kicker = Kicker( + // TODO(alestiago): Consider refactoring once the following is merged: + // https://github.com/flame-engine/flame/pull/1538 + // ignore: public_member_api_docs + flameTester.test('closes bloc when removed', (game) async { + final bloc = _MockKickerCubit(); + whenListen( + bloc, + const Stream.empty(), + initialState: KickerState.lit, + ); + when(bloc.close).thenAnswer((_) async {}); + final kicker = Kicker.test( side: BoardSide.left, - children: [component], + bloc: bloc, ); + await game.ensureAdd(kicker); - expect(kicker.children, contains(component)); + game.remove(kicker); + await game.ready(); + + verify(bloc.close).called(1); }); - flameTester.test( - 'body is static', - (game) async { + group('adds', () { + flameTester.test('new children', (game) async { + final component = Component(); final kicker = Kicker( side: BoardSide.left, + children: [component], ); await game.ensureAdd(kicker); + expect(kicker.children, contains(component)); + }); - expect(kicker.body.bodyType, equals(BodyType.static)); - }, - ); - - flameTester.test( - 'has restitution', - (game) async { + flameTester.test('a BumpingBehavior', (game) async { final kicker = Kicker( side: BoardSide.left, ); await game.ensureAdd(kicker); - - final totalRestitution = kicker.body.fixtures.fold( - 0, - (total, fixture) => total + fixture.restitution, + expect( + kicker.children.whereType().single, + isNotNull, ); - expect(totalRestitution, greaterThan(0)); - }, - ); + }); - flameTester.test( - 'has no friction', - (game) async { + flameTester.test('a KickerBallContactBehavior', (game) async { final kicker = Kicker( side: BoardSide.left, ); await game.ensureAdd(kicker); + expect( + kicker.children.whereType().single, + isNotNull, + ); + }); - final totalFriction = kicker.body.fixtures.fold( - 0, - (total, fixture) => total + fixture.friction, + flameTester.test('a KickerBlinkingBehavior', (game) async { + final kicker = Kicker( + side: BoardSide.left, ); - expect(totalFriction, equals(0)); - }, - ); + await game.ensureAdd(kicker); + expect( + kicker.children.whereType().single, + isNotNull, + ); + }); + }); }); } diff --git a/test/game/components/bottom_group_test.dart b/test/game/components/bottom_group_test.dart index 3254f155..1d9e58ab 100644 --- a/test/game/components/bottom_group_test.dart +++ b/test/game/components/bottom_group_test.dart @@ -10,6 +10,10 @@ import '../../helpers/helpers.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); final assets = [ + Assets.images.kicker.left.lit.keyName, + Assets.images.kicker.left.dimmed.keyName, + Assets.images.kicker.right.lit.keyName, + Assets.images.kicker.right.dimmed.keyName, Assets.images.baseboard.left.keyName, Assets.images.baseboard.right.keyName, Assets.images.flipper.left.keyName, diff --git a/test/game/pinball_game_test.dart b/test/game/pinball_game_test.dart index 6af907d6..687280c0 100644 --- a/test/game/pinball_game_test.dart +++ b/test/game/pinball_game_test.dart @@ -51,8 +51,10 @@ void main() { Assets.images.googleWord.letter4.keyName, Assets.images.googleWord.letter5.keyName, Assets.images.googleWord.letter6.keyName, - Assets.images.kicker.left.keyName, - Assets.images.kicker.right.keyName, + Assets.images.kicker.left.lit.keyName, + Assets.images.kicker.left.dimmed.keyName, + Assets.images.kicker.right.lit.keyName, + Assets.images.kicker.right.dimmed.keyName, Assets.images.launchRamp.ramp.keyName, Assets.images.launchRamp.foregroundRailing.keyName, Assets.images.launchRamp.backgroundRailing.keyName,