From ccf9b33d671a4e8223dd16c66dbeb57d77d4e461 Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Sun, 1 May 2022 22:52:48 +0200 Subject: [PATCH] refactor: modified ball assets for sandbox --- .../sandbox/lib/common/games.dart | 8 ++++++++ .../lib/stories/ball/ball_booster_game.dart | 12 ++++++++++++ .../lib/stories/ball/basic_ball_game.dart | 18 +++++++++++++++++- .../sandbox/lib/stories/ball/stories.dart | 5 +++++ 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/packages/pinball_components/sandbox/lib/common/games.dart b/packages/pinball_components/sandbox/lib/common/games.dart index 89d16450..bee6a280 100644 --- a/packages/pinball_components/sandbox/lib/common/games.dart +++ b/packages/pinball_components/sandbox/lib/common/games.dart @@ -24,6 +24,14 @@ abstract class AssetsGame extends Forge2DGame { } abstract class LineGame extends AssetsGame with PanDetector { + LineGame({ + List? imagesFileNames, + }) : super( + imagesFileNames: [ + if (imagesFileNames != null) ...imagesFileNames, + ], + ); + Vector2? _lineEnd; @override diff --git a/packages/pinball_components/sandbox/lib/stories/ball/ball_booster_game.dart b/packages/pinball_components/sandbox/lib/stories/ball/ball_booster_game.dart index 7f07de97..f4996fc6 100644 --- a/packages/pinball_components/sandbox/lib/stories/ball/ball_booster_game.dart +++ b/packages/pinball_components/sandbox/lib/stories/ball/ball_booster_game.dart @@ -4,6 +4,18 @@ import 'package:pinball_components/pinball_components.dart'; import 'package:sandbox/common/common.dart'; class BallBoosterGame extends LineGame { + BallBoosterGame() + : super( + imagesFileNames: [ + Assets.images.ball.ball.keyName, + Assets.images.ball.androidBall.keyName, + Assets.images.ball.dashBall.keyName, + Assets.images.ball.dinoBall.keyName, + Assets.images.ball.sparkyBall.keyName, + Assets.images.ball.flameEffect.keyName, + ], + ); + static const description = ''' Shows how a Ball with a boost works. diff --git a/packages/pinball_components/sandbox/lib/stories/ball/basic_ball_game.dart b/packages/pinball_components/sandbox/lib/stories/ball/basic_ball_game.dart index e57a0322..9009d323 100644 --- a/packages/pinball_components/sandbox/lib/stories/ball/basic_ball_game.dart +++ b/packages/pinball_components/sandbox/lib/stories/ball/basic_ball_game.dart @@ -8,10 +8,15 @@ class BallGame extends AssetsGame with TapDetector, Traceable { this.color = Colors.blue, this.ballPriority = 0, this.ballLayer = Layer.all, + this.character, List? imagesFileNames, }) : super( imagesFileNames: [ Assets.images.ball.ball.keyName, + Assets.images.ball.androidBall.keyName, + Assets.images.ball.dashBall.keyName, + Assets.images.ball.dinoBall.keyName, + Assets.images.ball.sparkyBall.keyName, if (imagesFileNames != null) ...imagesFileNames, ], ); @@ -22,14 +27,25 @@ class BallGame extends AssetsGame with TapDetector, Traceable { - Tap anywhere on the screen to spawn a ball into the game. '''; + static final characterBallPaths = { + 'Dash': Assets.images.ball.dashBall.keyName, + 'Sparky': Assets.images.ball.sparkyBall.keyName, + 'Android': Assets.images.ball.androidBall.keyName, + 'Dino': Assets.images.ball.dinoBall.keyName, + }; + final Color color; final int ballPriority; final Layer ballLayer; + final String? character; @override void onTapUp(TapUpInfo info) { add( - Ball(baseColor: color) + Ball( + baseColor: color, + spriteAsset: characterBallPaths[character], + ) ..initialPosition = info.eventPosition.game ..layer = ballLayer ..priority = ballPriority, diff --git a/packages/pinball_components/sandbox/lib/stories/ball/stories.dart b/packages/pinball_components/sandbox/lib/stories/ball/stories.dart index eb472282..dd757fcd 100644 --- a/packages/pinball_components/sandbox/lib/stories/ball/stories.dart +++ b/packages/pinball_components/sandbox/lib/stories/ball/stories.dart @@ -11,6 +11,11 @@ void addBallStories(Dashbook dashbook) { description: BallGame.description, gameBuilder: (context) => BallGame( color: context.colorProperty('color', Colors.blue), + character: context.listProperty( + 'Character', + BallGame.characterBallPaths.keys.first, + BallGame.characterBallPaths.keys.toList(), + ), ), ) ..addGame(