From c271acf8dc1fdc9f3f46d563c5767ca741eeacb8 Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Fri, 18 Mar 2022 16:38:50 +0100 Subject: [PATCH] fix: fixed error activating bottom letter while bonus word animation --- lib/game/components/bonus_word.dart | 58 ++++++++++++++++++----------- 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/lib/game/components/bonus_word.dart b/lib/game/components/bonus_word.dart index 03f64a11..65c8c0d5 100644 --- a/lib/game/components/bonus_word.dart +++ b/lib/game/components/bonus_word.dart @@ -36,31 +36,39 @@ class BonusWord extends Component with BlocComponent { for (var i = 0; i < letters.length; i++) { final letter = letters[i]; - letter.add( - SequenceEffect( - [ - ColorEffect( - 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( + letter + ..isEnabled = false + ..add( + SequenceEffect( + [ ColorEffect( - BonusLetter._disableColor, + 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 + ..isEnabled = true + ..add( + ColorEffect( + BonusLetter._disableColor, + const Offset(0, 1), + EffectController(duration: 0.25), + ), + ); + }, + ); } } } @@ -107,6 +115,10 @@ class BonusLetter extends BodyComponent final String _letter; final int _index; + /// Indicates if [BonusLetter] could be activated on contact with [Ball]. + /// Deactivated during animation of [GameBonus.word]. + bool isEnabled = true; + @override Future onLoad() async { await super.onLoad(); @@ -172,6 +184,8 @@ class BonusLetterBallContactCallback extends ContactCallback { @override void begin(Ball ball, BonusLetter bonusLetter, Contact contact) { - bonusLetter.activate(); + if (bonusLetter.isEnabled) { + bonusLetter.activate(); + } } }