diff --git a/lib/game/bloc/game_bloc.dart b/lib/game/bloc/game_bloc.dart index 74685215..663fee35 100644 --- a/lib/game/bloc/game_bloc.dart +++ b/lib/game/bloc/game_bloc.dart @@ -15,6 +15,7 @@ class GameBloc extends Bloc { } static const bonusWord = 'GOOGLE'; + static const bonusWordScore = 10000; void _onBallLost(BallLost event, Emitter emit) { if (state.balls > 0) { @@ -44,6 +45,7 @@ class GameBloc extends Bloc { ], ), ); + add(const Scored(points: bonusWordScore)); } else { emit( state.copyWith(activatedBonusLetters: newBonusLetters), diff --git a/lib/game/components/plunger.dart b/lib/game/components/plunger.dart index bf63b462..9bcde451 100644 --- a/lib/game/components/plunger.dart +++ b/lib/game/components/plunger.dart @@ -74,6 +74,25 @@ class Plunger extends BodyComponent with KeyboardHandler { return true; } + + /// 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(jointDef); + } + + @override + Future onLoad() async { + await super.onLoad(); + await _anchorToJoint(); + } } /// {@template plunger_anchor} diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index 633c2351..b67a8dad 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -101,7 +101,6 @@ class PinballGame extends Forge2DGame } Future _addPlunger() async { - late PlungerAnchor plungerAnchor; final compressionDistance = camera.viewport.effectiveSize.y / 12; await add( @@ -115,14 +114,6 @@ class PinballGame extends Forge2DGame compressionDistance: compressionDistance, ), ); - await add(plungerAnchor = PlungerAnchor(plunger: plunger)); - - world.createJoint( - PlungerAnchorPrismaticJointDef( - plunger: plunger, - anchor: plungerAnchor, - ), - ); } Future _addBaseboards() async { diff --git a/test/game/bloc/game_bloc_test.dart b/test/game/bloc/game_bloc_test.dart index ad1d6c55..18e50858 100644 --- a/test/game/bloc/game_bloc_test.dart +++ b/test/game/bloc/game_bloc_test.dart @@ -177,6 +177,12 @@ void main() { activatedBonusLetters: [], bonusHistory: [GameBonus.word], ), + GameState( + score: GameBloc.bonusWordScore, + balls: 3, + activatedBonusLetters: [], + bonusHistory: [GameBonus.word], + ), ], ); });