feat: added sandbox for multiball

pull/235/head
RuiAlonso 3 years ago
parent 4039a577d1
commit da1cea1069

@ -30,6 +30,7 @@ void main() {
addScoreTextStories(dashbook);
addBackboardStories(dashbook);
addDinoWallStories(dashbook);
addMultiballStories(dashbook);
runApp(dashbook);
}

@ -0,0 +1,66 @@
import 'package:flame/input.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:pinball_components/pinball_components.dart';
import 'package:sandbox/stories/ball/basic_ball_game.dart';
class MultiballGame extends BallGame with KeyboardEvents {
MultiballGame()
: super(
imagesFileNames: [
Assets.images.multiball.a.active.keyName,
Assets.images.multiball.a.inactive.keyName,
Assets.images.multiball.b.active.keyName,
Assets.images.multiball.b.inactive.keyName,
Assets.images.multiball.c.active.keyName,
Assets.images.multiball.c.inactive.keyName,
Assets.images.multiball.d.active.keyName,
Assets.images.multiball.d.inactive.keyName,
],
);
static const description = '''
Shows how the Multiball are rendered.
- Tap anywhere on the screen to spawn a ball into the game.
- Press space bar for animate state multiballs.
''';
late final Multiball _multiballA;
late final Multiball _multiballB;
late final Multiball _multiballC;
late final Multiball _multiballD;
@override
Future<void> onLoad() async {
await super.onLoad();
camera.followVector2(Vector2.zero());
await addAll([
_multiballA = Multiball.a(),
_multiballB = Multiball.b(),
_multiballC = Multiball.c(),
_multiballD = Multiball.d(),
]);
await traceAllBodies();
}
@override
KeyEventResult onKeyEvent(
RawKeyEvent event,
Set<LogicalKeyboardKey> keysPressed,
) {
if (event is RawKeyDownEvent &&
event.logicalKey == LogicalKeyboardKey.space) {
_multiballA.animate();
_multiballB.animate();
_multiballC.animate();
_multiballD.animate();
return KeyEventResult.handled;
}
return KeyEventResult.ignored;
}
}

@ -0,0 +1,11 @@
import 'package:dashbook/dashbook.dart';
import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/multiball/multiball_game.dart';
void addMultiballStories(Dashbook dashbook) {
dashbook.storiesOf('Multiball').addGame(
title: 'Assets',
description: MultiballGame.description,
gameBuilder: (_) => MultiballGame(),
);
}

@ -11,6 +11,7 @@ export 'flutter_forest/stories.dart';
export 'google_word/stories.dart';
export 'launch_ramp/stories.dart';
export 'layer/stories.dart';
export 'multiball/stories.dart';
export 'plunger/stories.dart';
export 'score_text/stories.dart';
export 'slingshot/stories.dart';

@ -112,6 +112,18 @@ void main() {
},
);
flameTester.test(
'has only one Multiball',
(game) async {
await game.ready();
expect(
game.children.whereType<MultiballGroup>().length,
equals(1),
);
},
);
group('controller', () {
// TODO(alestiago): Write test to be controller agnostic.
group('listenWhen', () {

Loading…
Cancel
Save