fix: fixed error activating bottom letter while bonus word animation

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

@ -36,23 +36,31 @@ 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
..isEnabled = false
..add(
SequenceEffect( SequenceEffect(
[ [
ColorEffect( ColorEffect(
i.isOdd ? BonusLetter._activeColor : 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( ColorEffect(
i.isOdd ? BonusLetter._disableColor : BonusLetter._activeColor, i.isOdd
? BonusLetter._disableColor
: BonusLetter._activeColor,
const Offset(0, 1), const Offset(0, 1),
EffectController(duration: 0.25), EffectController(duration: 0.25),
), ),
], ],
repeatCount: 4, repeatCount: 4,
)..onFinishCallback = () { )..onFinishCallback = () {
letter.add( letter
..isEnabled = true
..add(
ColorEffect( ColorEffect(
BonusLetter._disableColor, BonusLetter._disableColor,
const Offset(0, 1), const Offset(0, 1),
@ -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) {
if (bonusLetter.isEnabled) {
bonusLetter.activate(); bonusLetter.activate();
} }
} }
}

Loading…
Cancel
Save