feat: multipliers behavior with multiplier from gamebloc

pull/231/head
RuiAlonso 3 years ago
parent 0440ce5eac
commit 8d17ee8e67

@ -10,16 +10,17 @@ class MultipliersBehavior extends Component
void onMount() {
super.onMount();
// TODO(ruimiguel): filter only when multiplier has change, not every other
// state.
var previousMultiplier = 1;
// TODO(ruimiguel): filter only when multiplier has change.
gameRef.read<GameBloc>().stream.listen((state) {
if (state.multiplier != previousMultiplier) {
previousMultiplier = state.multiplier;
final multipliers = parent.children.whereType<Multiplier>();
for (final multiplier in multipliers) {
// TODO(ruimiguel): use here GameState.multiplier when merged
// https://github.com/VGVentures/pinball/pull/213.
final currentMultiplier = state.score.bitLength % 6 + 1;
multiplier.bloc.toggle(currentMultiplier);
multiplier.bloc.toggle(state.multiplier);
}
}
});
}

@ -49,10 +49,24 @@ void main() {
flameBlocTester.testGameWidget(
'calls toggle once per each multiplier when GameBloc emit state',
setUp: (game, tester) async {
final multiplierCubit = MockMultiplierCubit();
final behavior = MultipliersBehavior();
final parent = Multipliers.test();
final multiplier = MockMultiplier();
final multipliers = [multiplier];
final multipliers = [
Multiplier.test(
value: MultiplierValue.x2,
bloc: multiplierCubit,
),
];
whenListen(
multiplierCubit,
const Stream<MultiplierState>.empty(),
initialState: MultiplierState(
value: MultiplierValue.x2,
spriteState: MultiplierSpriteState.dimmed,
),
);
final streamController = StreamController<GameState>();
whenListen(
@ -60,18 +74,13 @@ void main() {
streamController.stream,
initialState: GameState.initial(),
);
when(() => multiplier.addToParent(any()))
.thenAnswer((_) async => () {});
await parent.addAll(multipliers);
await game.ensureAdd(parent);
await parent.ensureAdd(behavior);
await tester.pump();
streamController.add(GameState.initial().copyWith(score: 100));
streamController.add(GameState.initial().copyWith(multiplier: 2));
await game.ready();
await tester.pump();
for (final multiplier in multipliers) {

@ -91,3 +91,5 @@ class MockSparkyBumper extends Mock implements SparkyBumper {}
class MockMultiplier extends Mock implements Multiplier {}
class MockMultipliersGroup extends Mock implements Multipliers {}
class MockMultiplierCubit extends Mock implements MultiplierCubit {}

Loading…
Cancel
Save