refactor: refactored multipliers and coverage

pull/231/head
RuiAlonso 3 years ago
parent 59c70e5b1e
commit 64dfcaf35b

@ -12,27 +12,23 @@ class Multipliers extends Component {
Multipliers() Multipliers()
: super( : super(
children: [ children: [
Multiplier( Multiplier.x3(
value: MultiplierValue.x2,
position: Vector2(-19.5, -2), position: Vector2(-19.5, -2),
rotation: -15 * math.pi / 180, rotation: -15 * math.pi / 180,
), ),
Multiplier( Multiplier.x3(
value: MultiplierValue.x3,
position: Vector2(13, -9.4), position: Vector2(13, -9.4),
rotation: 15 * math.pi / 180, rotation: 15 * math.pi / 180,
), ),
Multiplier( Multiplier.x4(
value: MultiplierValue.x4,
position: Vector2(0, -21.2), position: Vector2(0, -21.2),
rotation: 0,
), ),
Multiplier( Multiplier.x5(
value: MultiplierValue.x5,
position: Vector2(-8.5, -28), position: Vector2(-8.5, -28),
rotation: -3 * math.pi / 180, rotation: -3 * math.pi / 180,
), ),
Multiplier( Multiplier.x6(
value: MultiplierValue.x6,
position: Vector2(10, -30.7), position: Vector2(10, -30.7),
rotation: 8 * math.pi / 180, rotation: 8 * math.pi / 180,
), ),

@ -8,12 +8,7 @@ part 'multiplier_state.dart';
class MultiplierCubit extends Cubit<MultiplierState> { class MultiplierCubit extends Cubit<MultiplierState> {
MultiplierCubit(MultiplierValue multiplierValue) MultiplierCubit(MultiplierValue multiplierValue)
: super( : super(MultiplierState.initial(multiplierValue));
MultiplierState(
value: multiplierValue,
spriteState: MultiplierSpriteState.dimmed,
),
);
/// Event added when the game current multiplier changes. /// Event added when the game current multiplier changes.
void next(int multiplier) { void next(int multiplier) {

@ -15,6 +15,12 @@ class MultiplierState extends Equatable {
required this.spriteState, required this.spriteState,
}); });
const MultiplierState.initial(MultiplierValue multiplierValue)
: this(
value: multiplierValue,
spriteState: MultiplierSpriteState.dimmed,
);
/// Current value for the [Multiplier] /// Current value for the [Multiplier]
final MultiplierValue value; final MultiplierValue value;

@ -1,5 +1,5 @@
// ignore_for_file: public_member_api_docs // ignore_for_file: public_member_api_docs
import 'dart:math' as math;
import 'package:flame/components.dart'; import 'package:flame/components.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:pinball_components/gen/assets.gen.dart'; import 'package:pinball_components/gen/assets.gen.dart';
@ -13,16 +13,71 @@ export 'cubit/multiplier_cubit.dart';
/// {@endtemplate} /// {@endtemplate}
class Multiplier extends Component { class Multiplier extends Component {
/// {@macro multiplier} /// {@macro multiplier}
Multiplier({ Multiplier._({
required MultiplierValue value, required MultiplierValue value,
required Vector2 position, required Vector2 position,
double rotation = 0, required double rotation,
required this.bloc,
}) : _value = value, }) : _value = value,
_position = position, _position = position,
_rotation = rotation, _rotation = rotation,
bloc = MultiplierCubit(value),
super(); super();
/// {@macro multiplier}
Multiplier.x2({
required Vector2 position,
required double rotation,
}) : this._(
value: MultiplierValue.x2,
position: position,
rotation: rotation,
bloc: MultiplierCubit(MultiplierValue.x2),
);
/// {@macro multiplier}
Multiplier.x3({
required Vector2 position,
required double rotation,
}) : this._(
value: MultiplierValue.x3,
position: position,
rotation: rotation,
bloc: MultiplierCubit(MultiplierValue.x3),
);
/// {@macro multiplier}
Multiplier.x4({
required Vector2 position,
required double rotation,
}) : this._(
value: MultiplierValue.x4,
position: position,
rotation: rotation,
bloc: MultiplierCubit(MultiplierValue.x4),
);
/// {@macro multiplier}
Multiplier.x5({
required Vector2 position,
required double rotation,
}) : this._(
value: MultiplierValue.x5,
position: position,
rotation: rotation,
bloc: MultiplierCubit(MultiplierValue.x5),
);
/// {@macro multiplier}
Multiplier.x6({
required Vector2 position,
required double rotation,
}) : this._(
value: MultiplierValue.x6,
position: position,
rotation: rotation,
bloc: MultiplierCubit(MultiplierValue.x6),
);
/// Creates a [Multiplier] without any children. /// Creates a [Multiplier] without any children.
/// ///
/// This can be used for testing [Multiplier]'s behaviors in isolation. /// This can be used for testing [Multiplier]'s behaviors in isolation.

@ -28,6 +28,59 @@ void main() {
]; ];
final flameTester = FlameTester(() => TestGame(assets)); final flameTester = FlameTester(() => TestGame(assets));
flameTester.test('"x2" loads correctly', (game) async {
final multiplier = Multiplier.x2(
position: Vector2.zero(),
rotation: 0,
);
await game.ensureAdd(multiplier);
expect(game.contains(multiplier), isTrue);
});
flameTester.test('"x2" loads correctly', (game) async {
final multiplier = Multiplier.x2(
position: Vector2.zero(),
rotation: 0,
);
await game.ensureAdd(multiplier);
expect(game.contains(multiplier), isTrue);
});
flameTester.test('"x3" loads correctly', (game) async {
final multiplier = Multiplier.x3(
position: Vector2.zero(),
rotation: 0,
);
await game.ensureAdd(multiplier);
expect(game.contains(multiplier), isTrue);
});
flameTester.test('"x4" loads correctly', (game) async {
final multiplier = Multiplier.x4(
position: Vector2.zero(),
rotation: 0,
);
await game.ensureAdd(multiplier);
expect(game.contains(multiplier), isTrue);
});
flameTester.test('"x5" loads correctly', (game) async {
final multiplier = Multiplier.x5(
position: Vector2.zero(),
rotation: 0,
);
await game.ensureAdd(multiplier);
expect(game.contains(multiplier), isTrue);
});
flameTester.test('"x6" loads correctly', (game) async {
final multiplier = Multiplier.x6(
position: Vector2.zero(),
rotation: 0,
);
await game.ensureAdd(multiplier);
expect(game.contains(multiplier), isTrue);
});
group('renders correctly', () { group('renders correctly', () {
group('x2', () { group('x2', () {
const multiplierValue = MultiplierValue.x2; const multiplierValue = MultiplierValue.x2;

Loading…
Cancel
Save