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(
side: _side,
position: _position,
);
)..initialPosition = _position;
final baseboard = Baseboard(side: _side)
..initialPosition = _position +
Vector2(

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

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

Loading…
Cancel
Save