refactor: used EmptyPinballGame

pull/147/head
alestiago 4 years ago
parent 4e0f0ffe29
commit aa4e0dcf61

@ -19,8 +19,6 @@ class PinballGame extends Forge2DGame
final PinballTheme theme; final PinballTheme theme;
late final Plunger plunger;
@override @override
void onAttach() { void onAttach() {
super.onAttach(); super.onAttach();
@ -75,7 +73,7 @@ class PinballGame extends Forge2DGame
} }
Future<void> _addPlunger() async { Future<void> _addPlunger() async {
plunger = Plunger(compressionDistance: 29) final plunger = Plunger(compressionDistance: 29)
..initialPosition = ..initialPosition =
BoardDimensions.bounds.center.toVector2() + Vector2(41.5, -49); BoardDimensions.bounds.center.toVector2() + Vector2(41.5, -49);
await add(plunger); await add(plunger);
@ -98,6 +96,10 @@ class PinballGame extends Forge2DGame
} }
void spawnBall() { void spawnBall() {
// TODO(alestiago): Remove once this logic is moved to controller.
final plunger = firstChild<Plunger>();
if (plunger == null) return;
final ball = ControlledBall.launch( final ball = ControlledBall.launch(
theme: theme, theme: theme,
)..initialPosition = Vector2( )..initialPosition = Vector2(

@ -25,7 +25,7 @@ void beginContact(Forge2DGame game, BodyComponent bodyA, BodyComponent bodyB) {
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized(); TestWidgetsFlutterBinding.ensureInitialized();
final flameTester = FlameTester(PinballGameTest.create); final flameTester = FlameTester(EmptyPinballGame.create);
group('FlutterForest', () { group('FlutterForest', () {
flameTester.test( flameTester.test(
@ -146,16 +146,15 @@ void main() {
}); });
final flameBlocTester = FlameBlocTester<PinballGame, GameBloc>( final flameBlocTester = FlameBlocTester<PinballGame, GameBloc>(
gameBuilder: PinballGameTest.create, gameBuilder: EmptyPinballGame.create,
blocBuilder: () => gameBloc, blocBuilder: () => gameBloc,
); );
flameBlocTester.testGameWidget( flameBlocTester.testGameWidget(
'add DashNestActivated event', 'add DashNestActivated event',
setUp: (game, tester) async { setUp: (game, tester) async {
await game.ready(); final flutterForest = FlutterForest();
final flutterForest = await game.ensureAdd(flutterForest);
game.descendants().whereType<FlutterForest>().first;
await game.ensureAdd(ball); await game.ensureAdd(ball);
final bumpers = final bumpers =
@ -177,15 +176,16 @@ void main() {
final flutterForest = FlutterForest(); final flutterForest = FlutterForest();
await game.ensureAdd(flutterForest); await game.ensureAdd(flutterForest);
await game.ensureAdd(ball); await game.ensureAdd(ball);
game.addContactCallback(BallScorePointsCallback(game));
final bumpers = final bumpers = flutterForest.descendants().whereType<ScorePoints>();
flutterForest.descendants().whereType<DashNestBumper>();
for (final bumper in bumpers) { for (final bumper in bumpers) {
beginContact(game, bumper, ball); beginContact(game, bumper, ball);
final points = (bumper as ScorePoints).points;
verify( verify(
() => gameBloc.add(Scored(points: points)), () => gameBloc.add(
Scored(points: bumper.points),
),
).called(1); ).called(1);
} }
}, },

@ -1,3 +1,4 @@
import 'package:flutter/services.dart';
import 'package:pinball/game/game.dart'; import 'package:pinball/game/game.dart';
import 'package:pinball_theme/pinball_theme.dart'; import 'package:pinball_theme/pinball_theme.dart';
@ -20,3 +21,16 @@ extension DebugPinballGameTest on DebugPinballGame {
), ),
); );
} }
class EmptyPinballGame extends PinballGame {
EmptyPinballGame({required PinballTheme theme}) : super(theme: theme);
@override
Future<void> onLoad() async {}
static PinballGame create() => EmptyPinballGame(
theme: const PinballTheme(
characterTheme: DashTheme(),
),
);
}

Loading…
Cancel
Save