Merge branch 'main' into feat/add-chrome-dino-sanbox

pull/139/head
Alejandro Santiago 4 years ago committed by GitHub
commit d6cda60e6b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -88,7 +88,7 @@ class LaunchedBallController extends BallController
void onNewState(GameState state) {
super.onNewState(state);
component.shouldRemove = true;
if (state.balls > 1) gameRef.spawnBall();
if (state.balls > 0) gameRef.spawnBall();
}
/// Removes the [Ball] from a [PinballGame]; spawning a new [Ball] if

@ -1,2 +1,3 @@
export 'games.dart';
export 'methods.dart';
export 'trace.dart';

@ -0,0 +1,19 @@
import 'dart:async';
import 'package:flame/components.dart';
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart';
extension BodyTrace on BodyComponent {
void trace({Color color = const Color(0xFFFF0000)}) {
paint = Paint()..color = color;
renderBody = true;
unawaited(
mounted.whenComplete(() {
final sprite = children.whereType<SpriteComponent>().first;
sprite.paint.color = sprite.paint.color.withOpacity(0.5);
}),
);
}
}

@ -19,5 +19,6 @@ void main() {
addSpaceshipStories(dashbook);
addBaseboardStories(dashbook);
addChromeDinoStories(dashbook);
addDashNestBumperStories(dashbook);
runApp(dashbook);
}

@ -0,0 +1,31 @@
import 'dart:async';
import 'dart:ui';
import 'package:pinball_components/pinball_components.dart';
import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/ball/basic.dart';
class BigDashNestBumperGame extends BasicBallGame {
BigDashNestBumperGame({
required this.trace,
}) : super(color: const Color(0xFF0000FF));
static const info = '''
Shows how a BigDashNestBumper is rendered.
Activate the trace to see the body shape.
''';
final bool trace;
@override
Future<void> onLoad() async {
await super.onLoad();
final center = screenToWorld(camera.viewport.canvasSize! / 2);
final bigDashNestBumper = BigDashNestBumper()..initialPosition = center;
await add(bigDashNestBumper);
if (trace) bigDashNestBumper.trace();
}
}

@ -0,0 +1,18 @@
import 'package:dashbook/dashbook.dart';
import 'package:flame/game.dart';
import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/ball/basic.dart';
import 'package:sandbox/stories/dash_nest_bumper/big.dart';
void addDashNestBumperStories(Dashbook dashbook) {
dashbook.storiesOf('Dash Nest Bumpers').add(
'Big',
(context) => GameWidget(
game: BigDashNestBumperGame(
trace: context.boolProperty('Trace', true),
),
),
codeLink: buildSourceLink('dash_nest_bumper/big.dart'),
info: BasicBallGame.info,
);
}

@ -1,8 +1,7 @@
import 'dart:async';
import 'package:flame/components.dart';
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart';
import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/flipper/basic.dart';
class FlipperTracingGame extends BasicFlipperGame {
@ -13,24 +12,15 @@ class FlipperTracingGame extends BasicFlipperGame {
@override
Future<void> onLoad() async {
await super.onLoad();
leftFlipper.trace();
rightFlipper.trace();
}
}
extension on BodyComponent {
void trace({Color color = Colors.red}) {
paint = Paint()..color = color;
renderBody = true;
body.joints.whereType<RevoluteJoint>().forEach(
leftFlipper.trace();
leftFlipper.body.joints.whereType<RevoluteJoint>().forEach(
(joint) => joint.setLimits(0, 0),
);
unawaited(
mounted.whenComplete(() {
final sprite = children.whereType<SpriteComponent>().first;
sprite.paint.color = sprite.paint.color.withOpacity(0.5);
}),
rightFlipper.trace();
rightFlipper.body.joints.whereType<RevoluteJoint>().forEach(
(joint) => joint.setLimits(0, 0),
);
}
}

@ -1,6 +1,7 @@
export 'ball/ball.dart';
export 'baseboard/baseboard.dart';
export 'chrome_dino/stories.dart';
export 'dash_nest_bumper/dash_nest_bumper.dart';
export 'effects/effects.dart';
export 'flipper/flipper.dart';
export 'layer/layer.dart';

@ -176,7 +176,7 @@ void main() {
await game.ensureAdd(ball);
final state = MockGameState();
when(() => state.balls).thenReturn(1);
when(() => state.balls).thenReturn(0);
final previousBalls = game.descendants().whereType<Ball>().toList();
controller.onNewState(state);

Loading…
Cancel
Save