Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 16 additions & 17 deletions bricks/example/__brick__/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,42 +9,41 @@ import 'package:flutter/material.dart';
final _rng = Random();

void main() {
runApp(GameWidget(game: MyGame()));
runApp(const GameWidget.controlled(gameFactory: MyGame.new));
}

class MyGame extends FlameGame with TapCallbacks {
class MyGame extends FlameGame<MyWorld> {
MyGame() : super(world: MyWorld());
}

class MyWorld extends World {
late final MyComponent myComponent;

@override
Future<void> onLoad() async {
await world.add(myComponent = MyComponent());
await add(myComponent = MyComponent());
return super.onLoad();
}

@override
void onTapUp(TapUpEvent event) {
myComponent.speed.x = -1 + 2 * _rng.nextDouble();
myComponent.speed.y = -1 + 2 * _rng.nextDouble();
}
}

class MyComponent extends PositionComponent with HasGameRef<MyGame> {
static final _paint = BasicPalette.white.paint();
class MyComponent extends RectangleComponent with TapCallbacks {
final Vector2 speed = Vector2.zero();

MyComponent()
: super(
: super.square(
size: 64,
anchor: Anchor.center,
size: Vector2.all(32),
paint: BasicPalette.magenta.paint(),
);

@override
void render(Canvas c) {
c.drawRect(size.toRect(), _paint);
void update(double dt) {
position += speed * 128.0 * dt;
}

@override
void update(double dt) {
position += speed * 32.0 * dt;
void onTapDown(TapDownEvent event) {
speed.x = -1 + 2 * _rng.nextDouble();
speed.y = -1 + 2 * _rng.nextDouble();
}
}
30 changes: 30 additions & 0 deletions bricks/example/__brick__/test/my_component_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import 'package:flame/events.dart';
import 'package:flame/game.dart';
import 'package:flame_test/flame_test.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:{{name}}/main.dart';

void main() {
testWithGame<MyGame>(
'game will load and MyComponent responds to taps',
MyGame.new,
(game) async {
await game.ready();

expect(game.world.children.length, 1);
expect(game.world.myComponent.speed, Vector2.zero());

final dispatcher = game.firstChild<MultiTapDispatcher>()!;
dispatcher.onTapDown(
createTapDownEvents(
game: game,
localPosition: (game.size / 2).toOffset(),
globalPosition: (game.size / 2).toOffset(),
),
);

expect(game.world.myComponent.speed, isNot(equals(Vector2.zero())));
},
);
}
22 changes: 0 additions & 22 deletions bricks/example/__brick__/test/widget_test.dart

This file was deleted.

2 changes: 1 addition & 1 deletion lib/templates/bricks/example_bundle.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.