From b67b08a18de34cabfa9d2ea831728dcc72e7dc10 Mon Sep 17 00:00:00 2001 From: Alejandro Santiago Date: Fri, 1 Apr 2022 21:16:54 +0100 Subject: [PATCH] refactor: moved ChromeDino to pinball_components (#134) --- lib/game/components/components.dart | 1 - .../lib/src}/components/chrome_dino.dart | 4 +- .../lib/src/components/components.dart | 1 + .../test/src/components/chrome_dino_test.dart | 38 +++++++++++++++++++ test/game/components/chrome_dino_test.dart | 23 ----------- 5 files changed, 41 insertions(+), 26 deletions(-) rename {lib/game => packages/pinball_components/lib/src}/components/chrome_dino.dart (98%) create mode 100644 packages/pinball_components/test/src/components/chrome_dino_test.dart delete mode 100644 test/game/components/chrome_dino_test.dart diff --git a/lib/game/components/components.dart b/lib/game/components/components.dart index dae1e6ef..b5aadc97 100644 --- a/lib/game/components/components.dart +++ b/lib/game/components/components.dart @@ -1,6 +1,5 @@ export 'board.dart'; export 'bonus_word.dart'; -export 'chrome_dino.dart'; export 'controlled_ball.dart'; export 'controlled_flipper.dart'; export 'flutter_forest.dart'; diff --git a/lib/game/components/chrome_dino.dart b/packages/pinball_components/lib/src/components/chrome_dino.dart similarity index 98% rename from lib/game/components/chrome_dino.dart rename to packages/pinball_components/lib/src/components/chrome_dino.dart index af086e0e..2caa40c8 100644 --- a/lib/game/components/chrome_dino.dart +++ b/packages/pinball_components/lib/src/components/chrome_dino.dart @@ -43,7 +43,7 @@ class ChromeDino extends BodyComponent with InitialPosition { await add( TimerComponent( period: 1, - onTick: joint.swivel, + onTick: joint._swivel, repeat: true, ), ); @@ -150,7 +150,7 @@ class _ChromeDinoJoint extends RevoluteJoint { _ChromeDinoJoint(_ChromeDinoAnchorRevoluteJointDef def) : super(def); /// Sweeps the [ChromeDino] up and down repeatedly. - void swivel() { + void _swivel() { setMotorSpeed(-motorSpeed); } } diff --git a/packages/pinball_components/lib/src/components/components.dart b/packages/pinball_components/lib/src/components/components.dart index 44937e60..87e8c054 100644 --- a/packages/pinball_components/lib/src/components/components.dart +++ b/packages/pinball_components/lib/src/components/components.dart @@ -2,6 +2,7 @@ export 'ball.dart'; export 'baseboard.dart'; export 'board_dimensions.dart'; export 'board_side.dart'; +export 'chrome_dino.dart'; export 'dash_nest_bumper.dart'; export 'dino_walls.dart'; export 'fire_effect.dart'; diff --git a/packages/pinball_components/test/src/components/chrome_dino_test.dart b/packages/pinball_components/test/src/components/chrome_dino_test.dart new file mode 100644 index 00000000..8a0adb85 --- /dev/null +++ b/packages/pinball_components/test/src/components/chrome_dino_test.dart @@ -0,0 +1,38 @@ +// ignore_for_file: cascade_invocations + +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:flame_test/flame_test.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:pinball_components/pinball_components.dart'; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + final flameTester = FlameTester(Forge2DGame.new); + + group('ChromeDino', () { + flameTester.test( + 'loads correctly', + (game) async { + final chromeDino = ChromeDino(); + await game.ensureAdd(chromeDino); + + expect(game.contains(chromeDino), isTrue); + }, + ); + + flameTester.test( + 'swivels', + (game) async { + // TODO(alestiago): Write golden tests to check the + // swivel animation. + final chromeDino = ChromeDino(); + await game.ensureAdd(chromeDino); + + final previousPosition = chromeDino.body.position.clone(); + game.update(64); + + expect(chromeDino.body.position, isNot(equals(previousPosition))); + }, + ); + }); +} diff --git a/test/game/components/chrome_dino_test.dart b/test/game/components/chrome_dino_test.dart deleted file mode 100644 index af53ffea..00000000 --- a/test/game/components/chrome_dino_test.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:flame_forge2d/flame_forge2d.dart'; -import 'package:flame_test/flame_test.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:pinball/game/game.dart'; - -void main() { - TestWidgetsFlutterBinding.ensureInitialized(); - final flameTester = FlameTester(Forge2DGame.new); - - group('ChromeDino', () { - flameTester.test( - 'loads correctly', - (game) async { - final chromeDino = ChromeDino(); - - await game.ready(); - await game.ensureAdd(chromeDino); - - expect(game.contains(chromeDino), isTrue); - }, - ); - }); -}