Merge branch 'main' into refactor/position-exit-rail

pull/135/head
Allison Ryan 4 years ago committed by GitHub
commit 97208adfd8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -67,6 +67,7 @@ class BigDashNestBumper extends DashNestBumper {
inactiveAssetPath: Assets.images.dashBumper.main.inactive.keyName, inactiveAssetPath: Assets.images.dashBumper.main.inactive.keyName,
spriteComponent: SpriteComponent( spriteComponent: SpriteComponent(
anchor: Anchor.center, anchor: Anchor.center,
position: Vector2(0, -0.3),
), ),
); );
@ -74,9 +75,9 @@ class BigDashNestBumper extends DashNestBumper {
Body createBody() { Body createBody() {
final shape = EllipseShape( final shape = EllipseShape(
center: Vector2.zero(), center: Vector2.zero(),
majorRadius: 4.85, majorRadius: 5.1,
minorRadius: 3.95, minorRadius: 3.75,
)..rotate(math.pi / 2); )..rotate(math.pi / 2.1);
final fixtureDef = FixtureDef(shape); final fixtureDef = FixtureDef(shape);
final bodyDef = BodyDef() final bodyDef = BodyDef()

@ -1,2 +1,3 @@
export 'games.dart'; export 'games.dart';
export 'methods.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);
}),
);
}
}

@ -6,7 +6,6 @@
// https://opensource.org/licenses/MIT. // https://opensource.org/licenses/MIT.
import 'package:dashbook/dashbook.dart'; import 'package:dashbook/dashbook.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:sandbox/stories/spaceship/spaceship.dart';
import 'package:sandbox/stories/stories.dart'; import 'package:sandbox/stories/stories.dart';
void main() { void main() {
@ -18,5 +17,7 @@ void main() {
addFlipperStories(dashbook); addFlipperStories(dashbook);
addSpaceshipStories(dashbook); addSpaceshipStories(dashbook);
addBaseboardStories(dashbook); addBaseboardStories(dashbook);
addChromeDinoStories(dashbook);
addDashNestBumperStories(dashbook);
runApp(dashbook); runApp(dashbook);
} }

@ -3,8 +3,12 @@ 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 BallBoosterExample extends LineGame { class BallBoosterGame extends LineGame {
static const info = ''; static const info = '''
Shows how a Ball with a boost works.
Drag to launch a boosted Ball.
''';
@override @override
void onLine(Vector2 line) { void onLine(Vector2 line) {

@ -7,7 +7,7 @@ class BasicBallGame extends BasicGame with TapDetector {
BasicBallGame({required this.color}); BasicBallGame({required this.color});
static const info = ''' static const info = '''
Basic example of how a Ball works. Shows how a Ball works.
Tap anywhere on the screen to spawn a ball into the game. Tap anywhere on the screen to spawn a ball into the game.
'''; ''';

@ -2,8 +2,8 @@ import 'package:dashbook/dashbook.dart';
import 'package:flame/game.dart'; import 'package:flame/game.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:sandbox/common/common.dart'; import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/ball/ball_booster.dart'; import 'package:sandbox/stories/ball/ball_booster_game.dart';
import 'package:sandbox/stories/ball/basic.dart'; import 'package:sandbox/stories/ball/basic_ball_game.dart';
void addBallStories(Dashbook dashbook) { void addBallStories(Dashbook dashbook) {
dashbook.storiesOf('Ball') dashbook.storiesOf('Ball')
@ -20,9 +20,9 @@ void addBallStories(Dashbook dashbook) {
..add( ..add(
'Booster', 'Booster',
(context) => GameWidget( (context) => GameWidget(
game: BallBoosterExample(), game: BallBoosterGame(),
), ),
codeLink: buildSourceLink('ball/ball_booster.dart'), codeLink: buildSourceLink('ball/ball_booster.dart'),
info: BallBoosterExample.info, info: BallBoosterGame.info,
); );
} }

@ -3,9 +3,7 @@ import 'package:pinball_components/pinball_components.dart';
import 'package:sandbox/common/common.dart'; import 'package:sandbox/common/common.dart';
class BasicBaseboardGame extends BasicGame { class BasicBaseboardGame extends BasicGame {
static const info = ''' static const info = 'Shows how a Baseboard works.';
Basic example of how a Baseboard works.
''';
@override @override
Future<void> onLoad() async { Future<void> onLoad() async {

@ -1,7 +1,7 @@
import 'package:dashbook/dashbook.dart'; import 'package:dashbook/dashbook.dart';
import 'package:flame/game.dart'; import 'package:flame/game.dart';
import 'package:sandbox/common/common.dart'; import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/baseboard/basic.dart'; import 'package:sandbox/stories/baseboard/basic_baseboard_game.dart';
void addBaseboardStories(Dashbook dashbook) { void addBaseboardStories(Dashbook dashbook) {
dashbook.storiesOf('Baseboard').add( dashbook.storiesOf('Baseboard').add(

@ -0,0 +1,14 @@
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:pinball_components/pinball_components.dart';
class ChromeDinoGame extends Forge2DGame {
static const info = 'Shows how a ChromeDino is rendered.';
@override
Future<void> onLoad() async {
await super.onLoad();
camera.followVector2(Vector2.zero());
await add(ChromeDino());
}
}

@ -0,0 +1,15 @@
import 'package:dashbook/dashbook.dart';
import 'package:flame/game.dart';
import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/chrome_dino/chrome_dino_game.dart';
void addChromeDinoStories(Dashbook dashbook) {
dashbook.storiesOf('Chrome Dino').add(
'Basic',
(context) => GameWidget(
game: ChromeDinoGame(),
),
codeLink: buildSourceLink('chrome_dino/basic.dart'),
info: ChromeDinoGame.info,
);
}

@ -0,0 +1,33 @@
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_ball_game.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" parameter to overlay the body.
''';
final bool trace;
@override
Future<void> onLoad() async {
await super.onLoad();
final center = screenToWorld(camera.viewport.canvasSize! / 2);
final bigDashNestBumper = BigDashNestBumper()
..initialPosition = center
..priority = 1;
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_ball_game.dart';
import 'package:sandbox/stories/dash_nest_bumper/big_dash_nest_bumper_game.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,
);
}

@ -2,9 +2,12 @@ import 'package:flame/components.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 FireEffectExample extends LineGame { class FireEffectGame extends LineGame {
static const info = 'Demonstrate the fire trail effect ' static const info = '''
'drag a line to define the trail direction'; Shows how the FireEffect renders.
Drag a line to define the trail direction.
''';
@override @override
void onLine(Vector2 line) { void onLine(Vector2 line) {

@ -1,13 +1,13 @@
import 'package:dashbook/dashbook.dart'; import 'package:dashbook/dashbook.dart';
import 'package:flame/game.dart'; import 'package:flame/game.dart';
import 'package:sandbox/common/common.dart'; import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/effects/fire_effect.dart'; import 'package:sandbox/stories/effects/fire_effect_game.dart';
void addEffectsStories(Dashbook dashbook) { void addEffectsStories(Dashbook dashbook) {
dashbook.storiesOf('Effects').add( dashbook.storiesOf('Effects').add(
'Fire Effect', 'Fire Effect',
(context) => GameWidget(game: FireEffectExample()), (context) => GameWidget(game: FireEffectGame()),
codeLink: buildSourceLink('effects/fire_effect.dart'), codeLink: buildSourceLink('effects/fire_effect.dart'),
info: FireEffectExample.info, info: FireEffectGame.info,
); );
} }

@ -3,14 +3,12 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:pinball_components/pinball_components.dart'; import 'package:pinball_components/pinball_components.dart';
import 'package:sandbox/stories/ball/basic.dart'; import 'package:sandbox/stories/ball/basic_ball_game.dart';
class BasicFlipperGame extends BasicBallGame with KeyboardEvents { class BasicFlipperGame extends BasicBallGame with KeyboardEvents {
BasicFlipperGame() : super(color: Colors.blue); BasicFlipperGame() : super(color: Colors.blue);
static const info = ''' static const info = 'Shows how a Flipper works.';
Basic example of how a Flipper works.
''';
static const _leftFlipperKeys = [ static const _leftFlipperKeys = [
LogicalKeyboardKey.arrowLeft, LogicalKeyboardKey.arrowLeft,

@ -0,0 +1,26 @@
import 'dart:async';
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/flipper/basic_flipper_game.dart';
class FlipperTracingGame extends BasicFlipperGame {
static const info = '''
Basic example of how the Flipper body overlays the sprite.
''';
@override
Future<void> onLoad() async {
await super.onLoad();
leftFlipper.trace();
leftFlipper.body.joints.whereType<RevoluteJoint>().forEach(
(joint) => joint.setLimits(0, 0),
);
rightFlipper.trace();
rightFlipper.body.joints.whereType<RevoluteJoint>().forEach(
(joint) => joint.setLimits(0, 0),
);
}
}

@ -1,8 +1,8 @@
import 'package:dashbook/dashbook.dart'; import 'package:dashbook/dashbook.dart';
import 'package:flame/game.dart'; import 'package:flame/game.dart';
import 'package:sandbox/common/common.dart'; import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/flipper/basic.dart'; import 'package:sandbox/stories/flipper/basic_flipper_game.dart';
import 'package:sandbox/stories/flipper/tracing.dart'; import 'package:sandbox/stories/flipper/flipper_tracing_game.dart';
void addFlipperStories(Dashbook dashbook) { void addFlipperStories(Dashbook dashbook) {
dashbook.storiesOf('Flipper') dashbook.storiesOf('Flipper')

@ -1,36 +0,0 @@
import 'dart:async';
import 'package:flame/components.dart';
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart';
import 'package:sandbox/stories/flipper/basic.dart';
class FlipperTracingGame extends BasicFlipperGame {
static const info = '''
Basic example of how the Flipper body overlays the sprite.
''';
@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(
(joint) => joint.setLimits(0, 0),
);
unawaited(
mounted.whenComplete(() {
final sprite = children.whereType<SpriteComponent>().first;
sprite.paint.color = sprite.paint.color.withOpacity(0.5);
}),
);
}
}

@ -8,9 +8,9 @@ class BasicLayerGame extends BasicGame with TapDetector {
BasicLayerGame({required this.color}); BasicLayerGame({required this.color});
static const info = ''' static const info = '''
Basic example of how layers work when a Ball hits other components. Shows how Layers work when a Ball hits other components.
Tap anywhere on the screen to spawn a ball into the game. Tap anywhere on the screen to spawn a Ball into the game.
'''; ''';
final Color color; final Color color;

@ -2,7 +2,7 @@ import 'package:dashbook/dashbook.dart';
import 'package:flame/game.dart'; import 'package:flame/game.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:sandbox/common/common.dart'; import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/layer/basic.dart'; import 'package:sandbox/stories/layer/basic_layer_game.dart';
void addLayerStories(Dashbook dashbook) { void addLayerStories(Dashbook dashbook) {
dashbook.storiesOf('Layer').add( dashbook.storiesOf('Layer').add(

@ -5,9 +5,12 @@ 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 BasicSpaceship extends BasicGame with TapDetector { class BasicSpaceshipGame extends BasicGame with TapDetector {
static String info = 'Renders a spaceship and allows balls to be ' static const info = '''
'spawned upon click to test their interactions'; Shows how a Spaceship works.
Tap anywhere on the screen to spawn a Ball into the game.
''';
@override @override
Future<void> onLoad() async { Future<void> onLoad() async {

@ -1,13 +1,15 @@
import 'package:dashbook/dashbook.dart'; import 'package:dashbook/dashbook.dart';
import 'package:flame/game.dart'; import 'package:flame/game.dart';
import 'package:sandbox/common/common.dart'; import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/spaceship/basic.dart'; import 'package:sandbox/stories/spaceship/basic_spaceship_game.dart';
void addSpaceshipStories(Dashbook dashbook) { void addSpaceshipStories(Dashbook dashbook) {
dashbook.storiesOf('Spaceship').add( dashbook.storiesOf('Spaceship').add(
'Basic', 'Basic',
(context) => GameWidget(game: BasicSpaceship()), (context) => GameWidget(
game: BasicSpaceshipGame(),
),
codeLink: buildSourceLink('spaceship/basic.dart'), codeLink: buildSourceLink('spaceship/basic.dart'),
info: BasicSpaceship.info, info: BasicSpaceshipGame.info,
); );
} }

@ -1,5 +1,8 @@
export 'ball/ball.dart'; export 'ball/stories.dart';
export 'baseboard/baseboard.dart'; export 'baseboard/stories.dart';
export 'effects/effects.dart'; export 'chrome_dino/stories.dart';
export 'flipper/flipper.dart'; export 'dash_nest_bumper/stories.dart';
export 'layer/layer.dart'; export 'effects/stories.dart';
export 'flipper/stories.dart';
export 'layer/stories.dart';
export 'spaceship/stories.dart';

Loading…
Cancel
Save