feat: added multipliers to sandbox

pull/231/head
RuiAlonso 3 years ago
parent 9a21264571
commit 611470ba4c

@ -33,6 +33,7 @@ void main() {
addLaunchRampStories(dashbook);
addScoreTextStories(dashbook);
addBackboardStories(dashbook);
addMultipliersStories(dashbook);
runApp(dashbook);
}

@ -0,0 +1,111 @@
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 MultipliersGame extends BasicBallGame with KeyboardEvents {
MultipliersGame() : super(color: const Color(0xFF009900));
static const info = '''
Shows how the Multipliers are rendered.
- Tap anywhere on the screen to spawn a ball into the game.
- Press digits 2 to 6 for toggle state multipliers 2 to 6.
''';
late final MultiplierSpriteGroupComponent x2;
late final MultiplierSpriteGroupComponent x3;
late final MultiplierSpriteGroupComponent x4;
late final MultiplierSpriteGroupComponent x5;
late final MultiplierSpriteGroupComponent x6;
@override
Future<void> onLoad() async {
await super.onLoad();
await images.loadAll([
Assets.images.multiplier.x2.active.keyName,
Assets.images.multiplier.x2.inactive.keyName,
Assets.images.multiplier.x3.active.keyName,
Assets.images.multiplier.x3.inactive.keyName,
Assets.images.multiplier.x4.active.keyName,
Assets.images.multiplier.x4.inactive.keyName,
Assets.images.multiplier.x5.active.keyName,
Assets.images.multiplier.x5.inactive.keyName,
Assets.images.multiplier.x6.active.keyName,
Assets.images.multiplier.x6.inactive.keyName,
]);
camera.followVector2(Vector2.zero());
x2 = MultiplierSpriteGroupComponent(
position: Vector2(-20, 0),
onAssetPath: Assets.images.multiplier.x2.active.keyName,
offAssetPath: Assets.images.multiplier.x2.inactive.keyName,
);
x3 = MultiplierSpriteGroupComponent(
position: Vector2(20, -5),
onAssetPath: Assets.images.multiplier.x3.active.keyName,
offAssetPath: Assets.images.multiplier.x3.inactive.keyName,
);
x4 = MultiplierSpriteGroupComponent(
position: Vector2(0, -15),
onAssetPath: Assets.images.multiplier.x4.active.keyName,
offAssetPath: Assets.images.multiplier.x4.inactive.keyName,
);
x5 = MultiplierSpriteGroupComponent(
position: Vector2(-10, -25),
onAssetPath: Assets.images.multiplier.x5.active.keyName,
offAssetPath: Assets.images.multiplier.x5.inactive.keyName,
);
x6 = MultiplierSpriteGroupComponent(
position: Vector2(10, -35),
onAssetPath: Assets.images.multiplier.x6.active.keyName,
offAssetPath: Assets.images.multiplier.x6.inactive.keyName,
);
await addAll([x2, x3, x4, x5, x6]);
await traceAllBodies();
}
@override
KeyEventResult onKeyEvent(
RawKeyEvent event,
Set<LogicalKeyboardKey> keysPressed,
) {
if (event is RawKeyDownEvent) {
if (event.logicalKey == LogicalKeyboardKey.digit2) {
x2.toggle();
}
if (event.logicalKey == LogicalKeyboardKey.digit3) {
x3.toggle();
}
if (event.logicalKey == LogicalKeyboardKey.digit4) {
x4.toggle();
}
if (event.logicalKey == LogicalKeyboardKey.digit5) {
x5.toggle();
}
if (event.logicalKey == LogicalKeyboardKey.digit6) {
x6.toggle();
}
return KeyEventResult.handled;
}
return KeyEventResult.ignored;
}
}
extension on MultiplierSpriteGroupComponent {
void toggle() {
if (current == MultiplierSpriteState.active) {
current = MultiplierSpriteState.inactive;
} else {
current = MultiplierSpriteState.active;
}
}
}

@ -0,0 +1,15 @@
import 'package:dashbook/dashbook.dart';
import 'package:flame/game.dart';
import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/multipliers/multipliers_game.dart';
void addMultipliersStories(Dashbook dashbook) {
dashbook.storiesOf('Multipliers').add(
'Basic',
(context) => GameWidget(
game: MultipliersGame()..trace = context.boolProperty('Trace', true),
),
codeLink: buildSourceLink('multiplier/basic.dart'),
info: MultipliersGame.info,
);
}

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

@ -54,6 +54,16 @@ void main() {
Assets.images.boundary.bottom.keyName,
Assets.images.slingshot.upper.keyName,
Assets.images.slingshot.lower.keyName,
Assets.images.multiplier.x2.active.keyName,
Assets.images.multiplier.x2.inactive.keyName,
Assets.images.multiplier.x3.active.keyName,
Assets.images.multiplier.x3.inactive.keyName,
Assets.images.multiplier.x4.active.keyName,
Assets.images.multiplier.x4.inactive.keyName,
Assets.images.multiplier.x5.active.keyName,
Assets.images.multiplier.x5.inactive.keyName,
Assets.images.multiplier.x6.active.keyName,
Assets.images.multiplier.x6.inactive.keyName,
];
final flameTester = FlameTester(() => PinballTestGame(assets));
final debugModeFlameTester = FlameTester(() => DebugPinballTestGame(assets));

Loading…
Cancel
Save