From b15517a56d6f82f3df1ae1f885723a42fa8cc97b Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Wed, 6 Apr 2022 11:02:06 +0200 Subject: [PATCH] feat: plunger story --- .../pinball_components/sandbox/lib/main.dart | 1 + .../lib/stories/plunger/plunger_game.dart | 33 +++++++++++++++++++ .../sandbox/lib/stories/plunger/stories.dart | 17 ++++++++++ .../sandbox/lib/stories/stories.dart | 1 + 4 files changed, 52 insertions(+) create mode 100644 packages/pinball_components/sandbox/lib/stories/plunger/plunger_game.dart create mode 100644 packages/pinball_components/sandbox/lib/stories/plunger/stories.dart diff --git a/packages/pinball_components/sandbox/lib/main.dart b/packages/pinball_components/sandbox/lib/main.dart index 1801fa52..ec6d6abf 100644 --- a/packages/pinball_components/sandbox/lib/main.dart +++ b/packages/pinball_components/sandbox/lib/main.dart @@ -21,5 +21,6 @@ void main() { addChromeDinoStories(dashbook); addDashNestBumperStories(dashbook); addKickerStories(dashbook); + addPlungerStories(dashbook); runApp(dashbook); } diff --git a/packages/pinball_components/sandbox/lib/stories/plunger/plunger_game.dart b/packages/pinball_components/sandbox/lib/stories/plunger/plunger_game.dart new file mode 100644 index 00000000..a95847d9 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/plunger/plunger_game.dart @@ -0,0 +1,33 @@ +import 'package:flame/input.dart'; +import 'package:flutter/material.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:sandbox/common/common.dart'; +import 'package:sandbox/stories/ball/basic_ball_game.dart'; + +class PlungerGame extends BasicBallGame with HasKeyboardHandlerComponents { + PlungerGame({ + required this.trace, + }) : super(color: const Color(0xFFFF0000)); + + static const info = ''' + Shows how Plunger is rendered. + + - Activate the "trace" parameter to overlay the body. + - Tap anywhere on the screen to spawn a ball into the game. +'''; + + final bool trace; + + @override + Future onLoad() async { + await super.onLoad(); + + final center = screenToWorld(camera.viewport.canvasSize! / 2); + + final plunger = Plunger(compressionDistance: 29) + ..initialPosition = Vector2(center.x - (Kicker.size.x * 2), center.y); + await add(plunger); + + if (trace) plunger.trace(); + } +} diff --git a/packages/pinball_components/sandbox/lib/stories/plunger/stories.dart b/packages/pinball_components/sandbox/lib/stories/plunger/stories.dart new file mode 100644 index 00000000..8772f880 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/plunger/stories.dart @@ -0,0 +1,17 @@ +import 'package:dashbook/dashbook.dart'; +import 'package:flame/game.dart'; +import 'package:sandbox/common/common.dart'; +import 'package:sandbox/stories/plunger/plunger_game.dart'; + +void addPlungerStories(Dashbook dashbook) { + dashbook.storiesOf('Plunger').add( + 'Basic', + (context) => GameWidget( + game: PlungerGame( + trace: context.boolProperty('Trace', true), + ), + ), + codeLink: buildSourceLink('plunger_game/basic.dart'), + info: PlungerGame.info, + ); +} diff --git a/packages/pinball_components/sandbox/lib/stories/stories.dart b/packages/pinball_components/sandbox/lib/stories/stories.dart index 108cca05..a1e9b0fb 100644 --- a/packages/pinball_components/sandbox/lib/stories/stories.dart +++ b/packages/pinball_components/sandbox/lib/stories/stories.dart @@ -5,4 +5,5 @@ export 'dash_nest_bumper/stories.dart'; export 'effects/stories.dart'; export 'flipper/stories.dart'; export 'layer/stories.dart'; +export 'plunger/stories.dart'; export 'spaceship/stories.dart';