refactor: removed verbose constructors

pull/72/head
alestiago 4 years ago
parent c6f9e87b63
commit a5013862e4

@ -129,7 +129,7 @@ class _BottomGroupSide extends Component {
Future<void> onLoad() async {
final direction = _side.direction;
final flipper = Flipper.fromSide(
final flipper = Flipper(
side: _side,
)..initialPosition = _position;
final baseboard = Baseboard(side: _side)

@ -7,6 +7,16 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:pinball/game/game.dart';
const _leftFlipperKeys = [
LogicalKeyboardKey.arrowLeft,
LogicalKeyboardKey.keyA,
];
const _rightFlipperKeys = [
LogicalKeyboardKey.arrowRight,
LogicalKeyboardKey.keyD,
];
/// {@template flipper}
/// A bat, typically found in pairs at the bottom of the board.
///
@ -14,47 +24,13 @@ import 'package:pinball/game/game.dart';
/// {@endtemplate flipper}
class Flipper extends BodyComponent with KeyboardHandler, InitialPosition {
/// {@macro flipper}
Flipper._({
Flipper({
required this.side,
required List<LogicalKeyboardKey> keys,
}) : _keys = keys {
}) : _keys = side.isLeft ? _leftFlipperKeys : _rightFlipperKeys {
// TODO(alestiago): Remove paint with asset and size correctly.
paint = Paint()..color = Colors.transparent;
}
Flipper._left()
: this._(
side: BoardSide.left,
keys: [
LogicalKeyboardKey.arrowLeft,
LogicalKeyboardKey.keyA,
],
);
Flipper._right()
: this._(
side: BoardSide.right,
keys: [
LogicalKeyboardKey.arrowRight,
LogicalKeyboardKey.keyD,
],
);
/// Constructs a [Flipper] from a [BoardSide].
///
/// A [Flipper._right] and [Flipper._left] besides being mirrored
/// horizontally, also have different [LogicalKeyboardKey]s that control them.
factory Flipper.fromSide({
required BoardSide side,
}) {
switch (side) {
case BoardSide.left:
return Flipper._left();
case BoardSide.right:
return Flipper._right();
}
}
/// Asset location of the sprite that renders with the [Flipper].
///
/// Sprite is preloaded by [PinballGameAssetsX].
@ -251,10 +227,10 @@ class _FlipperAnchorRevoluteJointDef extends RevoluteJointDef {
lowerAngle = upperAngle = angle;
}
final BoardSide side;
/// The total angle of the arc motion.
static const _sweepingAngle = math.pi / 3.5;
final BoardSide side;
}
/// {@template flipper_anchor}

@ -21,10 +21,10 @@ void main() {
flameTester.test(
'loads correctly',
(game) async {
final leftFlipper = Flipper.fromSide(
final leftFlipper = Flipper(
side: BoardSide.left,
);
final rightFlipper = Flipper.fromSide(
final rightFlipper = Flipper(
side: BoardSide.right,
);
await game.ready();
@ -37,13 +37,13 @@ void main() {
group('constructor', () {
test('sets BoardSide', () {
final leftFlipper = Flipper.fromSide(
final leftFlipper = Flipper(
side: BoardSide.left,
);
expect(leftFlipper.side, equals(leftFlipper.side));
final rightFlipper = Flipper.fromSide(
final rightFlipper = Flipper(
side: BoardSide.right,
);
expect(rightFlipper.side, equals(rightFlipper.side));
@ -54,7 +54,7 @@ void main() {
flameTester.test(
'is dynamic',
(game) async {
final flipper = Flipper.fromSide(
final flipper = Flipper(
side: BoardSide.left,
);
await game.ensureAdd(flipper);
@ -66,7 +66,7 @@ void main() {
flameTester.test(
'ignores gravity',
(game) async {
final flipper = Flipper.fromSide(
final flipper = Flipper(
side: BoardSide.left,
);
await game.ensureAdd(flipper);
@ -78,7 +78,7 @@ void main() {
flameTester.test(
'has greater mass than Ball',
(game) async {
final flipper = Flipper.fromSide(
final flipper = Flipper(
side: BoardSide.left,
);
final ball = Ball();
@ -98,7 +98,7 @@ void main() {
flameTester.test(
'has three',
(game) async {
final flipper = Flipper.fromSide(
final flipper = Flipper(
side: BoardSide.left,
);
await game.ensureAdd(flipper);
@ -110,7 +110,7 @@ void main() {
flameTester.test(
'has density',
(game) async {
final flipper = Flipper.fromSide(
final flipper = Flipper(
side: BoardSide.left,
);
await game.ensureAdd(flipper);
@ -140,7 +140,7 @@ void main() {
late Flipper flipper;
setUp(() {
flipper = Flipper.fromSide(
flipper = Flipper(
side: BoardSide.left,
);
});
@ -206,7 +206,7 @@ void main() {
late Flipper flipper;
setUp(() {
flipper = Flipper.fromSide(
flipper = Flipper(
side: BoardSide.right,
);
});

Loading…
Cancel
Save