feat: bonus letter callback

pull/35/head
Erick Zanardo 4 years ago
parent b5b5b25682
commit 85cba65780

@ -1,9 +1,20 @@
// ignore_for_file: avoid_renaming_method_parameters
import 'package:flame/components.dart';
import 'package:flame_bloc/flame_bloc.dart';
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart';
import 'package:pinball/game/game.dart';
class BonusLetter extends BodyComponent<PinballGame> {
/// {@template bonus_letter}
/// A pass through, [BodyType.static] component, part of
/// a word bonus, which will active its letter once a ball
/// pass through it
/// {@endtemplate}
class BonusLetter extends BodyComponent<PinballGame>
with BlocComponent<GameBloc, GameState> {
/// {@macro bonus_letter}
BonusLetter({
required Vector2 position,
required String letter,
@ -14,6 +25,7 @@ class BonusLetter extends BodyComponent<PinballGame> {
paint = _disablePaint;
}
/// The area size of this bonus letter
static final areaSize = Vector2.all(4);
static final _activePaint = Paint()..color = Colors.green;
@ -51,4 +63,22 @@ class BonusLetter extends BodyComponent<PinballGame> {
return world.createBody(bodyDef)..createFixture(fixtureDef);
}
/// When called, will activate this letter, if still not activated
void activate() {
// TODO
//gameRef.read<GameBloc>().add(BonusLetterActivated(_index));
paint = _activePaint;
}
}
/// Handles contact for [Ball] and [BonusLetter], which trigger [BonusLetter]
/// activate method.
class BonusLetterBallContactCallback
extends ContactCallback<Ball, BonusLetter> {
@override
void begin(Ball ball, BonusLetter bonusLetter, Contact contact) {
bonusLetter.activate();
}
}

@ -44,6 +44,7 @@ class PinballGame extends Forge2DGame
unawaited(_addFlippers());
_addBonusLetters();
addContactCallback(BonusLetterBallContactCallback());
}
void _addBonusLetters() {

Loading…
Cancel
Save