From e229413a2a1fe06bf28f6c61110c4289abd67694 Mon Sep 17 00:00:00 2001 From: Allison Ryan Date: Tue, 5 Apr 2022 15:45:53 -0500 Subject: [PATCH] feat: add slingshot to sandbox --- .../pinball_components/sandbox/lib/main.dart | 1 + .../lib/stories/slingshot/slingshot_game.dart | 66 +++++++++++++++++++ .../lib/stories/slingshot/stories.dart | 17 +++++ .../sandbox/lib/stories/stories.dart | 1 + 4 files changed, 85 insertions(+) create mode 100644 packages/pinball_components/sandbox/lib/stories/slingshot/slingshot_game.dart create mode 100644 packages/pinball_components/sandbox/lib/stories/slingshot/stories.dart diff --git a/packages/pinball_components/sandbox/lib/main.dart b/packages/pinball_components/sandbox/lib/main.dart index 1801fa52..8c02170d 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); + addSlingshotStories(dashbook); runApp(dashbook); } diff --git a/packages/pinball_components/sandbox/lib/stories/slingshot/slingshot_game.dart b/packages/pinball_components/sandbox/lib/stories/slingshot/slingshot_game.dart new file mode 100644 index 00000000..c02689ca --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/slingshot/slingshot_game.dart @@ -0,0 +1,66 @@ +import 'dart:math' as math; + +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 SlingshotGame extends BasicBallGame { + SlingshotGame({ + required this.trace, + }) : super(color: const Color(0xFFFF0000)); + + static const info = ''' + Shows how Slingshots 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 leftUpperSlingshot = Slingshot( + length: 5.66, + angle: -1.5 * (math.pi / 180), + spritePath: Assets.images.slingshot.leftUpper.keyName, + )..initialPosition = center + Vector2(-29, 1.5); + + final leftLowerSlingshot = Slingshot( + length: 3.54, + angle: -29.1 * (math.pi / 180), + spritePath: Assets.images.slingshot.leftLower.keyName, + )..initialPosition = center + Vector2(-31, -6.2); + + final rightUpperSlingshot = Slingshot( + length: 5.64, + angle: 1 * (math.pi / 180), + spritePath: Assets.images.slingshot.rightUpper.keyName, + )..initialPosition = center + Vector2(22.3, 1.58); + + final rightLowerSlingshot = Slingshot( + length: 3.46, + angle: 26.8 * (math.pi / 180), + spritePath: Assets.images.slingshot.rightLower.keyName, + )..initialPosition = center + Vector2(24.7, -6.2); + + await addAll([ + leftUpperSlingshot, + leftLowerSlingshot, + rightUpperSlingshot, + rightLowerSlingshot, + ]); + + if (trace) { + leftUpperSlingshot.trace(); + leftLowerSlingshot.trace(); + rightUpperSlingshot.trace(); + rightLowerSlingshot.trace(); + } + } +} diff --git a/packages/pinball_components/sandbox/lib/stories/slingshot/stories.dart b/packages/pinball_components/sandbox/lib/stories/slingshot/stories.dart new file mode 100644 index 00000000..6e985d32 --- /dev/null +++ b/packages/pinball_components/sandbox/lib/stories/slingshot/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/slingshot/slingshot_game.dart'; + +void addSlingshotStories(Dashbook dashbook) { + dashbook.storiesOf('Slingshots').add( + 'Basic', + (context) => GameWidget( + game: SlingshotGame( + trace: context.boolProperty('Trace', true), + ), + ), + codeLink: buildSourceLink('slingshot_game/basic.dart'), + info: SlingshotGame.info, + ); +} diff --git a/packages/pinball_components/sandbox/lib/stories/stories.dart b/packages/pinball_components/sandbox/lib/stories/stories.dart index 108cca05..d7b1e786 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 'slingshot/stories.dart'; export 'spaceship/stories.dart';