mirror of https://github.com/flutter/pinball.git
feat(sandbox): implemented BigDashNestBumper example (#137)
parent
d857a784b2
commit
124af6b603
@ -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);
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
@ -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,5 +1,6 @@
|
||||
export 'ball/ball.dart';
|
||||
export 'baseboard/baseboard.dart';
|
||||
export 'dash_nest_bumper/dash_nest_bumper.dart';
|
||||
export 'effects/effects.dart';
|
||||
export 'flipper/flipper.dart';
|
||||
export 'layer/layer.dart';
|
||||
|
Loading…
Reference in new issue