refactor: modified blinking behavior

pull/235/head
RuiAlonso 3 years ago
parent 83e9447600
commit 3b87e3c948

@ -9,7 +9,7 @@ import 'package:pinball_flame/pinball_flame.dart';
class MultiballBlinkingBehavior extends TimerComponent
with ParentIsA<Multiball> {
/// {@macro multiball_blinking_behavior}
MultiballBlinkingBehavior() : super(period: 0.01);
MultiballBlinkingBehavior() : super(period: 0.1);
final _maxBlinks = 10;
int _blinksCounter = 0;
@ -19,20 +19,28 @@ class MultiballBlinkingBehavior extends TimerComponent
final animationEnabled =
state.animationState == MultiballAnimationState.animated;
final canBlink = _blinksCounter < _maxBlinks;
if (animationEnabled && canBlink) {
_animate();
_start();
} else {
_stop();
}
}
Future<void> _animate() async {
void _start() {
if (!_isAnimating) {
_isAnimating = true;
timer
..reset()
..start();
_animate();
}
}
void _animate() {
parent.bloc.onBlink();
_blinksCounter++;
}
}
void _stop() {
if (_isAnimating) {
@ -46,14 +54,17 @@ class MultiballBlinkingBehavior extends TimerComponent
@override
Future<void> onLoad() async {
await super.onLoad();
timer.stop();
parent.bloc.stream.listen(_onNewState);
}
@override
void onTick() {
super.onTick();
if (_isAnimating) {
if (!_isAnimating) {
timer.stop();
} else {
if (_blinksCounter < _maxBlinks) {
_animate();
timer
..reset()
..start();
@ -61,4 +72,5 @@ class MultiballBlinkingBehavior extends TimerComponent
timer.stop();
}
}
}
}

@ -40,6 +40,11 @@ void main() {
lightState: MultiballLightState.lit,
),
);
await tester.pump();
game.update(0);
verify(bloc.onBlink).called(1);
await tester.pump();
game.update(0.1);

Loading…
Cancel
Save