feat: adding bonus letter component

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

@ -0,0 +1,54 @@
import 'package:flame/components.dart';
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart';
import 'package:pinball/game/game.dart';
class BonusLetter extends BodyComponent<PinballGame> {
BonusLetter({
required Vector2 position,
required String letter,
required int index,
}) : _position = position,
_letter = letter,
_index = index {
paint = _disablePaint;
}
static final areaSize = Vector2.all(4);
static final _activePaint = Paint()..color = Colors.green;
static final _disablePaint = Paint()..color = Colors.red;
final Vector2 _position;
final String _letter;
final int _index;
@override
Future<void> onLoad() async {
await super.onLoad();
await add(
TextComponent(
position: Vector2(-1, 1),
text: _letter,
textRenderer: TextPaint(
style: const TextStyle(fontSize: 2, color: Colors.white),
),
)..flipVertically(),
);
}
@override
Body createBody() {
final shape = CircleShape()..radius = areaSize.x / 2;
final fixtureDef = FixtureDef(shape)..isSensor = true;
final bodyDef = BodyDef()
..userData = this
..position = _position
..type = BodyType.static;
return world.createBody(bodyDef)..createFixture(fixtureDef);
}
}

@ -1,6 +1,7 @@
export 'anchor.dart';
export 'ball.dart';
export 'board_side.dart';
export 'bonus_letter.dart';
export 'flipper.dart';
export 'pathway.dart';
export 'plunger.dart';

@ -43,6 +43,21 @@ class PinballGame extends Forge2DGame
addContactCallback(BottomWallBallContactCallback());
unawaited(_addFlippers());
_addBonusLetters();
}
void _addBonusLetters() {
final letters = 'GOOGLE'.split('');
for (var i = 0; i < letters.length; i++) {
add(
BonusLetter(
position: ballStartingPosition - Vector2(16 - (i * 6), -10),
letter: letters[i],
index: i,
),
);
}
}
Future<void> _addFlippers() async {

@ -140,7 +140,7 @@ packages:
name: flame
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0-releasecandidate.2"
version: "1.1.0-releasecandidate.3"
flame_bloc:
dependency: "direct main"
description:
@ -151,10 +151,12 @@ packages:
flame_forge2d:
dependency: "direct main"
description:
name: flame_forge2d
url: "https://pub.dartlang.org"
source: hosted
version: "0.9.0-releasecandidate.2"
path: "packages/flame_forge2d"
ref: "spydon.body-component-no-debug-render"
resolved-ref: d54a9269ab60e1d4dfec15f4660217c124ab86af
url: "git@github.com:flame-engine/flame.git"
source: git
version: "0.9.0-releasecandidate.3"
flame_test:
dependency: "direct dev"
description:

@ -11,7 +11,12 @@ dependencies:
equatable: ^2.0.3
flame: ^1.1.0-releasecandidate.2
flame_bloc: ^1.2.0-releasecandidate.2
flame_forge2d: ^0.9.0-releasecandidate.2
#flame_forge2d: ^0.9.0-releasecandidate.2
flame_forge2d:
git:
url: git@github.com:flame-engine/flame.git
path: packages/flame_forge2d
ref: spydon.body-component-no-debug-render
flutter:
sdk: flutter
flutter_bloc: ^8.0.1

Loading…
Cancel
Save