From b087d0e418e2cfaaf3ad2c64eba86a6caa24836e Mon Sep 17 00:00:00 2001 From: alestiago Date: Sun, 8 May 2022 11:09:09 +0100 Subject: [PATCH] feat: defined Plunger behaviors --- lib/game/components/components.dart | 1 - lib/game/components/controlled_plunger.dart | 76 ------------ lib/game/components/launcher.dart | 4 +- .../lib/src/components/components.dart | 2 +- .../flipper_key_controlling_behavior.dart | 33 +++-- .../plunger/behaviors/behaviors.dart | 3 + .../behaviors/plunger_jointing_behavior.dart | 54 ++++++++ .../plunger_key_controlling_behavior.dart | 33 +++++ .../behaviors/plunger_noise_behavior.dart | 20 +++ .../src/components/{ => plunger}/plunger.dart | 112 ++++------------- packages/pinball_components/pubspec.yaml | 3 + .../lib/stories/plunger/plunger_game.dart | 3 +- .../plunger_jointing_behavior_test.dart | 0 ...plunger_key_controlling_behavior_test.dart | 5 + .../plunger_noise_behavior_test.dart | 0 .../{ => plunger}/plunger_test.dart | 116 +++++------------- .../ball_spawning_behavior_test.dart | 2 +- .../behaviors/ball_theming_behavior_test.dart | 2 +- 18 files changed, 193 insertions(+), 276 deletions(-) delete mode 100644 lib/game/components/controlled_plunger.dart create mode 100644 packages/pinball_components/lib/src/components/plunger/behaviors/behaviors.dart create mode 100644 packages/pinball_components/lib/src/components/plunger/behaviors/plunger_jointing_behavior.dart create mode 100644 packages/pinball_components/lib/src/components/plunger/behaviors/plunger_key_controlling_behavior.dart create mode 100644 packages/pinball_components/lib/src/components/plunger/behaviors/plunger_noise_behavior.dart rename packages/pinball_components/lib/src/components/{ => plunger}/plunger.dart (63%) create mode 100644 packages/pinball_components/test/src/components/plunger/behaviors/plunger_jointing_behavior_test.dart create mode 100644 packages/pinball_components/test/src/components/plunger/behaviors/plunger_key_controlling_behavior_test.dart create mode 100644 packages/pinball_components/test/src/components/plunger/behaviors/plunger_noise_behavior_test.dart rename packages/pinball_components/test/src/components/{ => plunger}/plunger_test.dart (78%) diff --git a/lib/game/components/components.dart b/lib/game/components/components.dart index 324f379a..45376f87 100644 --- a/lib/game/components/components.dart +++ b/lib/game/components/components.dart @@ -1,7 +1,6 @@ export 'android_acres/android_acres.dart'; export 'backbox/backbox.dart'; export 'bottom_group.dart'; -export 'controlled_plunger.dart'; export 'dino_desert/dino_desert.dart'; export 'drain/drain.dart'; export 'flutter_forest/flutter_forest.dart'; diff --git a/lib/game/components/controlled_plunger.dart b/lib/game/components/controlled_plunger.dart deleted file mode 100644 index f709de66..00000000 --- a/lib/game/components/controlled_plunger.dart +++ /dev/null @@ -1,76 +0,0 @@ -import 'package:flame/components.dart'; -import 'package:flame_bloc/flame_bloc.dart'; -import 'package:flutter/services.dart'; -import 'package:pinball/game/game.dart'; -import 'package:pinball_audio/pinball_audio.dart'; -import 'package:pinball_components/pinball_components.dart'; -import 'package:pinball_flame/pinball_flame.dart'; - -/// {@template controlled_plunger} -/// A [Plunger] with a [PlungerController] attached. -/// {@endtemplate} -class ControlledPlunger extends Plunger with Controls { - /// {@macro controlled_plunger} - ControlledPlunger({required double compressionDistance}) - : super(compressionDistance: compressionDistance) { - controller = PlungerController(this); - } - - @override - void release() { - super.release(); - - add(PlungerNoiseBehavior()); - } -} - -/// A behavior attached to the plunger when it launches the ball which plays the -/// related sound effects. -class PlungerNoiseBehavior extends Component { - @override - Future onLoad() async { - await super.onLoad(); - readProvider().play(PinballAudio.launcher); - } - - @override - void update(double dt) { - super.update(dt); - removeFromParent(); - } -} - -/// {@template plunger_controller} -/// A [ComponentController] that controls a [Plunger]s movement. -/// {@endtemplate} -class PlungerController extends ComponentController - with KeyboardHandler, FlameBlocReader { - /// {@macro plunger_controller} - PlungerController(Plunger plunger) : super(plunger); - - /// The [LogicalKeyboardKey]s that will control the [Flipper]. - /// - /// [onKeyEvent] method listens to when one of these keys is pressed. - static const List _keys = [ - LogicalKeyboardKey.arrowDown, - LogicalKeyboardKey.space, - LogicalKeyboardKey.keyS, - ]; - - @override - bool onKeyEvent( - RawKeyEvent event, - Set keysPressed, - ) { - if (bloc.state.status.isGameOver) return true; - if (!_keys.contains(event.logicalKey)) return true; - - if (event is RawKeyDownEvent) { - component.pull(); - } else if (event is RawKeyUpEvent) { - component.release(); - } - - return false; - } -} diff --git a/lib/game/components/launcher.dart b/lib/game/components/launcher.dart index 4729515a..99b44a80 100644 --- a/lib/game/components/launcher.dart +++ b/lib/game/components/launcher.dart @@ -1,5 +1,4 @@ import 'package:flame/components.dart'; -import 'package:pinball/game/components/components.dart'; import 'package:pinball_components/pinball_components.dart' hide Assets; /// {@template launcher} @@ -13,8 +12,7 @@ class Launcher extends Component { children: [ LaunchRamp(), Flapper(), - ControlledPlunger(compressionDistance: 9.2) - ..initialPosition = Vector2(41, 43.7), + Plunger()..initialPosition = Vector2(41, 43.7), RocketSpriteComponent()..position = Vector2(42.8, 62.3), ], ); diff --git a/packages/pinball_components/lib/src/components/components.dart b/packages/pinball_components/lib/src/components/components.dart index 17f3746a..5596c126 100644 --- a/packages/pinball_components/lib/src/components/components.dart +++ b/packages/pinball_components/lib/src/components/components.dart @@ -23,7 +23,7 @@ export 'launch_ramp.dart'; export 'layer_sensor/layer_sensor.dart'; export 'multiball/multiball.dart'; export 'multiplier/multiplier.dart'; -export 'plunger.dart'; +export 'plunger/plunger.dart'; export 'rocket.dart'; export 'score_component/score_component.dart'; export 'shapes/shapes.dart'; diff --git a/packages/pinball_components/lib/src/components/flipper/behaviors/flipper_key_controlling_behavior.dart b/packages/pinball_components/lib/src/components/flipper/behaviors/flipper_key_controlling_behavior.dart index 95566e75..ca4fcece 100644 --- a/packages/pinball_components/lib/src/components/flipper/behaviors/flipper_key_controlling_behavior.dart +++ b/packages/pinball_components/lib/src/components/flipper/behaviors/flipper_key_controlling_behavior.dart @@ -14,7 +14,21 @@ class FlipperKeyControllingBehavior extends Component @override Future onLoad() async { await super.onLoad(); - _keys = parent.side.flipperKeys; + + switch (parent.side) { + case BoardSide.left: + _keys = [ + LogicalKeyboardKey.arrowLeft, + LogicalKeyboardKey.keyA, + ]; + break; + case BoardSide.right: + _keys = [ + LogicalKeyboardKey.arrowRight, + LogicalKeyboardKey.keyD, + ]; + break; + } } @override @@ -33,20 +47,3 @@ class FlipperKeyControllingBehavior extends Component return false; } } - -extension on BoardSide { - List get flipperKeys { - switch (this) { - case BoardSide.left: - return [ - LogicalKeyboardKey.arrowLeft, - LogicalKeyboardKey.keyA, - ]; - case BoardSide.right: - return [ - LogicalKeyboardKey.arrowRight, - LogicalKeyboardKey.keyD, - ]; - } - } -} diff --git a/packages/pinball_components/lib/src/components/plunger/behaviors/behaviors.dart b/packages/pinball_components/lib/src/components/plunger/behaviors/behaviors.dart new file mode 100644 index 00000000..2ad36e5b --- /dev/null +++ b/packages/pinball_components/lib/src/components/plunger/behaviors/behaviors.dart @@ -0,0 +1,3 @@ +export 'plunger_jointing_behavior.dart'; +export 'plunger_key_controlling_behavior.dart'; +export 'plunger_noise_behavior.dart'; diff --git a/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_jointing_behavior.dart b/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_jointing_behavior.dart new file mode 100644 index 00000000..06332bef --- /dev/null +++ b/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_jointing_behavior.dart @@ -0,0 +1,54 @@ +import 'package:flame/components.dart'; +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_flame/pinball_flame.dart'; + +class PlungerJointingBehavior extends Component with ParentIsA { + PlungerJointingBehavior({required double compressionDistance}) + : _compressionDistance = compressionDistance; + + final double _compressionDistance; + + @override + Future onLoad() async { + await super.onLoad(); + final anchor = JointAnchor() + ..initialPosition = Vector2(0, _compressionDistance); + await add(anchor); + + final jointDef = _PlungerAnchorPrismaticJointDef( + plunger: parent, + anchor: anchor, + ); + + parent.world.createJoint( + PrismaticJoint(jointDef)..setLimits(-_compressionDistance, 0), + ); + } +} + +/// [PrismaticJointDef] between a [Plunger] and an [JointAnchor] with motion on +/// the vertical axis. +/// +/// The [Plunger] is constrained vertically between its starting position and +/// the [JointAnchor]. The [JointAnchor] must be below the [Plunger]. +class _PlungerAnchorPrismaticJointDef extends PrismaticJointDef { + /// {@macro plunger_anchor_prismatic_joint_def} + _PlungerAnchorPrismaticJointDef({ + required Plunger plunger, + required BodyComponent anchor, + }) { + initialize( + plunger.body, + anchor.body, + plunger.body.position + anchor.body.position, + Vector2(16, BoardDimensions.bounds.height), + ); + enableLimit = true; + lowerTranslation = double.negativeInfinity; + enableMotor = true; + motorSpeed = 1000; + maxMotorForce = motorSpeed; + collideConnected = true; + } +} diff --git a/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_key_controlling_behavior.dart b/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_key_controlling_behavior.dart new file mode 100644 index 00000000..821bc004 --- /dev/null +++ b/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_key_controlling_behavior.dart @@ -0,0 +1,33 @@ +import 'package:flame/components.dart'; +import 'package:flutter/services.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_flame/pinball_flame.dart'; + +/// Allows controlling the [Plunger]'s movement with keyboard input. +class PlungerKeyControllingBehavior extends Component + with KeyboardHandler, ParentIsA { + /// The [LogicalKeyboardKey]s that will control the [Flipper]. + /// + /// [onKeyEvent] method listens to when one of these keys is pressed. + static const List _keys = [ + LogicalKeyboardKey.arrowDown, + LogicalKeyboardKey.space, + LogicalKeyboardKey.keyS, + ]; + + @override + bool onKeyEvent( + RawKeyEvent event, + Set keysPressed, + ) { + if (!_keys.contains(event.logicalKey)) return true; + + if (event is RawKeyDownEvent) { + parent.pull(); + } else if (event is RawKeyUpEvent) { + parent.release(); + } + + return false; + } +} diff --git a/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_noise_behavior.dart b/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_noise_behavior.dart new file mode 100644 index 00000000..163ae196 --- /dev/null +++ b/packages/pinball_components/lib/src/components/plunger/behaviors/plunger_noise_behavior.dart @@ -0,0 +1,20 @@ +import 'package:flame/components.dart'; +import 'package:pinball_audio/pinball_audio.dart'; +import 'package:pinball_flame/pinball_flame.dart'; + +/// Plays the [PinballAudio.launcher] sound. +/// +/// It is attached when the plunger is released. +class PlungerNoiseBehavior extends Component { + @override + Future onLoad() async { + await super.onLoad(); + readProvider().play(PinballAudio.launcher); + } + + @override + void update(double dt) { + super.update(dt); + removeFromParent(); + } +} diff --git a/packages/pinball_components/lib/src/components/plunger.dart b/packages/pinball_components/lib/src/components/plunger/plunger.dart similarity index 63% rename from packages/pinball_components/lib/src/components/plunger.dart rename to packages/pinball_components/lib/src/components/plunger/plunger.dart index 6f38eb37..17ea6c07 100644 --- a/packages/pinball_components/lib/src/components/plunger.dart +++ b/packages/pinball_components/lib/src/components/plunger/plunger.dart @@ -2,6 +2,7 @@ import 'package:flame/components.dart'; import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flutter/material.dart'; import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_components/src/components/plunger/behaviors/behaviors.dart'; import 'package:pinball_flame/pinball_flame.dart'; /// {@template plunger} @@ -12,11 +13,14 @@ import 'package:pinball_flame/pinball_flame.dart'; /// {@endtemplate} class Plunger extends BodyComponent with InitialPosition, Layered, ZIndex { /// {@macro plunger} - Plunger({ - required this.compressionDistance, - }) : super( + Plunger() + : super( renderBody: false, - children: [_PlungerSpriteAnimationGroupComponent()], + children: [ + _PlungerSpriteAnimationGroupComponent(), + PlungerJointingBehavior(compressionDistance: 9.2), + PlungerKeyControllingBehavior(), + ], ) { zIndex = ZIndexes.plunger; layer = Layer.launcher; @@ -26,53 +30,47 @@ class Plunger extends BodyComponent with InitialPosition, Layered, ZIndex { /// /// This can be used for testing [Plunger]'s behaviors in isolation. @visibleForTesting - Plunger.test({required this.compressionDistance}); - - /// Distance the plunger can lower. - final double compressionDistance; + Plunger.test(); List _createFixtureDefs() { - final fixturesDef = []; - final leftShapeVertices = [ Vector2(0, 0), Vector2(-1.8, 0), Vector2(-1.8, -2.2), Vector2(0, -0.3), - ]..map((vector) => vector.rotate(BoardDimensions.perspectiveAngle)) - .toList(); + ]..forEach((vector) => vector.rotate(BoardDimensions.perspectiveAngle)); final leftTriangleShape = PolygonShape()..set(leftShapeVertices); - final leftTriangleFixtureDef = FixtureDef(leftTriangleShape)..density = 80; - fixturesDef.add(leftTriangleFixtureDef); - final rightShapeVertices = [ Vector2(0, 0), Vector2(1.8, 0), Vector2(1.8, -2.2), Vector2(0, -0.3), - ]..map((vector) => vector.rotate(BoardDimensions.perspectiveAngle)) - .toList(); + ]..forEach((vector) => vector.rotate(BoardDimensions.perspectiveAngle)); final rightTriangleShape = PolygonShape()..set(rightShapeVertices); - final rightTriangleFixtureDef = FixtureDef(rightTriangleShape) - ..density = 80; - fixturesDef.add(rightTriangleFixtureDef); - - return fixturesDef; + return [ + FixtureDef( + leftTriangleShape, + density: 80, + ), + FixtureDef( + rightTriangleShape, + density: 80, + ), + ]; } @override Body createBody() { final bodyDef = BodyDef( position: initialPosition, - userData: this, type: BodyType.dynamic, gravityScale: Vector2.zero(), ); - final body = world.createBody(bodyDef); _createFixtureDefs().forEach(body.createFixture); + return body; } @@ -97,6 +95,7 @@ class Plunger extends BodyComponent with InitialPosition, Layered, ZIndex { /// The velocity's magnitude depends on how far the [Plunger] has been pulled /// from its original [initialPosition]. void release() { + add(PlungerNoiseBehavior()); final sprite = firstChild<_PlungerSpriteAnimationGroupComponent>()!; _pullingDownTime = 0; @@ -118,28 +117,6 @@ class Plunger extends BodyComponent with InitialPosition, Layered, ZIndex { } super.update(dt); } - - /// Anchors the [Plunger] to the [PrismaticJoint] that controls its vertical - /// motion. - Future _anchorToJoint() async { - final anchor = PlungerAnchor(plunger: this); - await add(anchor); - - final jointDef = PlungerAnchorPrismaticJointDef( - plunger: this, - anchor: anchor, - ); - - world.createJoint( - PrismaticJoint(jointDef)..setLimits(-compressionDistance, 0), - ); - } - - @override - Future onLoad() async { - await super.onLoad(); - await _anchorToJoint(); - } } /// Animation states associated with a [Plunger]. @@ -206,46 +183,3 @@ class _PlungerSpriteAnimationGroupComponent current = _PlungerAnimationState.release; } } - -/// {@template plunger_anchor} -/// [JointAnchor] positioned below a [Plunger]. -/// {@endtemplate} -class PlungerAnchor extends JointAnchor { - /// {@macro plunger_anchor} - PlungerAnchor({ - required Plunger plunger, - }) { - initialPosition = Vector2( - 0, - plunger.compressionDistance, - ); - } -} - -/// {@template plunger_anchor_prismatic_joint_def} -/// [PrismaticJointDef] between a [Plunger] and an [JointAnchor] with motion on -/// the vertical axis. -/// -/// The [Plunger] is constrained vertically between its starting position and -/// the [JointAnchor]. The [JointAnchor] must be below the [Plunger]. -/// {@endtemplate} -class PlungerAnchorPrismaticJointDef extends PrismaticJointDef { - /// {@macro plunger_anchor_prismatic_joint_def} - PlungerAnchorPrismaticJointDef({ - required Plunger plunger, - required PlungerAnchor anchor, - }) { - initialize( - plunger.body, - anchor.body, - plunger.body.position + anchor.body.position, - Vector2(16, BoardDimensions.bounds.height), - ); - enableLimit = true; - lowerTranslation = double.negativeInfinity; - enableMotor = true; - motorSpeed = 1000; - maxMotorForce = motorSpeed; - collideConnected = true; - } -} diff --git a/packages/pinball_components/pubspec.yaml b/packages/pinball_components/pubspec.yaml index 758ebe37..0f59d47e 100644 --- a/packages/pinball_components/pubspec.yaml +++ b/packages/pinball_components/pubspec.yaml @@ -20,6 +20,8 @@ dependencies: geometry: path: ../geometry intl: ^0.17.0 + pinball_audio: + path: ../pinball_audio pinball_flame: path: ../pinball_flame pinball_theme: @@ -27,6 +29,7 @@ dependencies: pinball_ui: path: ../pinball_ui + dev_dependencies: bloc_test: ^9.0.3 flame_test: ^1.3.0 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 0ee58cc9..cef7b9eb 100644 --- a/packages/pinball_components/sandbox/lib/stories/plunger/plunger_game.dart +++ b/packages/pinball_components/sandbox/lib/stories/plunger/plunger_game.dart @@ -26,8 +26,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 - 8.8, center.y), + plunger = Plunger()..initialPosition = Vector2(center.x - 8.8, center.y), ); await traceAllBodies(); } diff --git a/packages/pinball_components/test/src/components/plunger/behaviors/plunger_jointing_behavior_test.dart b/packages/pinball_components/test/src/components/plunger/behaviors/plunger_jointing_behavior_test.dart new file mode 100644 index 00000000..e69de29b diff --git a/packages/pinball_components/test/src/components/plunger/behaviors/plunger_key_controlling_behavior_test.dart b/packages/pinball_components/test/src/components/plunger/behaviors/plunger_key_controlling_behavior_test.dart new file mode 100644 index 00000000..773ee35c --- /dev/null +++ b/packages/pinball_components/test/src/components/plunger/behaviors/plunger_key_controlling_behavior_test.dart @@ -0,0 +1,5 @@ +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('PlungerKeyControllingBehavior', () {}); +} diff --git a/packages/pinball_components/test/src/components/plunger/behaviors/plunger_noise_behavior_test.dart b/packages/pinball_components/test/src/components/plunger/behaviors/plunger_noise_behavior_test.dart new file mode 100644 index 00000000..e69de29b diff --git a/packages/pinball_components/test/src/components/plunger_test.dart b/packages/pinball_components/test/src/components/plunger/plunger_test.dart similarity index 78% rename from packages/pinball_components/test/src/components/plunger_test.dart rename to packages/pinball_components/test/src/components/plunger/plunger_test.dart index e28bdaed..84701654 100644 --- a/packages/pinball_components/test/src/components/plunger_test.dart +++ b/packages/pinball_components/test/src/components/plunger/plunger_test.dart @@ -5,7 +5,7 @@ import 'package:flame_test/flame_test.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:pinball_components/pinball_components.dart'; -import '../../helpers/helpers.dart'; +import '../../../helpers/helpers.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); @@ -15,21 +15,23 @@ void main() { const compressionDistance = 0.0; test('can be instantiated', () { - expect( - Plunger(compressionDistance: compressionDistance), - isA(), - ); - expect( - Plunger.test(compressionDistance: compressionDistance), - isA(), - ); + expect(Plunger(), isA()); + expect(Plunger.test(), isA()); }); + flameTester.test( + 'loads correctly', + (game) async { + final plunger = Plunger(); + await game.ensureAdd(plunger); + expect(game.children, contains(plunger)); + }, + ); + flameTester.testGameWidget( 'renders correctly', setUp: (game, tester) async { - await game.ensureAdd(Plunger(compressionDistance: compressionDistance)); - + await game.ensureAdd(Plunger()); game.camera.followVector2(Vector2.zero()); game.camera.zoom = 4.1; }, @@ -53,80 +55,32 @@ void main() { }, ); - flameTester.test( - 'loads correctly', - (game) async { - await game.ready(); - final plunger = Plunger( - compressionDistance: compressionDistance, - ); - await game.ensureAdd(plunger); - - expect(game.contains(plunger), isTrue); - }, - ); - group('body', () { - flameTester.test( - 'is dynamic', - (game) async { - final plunger = Plunger( - compressionDistance: compressionDistance, - ); - await game.ensureAdd(plunger); - - expect(plunger.body.bodyType, equals(BodyType.dynamic)); - }, - ); - - flameTester.test( - 'ignores gravity', - (game) async { - final plunger = Plunger( - compressionDistance: compressionDistance, - ); - await game.ensureAdd(plunger); + test('is dynamic', () { + final body = Plunger().createBody(); + expect(body.bodyType, equals(BodyType.dynamic)); + }); - expect(plunger.body.gravityScale, equals(Vector2.zero())); - }, - ); + test('ignores gravity', () { + final body = Plunger().createBody(); + expect(body.gravityScale, equals(Vector2.zero())); + }); }); group('fixture', () { - flameTester.test( + test( 'exists', - (game) async { - final plunger = Plunger( - compressionDistance: compressionDistance, - ); - await game.ensureAdd(plunger); - - expect(plunger.body.fixtures[0], isA()); - }, - ); - - flameTester.test( - 'shape is a polygon', - (game) async { - final plunger = Plunger( - compressionDistance: compressionDistance, - ); - await game.ensureAdd(plunger); - - final fixture = plunger.body.fixtures[0]; - expect(fixture.shape.shapeType, equals(ShapeType.polygon)); + () async { + final body = Plunger().createBody(); + expect(body.fixtures[0], isA()); }, ); - flameTester.test( + test( 'has density', - (game) async { - final plunger = Plunger( - compressionDistance: compressionDistance, - ); - await game.ensureAdd(plunger); - - final fixture = plunger.body.fixtures[0]; + () { + final body = Plunger().createBody(); + final fixture = body.fixtures[0]; expect(fixture.density, greaterThan(0)); }, ); @@ -136,9 +90,7 @@ void main() { late Plunger plunger; setUp(() { - plunger = Plunger( - compressionDistance: compressionDistance, - ); + plunger = Plunger(); }); flameTester.testGameWidget( @@ -167,9 +119,7 @@ void main() { late Plunger plunger; setUp(() { - plunger = Plunger( - compressionDistance: compressionDistance, - ); + plunger = Plunger(); }); flameTester.test( @@ -200,9 +150,7 @@ void main() { late Plunger plunger; setUp(() { - plunger = Plunger( - compressionDistance: compressionDistance, - ); + plunger = Plunger(); }); flameTester.test( diff --git a/test/game/behaviors/ball_spawning_behavior_test.dart b/test/game/behaviors/ball_spawning_behavior_test.dart index d723c65e..dc272571 100644 --- a/test/game/behaviors/ball_spawning_behavior_test.dart +++ b/test/game/behaviors/ball_spawning_behavior_test.dart @@ -130,7 +130,7 @@ void main() { await game.pump([ behavior, ZCanvasComponent(), - Plunger.test(compressionDistance: 10), + Plunger.test(), ]); expect(game.descendants().whereType(), isEmpty); diff --git a/test/game/behaviors/ball_theming_behavior_test.dart b/test/game/behaviors/ball_theming_behavior_test.dart index 0c1e0b36..a59f3760 100644 --- a/test/game/behaviors/ball_theming_behavior_test.dart +++ b/test/game/behaviors/ball_theming_behavior_test.dart @@ -77,7 +77,7 @@ void main() { ball, behavior, ZCanvasComponent(), - Plunger.test(compressionDistance: 10), + Plunger.test(), ]); const dinoThemeState = CharacterThemeState(theme.DinoTheme());