diff --git a/lib/game/components/backbox/backbox.dart b/lib/game/components/backbox/backbox.dart index dc5041f0..ca0e5040 100644 --- a/lib/game/components/backbox/backbox.dart +++ b/lib/game/components/backbox/backbox.dart @@ -1,6 +1,8 @@ import 'dart:async'; import 'package:flame/components.dart'; +import 'package:flutter/material.dart'; +import 'package:leaderboard_repository/leaderboard_repository.dart'; import 'package:pinball/game/components/backbox/bloc/backbox_bloc.dart'; import 'package:pinball/game/components/backbox/displays/displays.dart'; import 'package:pinball/game/pinball_game.dart'; @@ -14,18 +16,14 @@ import 'package:pinball_theme/pinball_theme.dart' hide Assets; class Backbox extends PositionComponent with HasGameRef, ZIndex { /// {@macro backbox} Backbox({ + required LeaderboardRepository leaderboardRepository, + }) : _bloc = BackboxBloc(leaderboardRepository: leaderboardRepository); + + /// {@macro backbox} + @visibleForTesting + Backbox.test({ required BackboxBloc bloc, - }) : _bloc = bloc, - super( - position: Vector2(0, -87), - anchor: Anchor.bottomCenter, - children: [ - _BackboxSpriteComponent(), - ], - ) { - zIndex = ZIndexes.backbox; - add(_display = Component()); - } + }) : _bloc = bloc; late final Component _display; final BackboxBloc _bloc; @@ -33,6 +31,13 @@ class Backbox extends PositionComponent with HasGameRef, ZIndex { @override Future onLoad() async { + position = Vector2(0, -87); + anchor = Anchor.bottomCenter; + zIndex = ZIndexes.backbox; + + await add(_BackboxSpriteComponent()); + await add(_display = Component()); + _subscription = _bloc.stream.listen((state) { _display.children.removeWhere((_) => true); _build(state); diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index e5edc63e..b022ea6a 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -9,7 +9,6 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:leaderboard_repository/leaderboard_repository.dart'; import 'package:pinball/game/behaviors/behaviors.dart'; -import 'package:pinball/game/components/backbox/bloc/backbox_bloc.dart'; import 'package:pinball/game/game.dart'; import 'package:pinball/l10n/l10n.dart'; import 'package:pinball_audio/pinball_audio.dart'; @@ -54,7 +53,7 @@ class PinballGame extends PinballForge2DGame final machine = [ BoardBackgroundSpriteComponent(), Boundaries(), - Backbox(bloc: BackboxBloc(leaderboardRepository: leaderboardRepository)), + Backbox(leaderboardRepository: leaderboardRepository), ]; final decals = [ GoogleWord(position: Vector2(-4.25, 1.8)), diff --git a/test/game/components/backbox/backbox_test.dart b/test/game/components/backbox/backbox_test.dart index f319d0fe..966ff7c2 100644 --- a/test/game/components/backbox/backbox_test.dart +++ b/test/game/components/backbox/backbox_test.dart @@ -91,7 +91,7 @@ void main() { flameTester.test( 'loads correctly', (game) async { - final backbox = Backbox(bloc: bloc); + final backbox = Backbox.test(bloc: bloc); await game.ensureAdd(backbox); expect(game.children, contains(backbox)); @@ -106,7 +106,7 @@ void main() { ..followVector2(Vector2(0, -130)) ..zoom = 6; await game.ensureAdd( - Backbox(bloc: bloc), + Backbox.test(bloc: bloc), ); await tester.pump(); }, @@ -121,7 +121,7 @@ void main() { flameTester.test( 'requestInitials adds InitialsInputDisplay', (game) async { - final backbox = Backbox( + final backbox = Backbox.test( bloc: BackboxBloc( leaderboardRepository: _MockLeaderboardRepository(), ), @@ -153,7 +153,7 @@ void main() { Stream.value(state), initialState: state, ); - final backbox = Backbox(bloc: bloc); + final backbox = Backbox.test(bloc: bloc); await game.ensureAdd(backbox); game.onKeyEvent(_mockKeyUp(LogicalKeyboardKey.enter), {}); @@ -177,7 +177,7 @@ void main() { Stream.value(InitialsSuccessState()), initialState: InitialsSuccessState(), ); - final backbox = Backbox(bloc: bloc); + final backbox = Backbox.test(bloc: bloc); await game.ensureAdd(backbox); expect( @@ -198,7 +198,7 @@ void main() { Stream.value(InitialsFailureState()), initialState: InitialsFailureState(), ); - final backbox = Backbox(bloc: bloc); + final backbox = Backbox.test(bloc: bloc); await game.ensureAdd(backbox); expect( @@ -214,7 +214,7 @@ void main() { flameTester.test( 'closes the subscription when it is removed', (game) async { - final backbox = Backbox(bloc: bloc); + final backbox = Backbox.test(bloc: bloc); await game.ensureAdd(backbox); backbox.removeFromParent();