From d9d9ed29086a2d931f3a6ccdbf884ace4c3d2b27 Mon Sep 17 00:00:00 2001 From: alestiago Date: Tue, 5 Apr 2022 17:30:34 +0100 Subject: [PATCH] feat: included Kicker sandbox --- .../pinball_components/sandbox/lib/main.dart | 2 + .../lib/stories/kicker/kicker_game.dart | 41 +++++++++++++++++++ .../sandbox/lib/stories/kicker/stories.dart | 17 ++++++++ 3 files changed, 60 insertions(+) create mode 100644 packages/pinball_components/sandbox/lib/stories/kicker/kicker_game.dart create mode 100644 packages/pinball_components/sandbox/lib/stories/kicker/stories.dart diff --git a/packages/pinball_components/sandbox/lib/main.dart b/packages/pinball_components/sandbox/lib/main.dart index 59066fca..1801fa52 100644 --- a/packages/pinball_components/sandbox/lib/main.dart +++ b/packages/pinball_components/sandbox/lib/main.dart @@ -6,6 +6,7 @@ // https://opensource.org/licenses/MIT. import 'package:dashbook/dashbook.dart'; import 'package:flutter/material.dart'; +import 'package:sandbox/stories/kicker/stories.dart'; import 'package:sandbox/stories/stories.dart'; void main() { @@ -19,5 +20,6 @@ void main() { addBaseboardStories(dashbook); addChromeDinoStories(dashbook); addDashNestBumperStories(dashbook); + addKickerStories(dashbook); runApp(dashbook); } diff --git a/packages/pinball_components/sandbox/lib/stories/kicker/kicker_game.dart b/packages/pinball_components/sandbox/lib/stories/kicker/kicker_game.dart new file mode 100644 index 00000000..6a9aebc6 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/kicker/kicker_game.dart @@ -0,0 +1,41 @@ +import 'dart:ui'; + +import 'package:flame/extensions.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:sandbox/common/common.dart'; +import 'package:sandbox/stories/ball/basic_ball_game.dart'; + +class KickerGame extends BasicBallGame { + KickerGame({ + required this.trace, + }) : super(color: const Color(0xFFFF0000)); + + static const info = ''' + Shows how Kickers are 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 leftKicker = Kicker(side: BoardSide.left) + ..initialPosition = Vector2(center.x - (Kicker.size.x * 2), center.y); + await add(leftKicker); + + final rightKicker = Kicker(side: BoardSide.right) + ..initialPosition = Vector2(center.x + (Kicker.size.x * 2), center.y); + await add(rightKicker); + + if (trace) { + leftKicker.trace(); + rightKicker.trace(); + } + } +} diff --git a/packages/pinball_components/sandbox/lib/stories/kicker/stories.dart b/packages/pinball_components/sandbox/lib/stories/kicker/stories.dart new file mode 100644 index 00000000..f4a6bf91 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/kicker/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/kicker/kicker_game.dart'; + +void addKickerStories(Dashbook dashbook) { + dashbook.storiesOf('Kickers').add( + 'Basic', + (context) => GameWidget( + game: KickerGame( + trace: context.boolProperty('Trace', true), + ), + ), + codeLink: buildSourceLink('kicker_game/basic.dart'), + info: KickerGame.info, + ); +}