fix: fixed error activating bottom letter while bonus word animation

pull/61/head
RuiAlonso 4 years ago
parent 6867187659
commit c271acf8dc

@ -36,31 +36,39 @@ class BonusWord extends Component with BlocComponent<GameBloc, GameState> {
for (var i = 0; i < letters.length; i++) { for (var i = 0; i < letters.length; i++) {
final letter = letters[i]; final letter = letters[i];
letter.add( letter
SequenceEffect( ..isEnabled = false
[ ..add(
ColorEffect( SequenceEffect(
i.isOdd ? BonusLetter._activeColor : BonusLetter._disableColor, [
const Offset(0, 1),
EffectController(duration: 0.25),
),
ColorEffect(
i.isOdd ? BonusLetter._disableColor : BonusLetter._activeColor,
const Offset(0, 1),
EffectController(duration: 0.25),
),
],
repeatCount: 4,
)..onFinishCallback = () {
letter.add(
ColorEffect( ColorEffect(
BonusLetter._disableColor, i.isOdd
? BonusLetter._activeColor
: BonusLetter._disableColor,
const Offset(0, 1), const Offset(0, 1),
EffectController(duration: 0.25), EffectController(duration: 0.25),
), ),
); ColorEffect(
}, i.isOdd
); ? BonusLetter._disableColor
: BonusLetter._activeColor,
const Offset(0, 1),
EffectController(duration: 0.25),
),
],
repeatCount: 4,
)..onFinishCallback = () {
letter
..isEnabled = true
..add(
ColorEffect(
BonusLetter._disableColor,
const Offset(0, 1),
EffectController(duration: 0.25),
),
);
},
);
} }
} }
} }
@ -107,6 +115,10 @@ class BonusLetter extends BodyComponent<PinballGame>
final String _letter; final String _letter;
final int _index; final int _index;
/// Indicates if [BonusLetter] could be activated on contact with [Ball].
/// Deactivated during animation of [GameBonus.word].
bool isEnabled = true;
@override @override
Future<void> onLoad() async { Future<void> onLoad() async {
await super.onLoad(); await super.onLoad();
@ -172,6 +184,8 @@ class BonusLetterBallContactCallback
extends ContactCallback<Ball, BonusLetter> { extends ContactCallback<Ball, BonusLetter> {
@override @override
void begin(Ball ball, BonusLetter bonusLetter, Contact contact) { void begin(Ball ball, BonusLetter bonusLetter, Contact contact) {
bonusLetter.activate(); if (bonusLetter.isEnabled) {
bonusLetter.activate();
}
} }
} }

Loading…
Cancel
Save