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 { Future<void> onLoad() async {
final direction = _side.direction; final direction = _side.direction;
final flipper = Flipper.fromSide( final flipper = Flipper(
side: _side, side: _side,
)..initialPosition = _position; )..initialPosition = _position;
final baseboard = Baseboard(side: _side) final baseboard = Baseboard(side: _side)

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

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

Loading…
Cancel
Save