diff --git a/lib/game/components/flipper.dart b/lib/game/components/flipper.dart index 099db3fa..87830035 100644 --- a/lib/game/components/flipper.dart +++ b/lib/game/components/flipper.dart @@ -193,12 +193,9 @@ class FlipperAnchorRevoluteJointDef extends RevoluteJointDef { /// its resting position. // TODO(alestiago): consider refactor once the issue is solved: // https://github.com/flame-engine/forge2d/issues/36 - static void unlock(RevoluteJoint joint) { - assert(joint.bodyA is Flipper && joint.bodyB is Anchor, 'Invalid joint.'); - final flipper = joint.bodyA as Flipper; - + static void unlock(RevoluteJoint joint, BoardSide side) { late final double upperLimit, lowerLimit; - switch (flipper.side) { + switch (side) { case BoardSide.left: lowerLimit = joint.lowerLimit * -1; upperLimit = joint.upperLimit; diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index b162aa3c..2fe382e3 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -81,8 +81,14 @@ class PinballGame extends Forge2DGame with FlameBloc, KeyboardEvents { await _leftFlipper.hasMounted.future; await _rightFlipper.hasMounted.future; - FlipperAnchorRevoluteJointDef.unlock(_leftFlipperRevoluteJoint); - FlipperAnchorRevoluteJointDef.unlock(_rightFlipperRevoluteJoint); + FlipperAnchorRevoluteJointDef.unlock( + _leftFlipperRevoluteJoint, + BoardSide.left, + ); + FlipperAnchorRevoluteJointDef.unlock( + _rightFlipperRevoluteJoint, + BoardSide.right, + ); } @override