feat: made Flipper use InitialPosition

pull/50/head
alestiago 4 years ago
parent a5d4c4e393
commit c4f6f46bfd

@ -59,8 +59,7 @@ class _BottomGroupSide extends Component {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: _side, side: _side,
position: _position, )..initialPosition = _position;
);
final baseboard = Baseboard(side: _side) final baseboard = Baseboard(side: _side)
..initialPosition = _position + ..initialPosition = _position +
Vector2( Vector2(

@ -13,19 +13,15 @@ import 'package:pinball/game/game.dart';
/// ///
/// [Flipper] can be controlled by the player in an arc motion. /// [Flipper] can be controlled by the player in an arc motion.
/// {@endtemplate flipper} /// {@endtemplate flipper}
class Flipper extends BodyComponent with KeyboardHandler { class Flipper extends BodyComponent with KeyboardHandler, InitialPosition {
/// {@macro flipper} /// {@macro flipper}
Flipper._({ Flipper._({
required Vector2 position,
required this.side, required this.side,
required List<LogicalKeyboardKey> keys, required List<LogicalKeyboardKey> keys,
}) : _position = position, }) : _keys = keys;
_keys = keys;
Flipper._left({ Flipper._left()
required Vector2 position, : this._(
}) : this._(
position: position,
side: BoardSide.left, side: BoardSide.left,
keys: [ keys: [
LogicalKeyboardKey.arrowLeft, LogicalKeyboardKey.arrowLeft,
@ -33,10 +29,8 @@ class Flipper extends BodyComponent with KeyboardHandler {
], ],
); );
Flipper._right({ Flipper._right()
required Vector2 position, : this._(
}) : this._(
position: position,
side: BoardSide.right, side: BoardSide.right,
keys: [ keys: [
LogicalKeyboardKey.arrowRight, LogicalKeyboardKey.arrowRight,
@ -50,13 +44,12 @@ class Flipper extends BodyComponent with KeyboardHandler {
/// horizontally, also have different [LogicalKeyboardKey]s that control them. /// horizontally, also have different [LogicalKeyboardKey]s that control them.
factory Flipper.fromSide({ factory Flipper.fromSide({
required BoardSide side, required BoardSide side,
required Vector2 position,
}) { }) {
switch (side) { switch (side) {
case BoardSide.left: case BoardSide.left:
return Flipper._left(position: position); return Flipper._left();
case BoardSide.right: case BoardSide.right:
return Flipper._right(position: position); return Flipper._right();
} }
} }
@ -82,9 +75,6 @@ class Flipper extends BodyComponent with KeyboardHandler {
/// whereas a [Flipper] with [BoardSide.right] has a clockwise arc motion. /// whereas a [Flipper] with [BoardSide.right] has a clockwise arc motion.
final BoardSide side; final BoardSide side;
/// The initial position of the [Flipper] body.
final Vector2 _position;
/// The [LogicalKeyboardKey]s that will control the [Flipper]. /// The [LogicalKeyboardKey]s that will control the [Flipper].
/// ///
/// [onKeyEvent] method listens to when one of these keys is pressed. /// [onKeyEvent] method listens to when one of these keys is pressed.
@ -201,7 +191,7 @@ class Flipper extends BodyComponent with KeyboardHandler {
final bodyDef = BodyDef() final bodyDef = BodyDef()
..gravityScale = 0 ..gravityScale = 0
..type = BodyType.dynamic ..type = BodyType.dynamic
..position = _position; ..position = initialPosition;
final body = world.createBody(bodyDef); final body = world.createBody(bodyDef);
_createFixtureDefs().forEach(body.createFixture); _createFixtureDefs().forEach(body.createFixture);

@ -22,12 +22,10 @@ void main() {
(game) async { (game) async {
final leftFlipper = Flipper.fromSide( final leftFlipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
final rightFlipper = Flipper.fromSide( final rightFlipper = Flipper.fromSide(
side: BoardSide.right, side: BoardSide.right,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
await game.ready(); await game.ready();
await game.ensureAddAll([leftFlipper, rightFlipper]); await game.ensureAddAll([leftFlipper, rightFlipper]);
@ -40,15 +38,13 @@ void main() {
test('sets BoardSide', () { test('sets BoardSide', () {
final leftFlipper = Flipper.fromSide( final leftFlipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
expect(leftFlipper.side, equals(leftFlipper.side)); expect(leftFlipper.side, equals(leftFlipper.side));
final rightFlipper = Flipper.fromSide( final rightFlipper = Flipper.fromSide(
side: BoardSide.right, side: BoardSide.right,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
expect(rightFlipper.side, equals(rightFlipper.side)); expect(rightFlipper.side, equals(rightFlipper.side));
}); });
}); });
@ -60,8 +56,7 @@ void main() {
final position = Vector2.all(10); final position = Vector2.all(10);
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: position, )..initialPosition = position;
);
await game.ensureAdd(flipper); await game.ensureAdd(flipper);
game.contains(flipper); game.contains(flipper);
@ -74,8 +69,7 @@ void main() {
(game) async { (game) async {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
await game.ensureAdd(flipper); await game.ensureAdd(flipper);
expect(flipper.body.bodyType, equals(BodyType.dynamic)); expect(flipper.body.bodyType, equals(BodyType.dynamic));
@ -87,8 +81,7 @@ void main() {
(game) async { (game) async {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
await game.ensureAdd(flipper); await game.ensureAdd(flipper);
expect(flipper.body.gravityScale, isZero); expect(flipper.body.gravityScale, isZero);
@ -100,8 +93,7 @@ void main() {
(game) async { (game) async {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
final ball = Ball(position: Vector2.zero()); final ball = Ball(position: Vector2.zero());
await game.ready(); await game.ready();
@ -121,8 +113,7 @@ void main() {
(game) async { (game) async {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
await game.ensureAdd(flipper); await game.ensureAdd(flipper);
expect(flipper.body.fixtures.length, equals(3)); expect(flipper.body.fixtures.length, equals(3));
@ -134,8 +125,7 @@ void main() {
(game) async { (game) async {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
await game.ensureAdd(flipper); await game.ensureAdd(flipper);
final fixtures = flipper.body.fixtures; final fixtures = flipper.body.fixtures;
@ -165,8 +155,7 @@ void main() {
setUp(() { setUp(() {
flipper = Flipper.fromSide( flipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
}); });
testRawKeyDownEvents(leftKeys, (event) { testRawKeyDownEvents(leftKeys, (event) {
@ -232,8 +221,7 @@ void main() {
setUp(() { setUp(() {
flipper = Flipper.fromSide( flipper = Flipper.fromSide(
side: BoardSide.right, side: BoardSide.right,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
}); });
testRawKeyDownEvents(rightKeys, (event) { testRawKeyDownEvents(rightKeys, (event) {
@ -302,8 +290,7 @@ void main() {
(game) async { (game) async {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
await game.ensureAdd(flipper); await game.ensureAdd(flipper);
final flipperAnchor = FlipperAnchor(flipper: flipper); final flipperAnchor = FlipperAnchor(flipper: flipper);
@ -318,8 +305,7 @@ void main() {
(game) async { (game) async {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.right, side: BoardSide.right,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
await game.ensureAdd(flipper); await game.ensureAdd(flipper);
final flipperAnchor = FlipperAnchor(flipper: flipper); final flipperAnchor = FlipperAnchor(flipper: flipper);
@ -337,8 +323,7 @@ void main() {
(game) async { (game) async {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
await game.ensureAdd(flipper); await game.ensureAdd(flipper);
final flipperAnchor = FlipperAnchor(flipper: flipper); final flipperAnchor = FlipperAnchor(flipper: flipper);
@ -359,8 +344,7 @@ void main() {
(game) async { (game) async {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
await game.ensureAdd(flipper); await game.ensureAdd(flipper);
final flipperAnchor = FlipperAnchor(flipper: flipper); final flipperAnchor = FlipperAnchor(flipper: flipper);
@ -380,8 +364,7 @@ void main() {
(game) async { (game) async {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.right, side: BoardSide.right,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
await game.ensureAdd(flipper); await game.ensureAdd(flipper);
final flipperAnchor = FlipperAnchor(flipper: flipper); final flipperAnchor = FlipperAnchor(flipper: flipper);
@ -406,8 +389,7 @@ void main() {
(game) async { (game) async {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.left, side: BoardSide.left,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
await game.ensureAdd(flipper); await game.ensureAdd(flipper);
final flipperAnchor = FlipperAnchor(flipper: flipper); final flipperAnchor = FlipperAnchor(flipper: flipper);
@ -433,8 +415,7 @@ void main() {
(game) async { (game) async {
final flipper = Flipper.fromSide( final flipper = Flipper.fromSide(
side: BoardSide.right, side: BoardSide.right,
position: Vector2.zero(), )..initialPosition = Vector2.zero();
);
await game.ensureAdd(flipper); await game.ensureAdd(flipper);
final flipperAnchor = FlipperAnchor(flipper: flipper); final flipperAnchor = FlipperAnchor(flipper: flipper);

Loading…
Cancel
Save