feat: added layers story to check collision with nested components

pull/97/head
RuiAlonso 4 years ago
parent db29e5c7b1
commit 6e92f76ca5

@ -12,5 +12,6 @@ void main() {
final dashbook = Dashbook(theme: ThemeData.dark());
addBallStories(dashbook);
addLayerStories(dashbook);
runApp(dashbook);
}

@ -1,4 +1,5 @@
import 'package:flame/input.dart';
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart';
import 'package:pinball_components/pinball_components.dart';
import 'package:sandbox/common/common.dart';
@ -13,10 +14,63 @@ class BasicBallGame extends BasicGame with TapDetector {
final Color color;
@override
Future<void> onLoad() async {
await add(BigSquare()..initialPosition = Vector2(30, -40));
await add(SmallSquare()..initialPosition = Vector2(50, -40));
}
@override
void onTapUp(TapUpInfo info) {
add(Ball(baseColor: color)
..initialPosition = info.eventPosition.game,
add(
Ball(baseColor: color)..initialPosition = info.eventPosition.game,
);
}
}
class BigSquare extends BodyComponent with InitialPosition, Layered {
BigSquare() {
paint = Paint()
..color = const Color.fromARGB(255, 8, 218, 241)
..style = PaintingStyle.stroke;
layer = Layer.jetpack;
}
@override
Body createBody() {
final shape = PolygonShape()..setAsBoxXY(8, 8);
final fixtureDef = FixtureDef(shape);
final bodyDef = BodyDef()..position = initialPosition;
return world.createBody(bodyDef)..createFixture(fixtureDef);
}
@override
Future<void> onLoad() async {
await super.onLoad();
await add(
SmallSquare()..initialPosition = Vector2.zero(),
);
}
}
class SmallSquare extends BodyComponent with InitialPosition, Layered {
SmallSquare() {
paint = Paint()
..color = Color.fromARGB(255, 27, 241, 8)
..style = PaintingStyle.stroke;
layer = Layer.board;
}
@override
Body createBody() {
final shape = PolygonShape()..setAsBoxXY(3, 3);
final fixtureDef = FixtureDef(shape);
final bodyDef = BodyDef()..position = initialPosition;
return world.createBody(bodyDef)..createFixture(fixtureDef);
}
}

@ -0,0 +1,76 @@
import 'package:flame/input.dart';
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart';
import 'package:pinball_components/pinball_components.dart';
import 'package:sandbox/common/common.dart';
class BasicLayerGame extends BasicGame with TapDetector {
BasicLayerGame({required this.color});
static const info = '''
Basic example of how layers work with a Ball hitting other components,
tap anywhere on the screen to spawn a ball into the game.
''';
final Color color;
@override
Future<void> onLoad() async {
await add(BigSquare()..initialPosition = Vector2(30, -40));
await add(SmallSquare()..initialPosition = Vector2(50, -40));
}
@override
void onTapUp(TapUpInfo info) {
add(
Ball(baseColor: color)..initialPosition = info.eventPosition.game,
);
}
}
class BigSquare extends BodyComponent with InitialPosition, Layered {
BigSquare() {
paint = Paint()
..color = const Color.fromARGB(255, 8, 218, 241)
..style = PaintingStyle.stroke;
layer = Layer.jetpack;
}
@override
Body createBody() {
final shape = PolygonShape()..setAsBoxXY(8, 8);
final fixtureDef = FixtureDef(shape);
final bodyDef = BodyDef()..position = initialPosition;
return world.createBody(bodyDef)..createFixture(fixtureDef);
}
@override
Future<void> onLoad() async {
await super.onLoad();
await add(
SmallSquare()..initialPosition = Vector2.zero(),
);
}
}
class SmallSquare extends BodyComponent with InitialPosition, Layered {
SmallSquare() {
paint = Paint()
..color = Color.fromARGB(255, 27, 241, 8)
..style = PaintingStyle.stroke;
layer = Layer.board;
}
@override
Body createBody() {
final shape = PolygonShape()..setAsBoxXY(3, 3);
final fixtureDef = FixtureDef(shape);
final bodyDef = BodyDef()..position = initialPosition;
return world.createBody(bodyDef)..createFixture(fixtureDef);
}
}

@ -0,0 +1,18 @@
import 'package:dashbook/dashbook.dart';
import 'package:flame/game.dart';
import 'package:flutter/material.dart';
import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/layer/basic.dart';
void addLayerStories(Dashbook dashbook) {
dashbook.storiesOf('Layer').add(
'Layer',
(context) => GameWidget(
game: BasicLayerGame(
color: context.colorProperty('color', Colors.blue),
),
),
codeLink: buildSourceLink('layer/basic.dart'),
info: BasicLayerGame.info,
);
}

@ -1 +1,2 @@
export 'ball/ball.dart';
export 'layer/layer.dart';

@ -142,6 +142,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
geometry:
dependency: transitive
description:
path: "../../geometry"
relative: true
source: path
version: "1.0.0+1"
js:
dependency: transitive
description:

Loading…
Cancel
Save