From ba12b9f89016b7dfa2b6315c31f89818bdba9ca3 Mon Sep 17 00:00:00 2001 From: alestiago Date: Tue, 10 May 2022 09:40:54 +0100 Subject: [PATCH] refactor: removed strength from PlungerAutoPullingBehavior --- .../components/game_bloc_status_listener.dart | 23 +++++++++++-------- .../behaviors/plunger_pulling_behavior.dart | 13 +++++++---- .../plunger_pulling_behavior_test.dart | 12 ++++------ .../game_bloc_status_listener_test.dart | 8 ++----- 4 files changed, 29 insertions(+), 27 deletions(-) diff --git a/lib/game/components/game_bloc_status_listener.dart b/lib/game/components/game_bloc_status_listener.dart index 3cc99e94..fb5fc485 100644 --- a/lib/game/components/game_bloc_status_listener.dart +++ b/lib/game/components/game_bloc_status_listener.dart @@ -67,22 +67,25 @@ class GameBlocStatusListener extends Component gameRef.descendants().whereType().single.bloc.onReset(); } - void _addPlungerBehaviors(Plunger plunger) { - const pullingStrength = 7.0; - plunger.firstChild>()!.addAll( - [ - PlungerPullingBehavior(strength: pullingStrength), - PlungerAutoPullingBehavior(strength: pullingStrength), - PlungerKeyControllingBehavior() - ], - ); - } + void _addPlungerBehaviors(Plunger plunger) => plunger + .firstChild>()! + .addAll( + [ + PlungerPullingBehavior(strength: 7), + PlungerAutoPullingBehavior(), + PlungerKeyControllingBehavior() + ], + ); void _removePlungerBehaviors(Plunger plunger) { plunger .descendants() .whereType() .forEach(plunger.remove); + plunger + .descendants() + .whereType() + .forEach(plunger.remove); plunger .descendants() .whereType() diff --git a/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_pulling_behavior.dart b/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_pulling_behavior.dart index dfde9b0a..7dc0d99b 100644 --- a/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_pulling_behavior.dart +++ b/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_pulling_behavior.dart @@ -28,10 +28,15 @@ class PlungerPullingBehavior extends Component } } -class PlungerAutoPullingBehavior extends PlungerPullingBehavior { - PlungerAutoPullingBehavior({ - required double strength, - }) : super(strength: strength); +class PlungerAutoPullingBehavior extends Component + with FlameBlocReader { + late final Plunger _plunger; + + @override + Future onLoad() async { + await super.onLoad(); + _plunger = parent!.parent! as Plunger; + } @override void update(double dt) { diff --git a/packages/pinball_components/test/src/components/plunger/behaviors/plunger_pulling_behavior_test.dart b/packages/pinball_components/test/src/components/plunger/behaviors/plunger_pulling_behavior_test.dart index 6e41883f..c289edee 100644 --- a/packages/pinball_components/test/src/components/plunger/behaviors/plunger_pulling_behavior_test.dart +++ b/packages/pinball_components/test/src/components/plunger/behaviors/plunger_pulling_behavior_test.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:bloc_test/bloc_test.dart'; +import 'package:flame/components.dart'; import 'package:flame_bloc/flame_bloc.dart'; import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_test/flame_test.dart'; @@ -12,7 +13,7 @@ import 'package:pinball_components/pinball_components.dart'; class _TestGame extends Forge2DGame { Future pump( - PlungerPullingBehavior behavior, { + Component behavior, { PlungerCubit? plungerBloc, }) async { final plunger = Plunger.test(); @@ -85,13 +86,13 @@ void main() { group('PlungerAutoPullingBehavior', () { test('can be instantiated', () { expect( - PlungerAutoPullingBehavior(strength: 0), + PlungerAutoPullingBehavior(), isA(), ); }); flameTester.test('can be loaded', (game) async { - final behavior = PlungerAutoPullingBehavior(strength: 0); + final behavior = PlungerAutoPullingBehavior(); await game.pump(behavior); expect(game.descendants(), contains(behavior)); }); @@ -106,10 +107,7 @@ void main() { initialState: PlungerState.autoPulling, ); - const strength = 2.0; - final behavior = PlungerAutoPullingBehavior( - strength: strength, - ); + final behavior = PlungerAutoPullingBehavior(); await game.pump( behavior, plungerBloc: plungerBloc, diff --git a/test/game/components/game_bloc_status_listener_test.dart b/test/game/components/game_bloc_status_listener_test.dart index 04532bbd..4f7f7222 100644 --- a/test/game/components/game_bloc_status_listener_test.dart +++ b/test/game/components/game_bloc_status_listener_test.dart @@ -275,7 +275,7 @@ void main() { create: PlungerCubit.new, children: [ PlungerPullingBehavior(strength: 0), - PlungerAutoPullingBehavior(strength: 0) + PlungerAutoPullingBehavior() ], ), ); @@ -533,11 +533,7 @@ void main() { await game.ready(); expect( - plunger - .descendants() - .whereType() - .where((behavior) => behavior is! PlungerAutoPullingBehavior) - .length, + plunger.descendants().whereType().length, equals(1), ); },