diff --git a/packages/pinball_components/lib/src/components/bumping_behavior.dart b/packages/pinball_components/lib/src/components/bumping_behavior.dart index 17931838..0d259860 100644 --- a/packages/pinball_components/lib/src/components/bumping_behavior.dart +++ b/packages/pinball_components/lib/src/components/bumping_behavior.dart @@ -7,7 +7,9 @@ import 'package:pinball_flame/pinball_flame.dart'; /// {@endtemplate} class BumpingBehavior extends ContactBehavior { /// {@macro bumping_behavior} - BumpingBehavior({required double strength}) : _strength = strength; + BumpingBehavior({required double strength}) + : assert(strength >= 0, "Strength can't be negative."), + _strength = strength; /// Determines how strong the bump is. final double _strength; 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 c7188aeb..db6bcaa3 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 @@ -7,7 +7,8 @@ class PlungerPullingBehavior extends Component with FlameBlocReader { PlungerPullingBehavior({ required double strength, - }) : _strength = strength; + }) : assert(strength >= 0, "Strength can't be negative."), + _strength = strength; final double _strength; @@ -22,7 +23,7 @@ class PlungerPullingBehavior extends Component @override void update(double dt) { if (bloc.state.isPulling) { - _plunger.body.linearVelocity = Vector2(0, _strength.abs()); + _plunger.body.linearVelocity = Vector2(0, _strength); } } } diff --git a/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_releasing_behavior.dart b/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_releasing_behavior.dart index ac02984f..d2935818 100644 --- a/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_releasing_behavior.dart +++ b/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_releasing_behavior.dart @@ -6,7 +6,8 @@ class PlungerReleasingBehavior extends Component with FlameBlocListenable { PlungerReleasingBehavior({ required double strength, - }) : _strength = strength; + }) : assert(strength >= 0, "Strength can't be negative."), + _strength = strength; final double _strength; @@ -22,8 +23,8 @@ class PlungerReleasingBehavior extends Component void onNewState(PlungerState state) { super.onNewState(state); if (state.isReleasing) { - final velocity = (_plunger.initialPosition.y - _plunger.body.position.y) * - _strength.abs(); + final velocity = + (_plunger.initialPosition.y - _plunger.body.position.y) * _strength; _plunger.body.linearVelocity = Vector2(0, velocity); } } diff --git a/packages/pinball_components/test/src/components/bumping_behavior_test.dart b/packages/pinball_components/test/src/components/bumping_behavior_test.dart index 07e35cca..7a87a46c 100644 --- a/packages/pinball_components/test/src/components/bumping_behavior_test.dart +++ b/packages/pinball_components/test/src/components/bumping_behavior_test.dart @@ -24,6 +24,20 @@ void main() { final flameTester = FlameTester(TestGame.new); group('BumpingBehavior', () { + test('can be instantiated', () { + expect( + BumpingBehavior(strength: 0), + isA(), + ); + }); + + test('throws assertion error when strength is negative ', () { + expect( + () => BumpingBehavior(strength: -1), + throwsAssertionError, + ); + }); + flameTester.test('can be added', (game) async { final behavior = BumpingBehavior(strength: 0); final component = _TestBodyComponent(); 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 4f789aa5..4eec7029 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 @@ -42,6 +42,13 @@ void main() { ); }); + test('throws assertion error when strength is negative ', () { + expect( + () => PlungerPullingBehavior(strength: -1), + throwsAssertionError, + ); + }); + flameTester.test('can be loaded', (game) async { final behavior = PlungerPullingBehavior(strength: 0); await game.pump(behavior); diff --git a/packages/pinball_components/test/src/components/plunger/behaviors/plunger_releasing_behavior_test.dart b/packages/pinball_components/test/src/components/plunger/behaviors/plunger_releasing_behavior_test.dart index 77d70380..501753c4 100644 --- a/packages/pinball_components/test/src/components/plunger/behaviors/plunger_releasing_behavior_test.dart +++ b/packages/pinball_components/test/src/components/plunger/behaviors/plunger_releasing_behavior_test.dart @@ -40,6 +40,13 @@ void main() { ); }); + test('throws assertion error when strength is negative ', () { + expect( + () => PlungerReleasingBehavior(strength: -1), + throwsAssertionError, + ); + }); + flameTester.test('can be loaded', (game) async { final behavior = PlungerReleasingBehavior(strength: 0); await game.pump(behavior);