feat: defined trace method

pull/102/head
alestiago 4 years ago
parent 8861da0827
commit 6057346443

@ -1,11 +1,13 @@
import 'dart:async'; import 'dart:async';
import 'package:flame/components.dart'; import 'package:flame/components.dart';
import 'package:flame/input.dart';
import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart';
import 'package:pinball_components/pinball_components.dart'; import 'package:pinball_components/pinball_components.dart';
import 'package:sandbox/common/common.dart'; import 'package:sandbox/common/common.dart';
class FlipperTracingGame extends BasicGame { class FlipperTracingGame extends BasicGame with TapDetector {
static const info = ''' static const info = '''
Basic example of how a Flipper works. Basic example of how a Flipper works.
'''; ''';
@ -13,19 +15,38 @@ class FlipperTracingGame extends BasicGame {
@override @override
Future<void> onLoad() async { Future<void> onLoad() async {
await super.onLoad(); await super.onLoad();
final center = screenToWorld(camera.viewport.canvasSize! / 2); final center = screenToWorld(camera.viewport.canvasSize! / 2);
final leftFlipper = Flipper(side: BoardSide.left)..initialPosition = center;
final leftFlipper = Flipper(side: BoardSide.left) await add(leftFlipper);
..initialPosition = center - Vector2(Flipper.size.x, 0); leftFlipper.trace();
}
await addAll([ @override
leftFlipper, void onTapUp(TapUpInfo info) {
]); add(
Ball(baseColor: Colors.yellow)..initialPosition = info.eventPosition.game,
);
}
}
leftFlipper.body.joints.whereType<RevoluteJoint>().forEach( extension on BodyComponent {
void trace({Color color = Colors.red}) {
paint = Paint()..color = color;
renderBody = true;
body.joints.whereType<RevoluteJoint>().forEach(
(joint) => joint.setLimits(0, 0), (joint) => joint.setLimits(0, 0),
); );
leftFlipper.removeAll(leftFlipper.children);
for (final fixture in body.fixtures) {
fixture.setSensor(true);
}
unawaited(
mounted.whenComplete(() {
final sprite = children.whereType<SpriteComponent>().first;
sprite.paint.color = sprite.paint.color.withOpacity(0.5);
}),
);
} }
} }

Loading…
Cancel
Save