refactor: move to package and test

pull/120/head
Allison Ryan 4 years ago
parent b136385d96
commit 0dd2dcc2eb

@ -6,7 +6,6 @@ export 'flipper_controller.dart';
export 'flutter_forest.dart'; export 'flutter_forest.dart';
export 'jetpack_ramp.dart'; export 'jetpack_ramp.dart';
export 'kicker.dart'; export 'kicker.dart';
export 'launcher_ramp.dart';
export 'plunger.dart'; export 'plunger.dart';
export 'score_points.dart'; export 'score_points.dart';
export 'spaceship_exit_rail.dart'; export 'spaceship_exit_rail.dart';

@ -15,6 +15,10 @@ extension PinballGameAssetsX on PinballGame {
images.load(components.Assets.images.baseboard.right.keyName), images.load(components.Assets.images.baseboard.right.keyName),
images.load(components.Assets.images.spaceshipSaucer.keyName), images.load(components.Assets.images.spaceshipSaucer.keyName),
images.load(components.Assets.images.spaceshipBridge.keyName), images.load(components.Assets.images.spaceshipBridge.keyName),
images.load(components.Assets.images.launchRamp.ramp.keyName),
images.load(
components.Assets.images.launchRamp.foregroundRailing.keyName,
),
images.load(Assets.images.components.background.path), images.load(Assets.images.components.background.path),
images.load(Assets.images.components.launchRamp.launchRamp.path), images.load(Assets.images.components.launchRamp.launchRamp.path),
images.load(Assets.images.components.launchRamp.launchRailFG.path), images.load(Assets.images.components.launchRamp.launchRailFG.path),

@ -35,7 +35,7 @@ class PinballGame extends Forge2DGame
unawaited(add(Board())); unawaited(add(Board()));
unawaited(_addPlunger()); unawaited(_addPlunger());
unawaited(_addBonusWord()); unawaited(_addBonusWord());
unawaited(_addPaths()); unawaited(_addRamps());
unawaited( unawaited(
addFromBlueprint( addFromBlueprint(
Spaceship( Spaceship(
@ -86,9 +86,9 @@ class PinballGame extends Forge2DGame
); );
} }
Future<void> _addPaths() async { Future<void> _addRamps() async {
unawaited(addFromBlueprint(Jetpack())); unawaited(addFromBlueprint(Jetpack()));
unawaited(addFromBlueprint(Launcher())); unawaited(addFromBlueprint(LaunchRamp()));
} }
void spawnBall() { void spawnBall() {

@ -21,6 +21,9 @@ class $AssetsImagesGen {
AssetGenImage get flutterSignPost => AssetGenImage get flutterSignPost =>
const AssetGenImage('assets/images/flutter_sign_post.png'); const AssetGenImage('assets/images/flutter_sign_post.png');
$AssetsImagesLaunchRampGen get launchRamp =>
const $AssetsImagesLaunchRampGen();
/// File path: assets/images/spaceship_bridge.png /// File path: assets/images/spaceship_bridge.png
AssetGenImage get spaceshipBridge => AssetGenImage get spaceshipBridge =>
const AssetGenImage('assets/images/spaceship_bridge.png'); const AssetGenImage('assets/images/spaceship_bridge.png');
@ -54,6 +57,18 @@ class $AssetsImagesFlipperGen {
const AssetGenImage('assets/images/flipper/right.png'); const AssetGenImage('assets/images/flipper/right.png');
} }
class $AssetsImagesLaunchRampGen {
const $AssetsImagesLaunchRampGen();
/// File path: assets/images/launch_ramp/foreground-railing.png
AssetGenImage get foregroundRailing =>
const AssetGenImage('assets/images/launch_ramp/foreground-railing.png');
/// File path: assets/images/launch_ramp/ramp.png
AssetGenImage get ramp =>
const AssetGenImage('assets/images/launch_ramp/ramp.png');
}
class Assets { class Assets {
Assets._(); Assets._();

@ -7,6 +7,7 @@ export 'flipper.dart';
export 'flutter_sign_post.dart'; export 'flutter_sign_post.dart';
export 'initial_position.dart'; export 'initial_position.dart';
export 'joint_anchor.dart'; export 'joint_anchor.dart';
export 'launch_ramp.dart';
export 'layer.dart'; export 'layer.dart';
export 'ramp_opening.dart'; export 'ramp_opening.dart';
export 'shapes/shapes.dart'; export 'shapes/shapes.dart';

@ -4,44 +4,43 @@ import 'dart:math' as math;
import 'package:flame/components.dart'; import 'package:flame/components.dart';
import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:pinball/gen/assets.gen.dart'; import 'package:pinball_components/pinball_components.dart';
import 'package:pinball_components/pinball_components.dart' hide Assets;
/// {@template launcher} /// {@template launch_ramp}
/// A [Blueprint] which creates the [LauncherRamp] and /// A [Blueprint] which creates the [_LaunchRampBase] and
/// [LauncherForegroundRailing]. /// [_LaunchRampForegroundRailing].
/// {@endtemplate} /// {@endtemplate}
class Launcher extends Forge2DBlueprint { class LaunchRamp extends Forge2DBlueprint {
@override @override
void build(_) { void build(_) {
addAllContactCallback([ addAllContactCallback([
RampOpeningBallContactCallback<_LauncherExit>(), RampOpeningBallContactCallback<_LaunchRampExit>(),
]); ]);
final launcherRamp = LauncherRamp()..layer = Layer.launcher; final launchRampBase = _LaunchRampBase()..layer = Layer.launcher;
final launcherForegroundRailing = LauncherForegroundRailing() final launchRampForegroundRailing = _LaunchRampForegroundRailing()
..layer = Layer.launcher; ..layer = Layer.launcher;
final launcherExit = _LauncherExit(rotation: math.pi / 2) final launchRampExit = _LaunchRampExit(rotation: math.pi / 2)
..initialPosition = Vector2(1.8, 34.2) ..initialPosition = Vector2(1.8, 34.2)
..layer = Layer.opening ..layer = Layer.opening
..renderBody = false; ..renderBody = false;
addAll([ addAll([
launcherRamp, launchRampBase,
launcherForegroundRailing, launchRampForegroundRailing,
launcherExit, launchRampExit,
]); ]);
} }
} }
/// {@template launcher_ramp} /// {@template launch_ramp_base}
/// Ramp the [Ball] is launched from at the beginning of each ball life. /// Ramp the [Ball] is launched from at the beginning of each ball life.
/// {@endtemplate} /// {@endtemplate}
class LauncherRamp extends BodyComponent with InitialPosition, Layered { class _LaunchRampBase extends BodyComponent with InitialPosition, Layered {
/// {@macro launcher_ramp} /// {@macro launch_ramp_base}
LauncherRamp() : super(priority: -1) { _LaunchRampBase() : super(priority: -1) {
layer = Layer.launcher; layer = Layer.launcher;
} }
@ -106,7 +105,7 @@ class LauncherRamp extends BodyComponent with InitialPosition, Layered {
await super.onLoad(); await super.onLoad();
final sprite = await gameRef.loadSprite( final sprite = await gameRef.loadSprite(
Assets.images.components.launchRamp.launchRamp.path, Assets.images.launchRamp.ramp.keyName,
); );
final spriteComponent = SpriteComponent( final spriteComponent = SpriteComponent(
sprite: sprite, sprite: sprite,
@ -133,13 +132,13 @@ class LauncherRamp extends BodyComponent with InitialPosition, Layered {
} }
} }
/// {@template launcher_foreground_railing} /// {@template launch_ramp_foreground_railing}
/// Foreground railing for the [LauncherRamp] to render in front of the [Ball]. /// Foreground railing for the [_LaunchRampBase] to render in front of the [Ball].
/// {@endtemplate} /// {@endtemplate}
class LauncherForegroundRailing extends BodyComponent class _LaunchRampForegroundRailing extends BodyComponent
with InitialPosition, Layered { with InitialPosition, Layered {
/// {@macro launcher_foreground_railing} /// {@macro launch_ramp_foreground_railing}
LauncherForegroundRailing() : super(priority: 4) { _LaunchRampForegroundRailing() : super(priority: 4) {
layer = Layer.launcher; layer = Layer.launcher;
} }
@ -179,7 +178,7 @@ class LauncherForegroundRailing extends BodyComponent
await super.onLoad(); await super.onLoad();
final sprite = await gameRef.loadSprite( final sprite = await gameRef.loadSprite(
Assets.images.components.launchRamp.launchRailFG.path, Assets.images.launchRamp.foregroundRailing.keyName,
); );
final spriteComponent = SpriteComponent( final spriteComponent = SpriteComponent(
sprite: sprite, sprite: sprite,
@ -207,13 +206,13 @@ class LauncherForegroundRailing extends BodyComponent
} }
} }
/// {@template launcher_exit} /// {@template launch_ramp_exit}
/// [RampOpening] with [Layer.launcher] to filter [Ball]s exiting the /// [RampOpening] with [Layer.launcher] to filter [Ball]s exiting the
/// [Launcher]. /// [LaunchRamp].
/// {@endtemplate} /// {@endtemplate}
class _LauncherExit extends RampOpening { class _LaunchRampExit extends RampOpening {
/// {@macro launcher_exit} /// {@macro launch_ramp_exit}
_LauncherExit({ _LaunchRampExit({
required double rotation, required double rotation,
}) : _rotation = rotation, }) : _rotation = rotation,
super( super(

@ -28,6 +28,7 @@ flutter:
- assets/images/ - assets/images/
- assets/images/baseboard/ - assets/images/baseboard/
- assets/images/flipper/ - assets/images/flipper/
- assets/images/launch_ramp/
flutter_gen: flutter_gen:
line_length: 80 line_length: 80

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

@ -0,0 +1,30 @@
// ignore_for_file: cascade_invocations
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flame_test/flame_test.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:pinball_components/pinball_components.dart';
import '../../helpers/helpers.dart';
void main() {
group('LaunchRamp', () {
final tester = FlameTester(TestGame.new);
tester.testGameWidget(
'renders correctly',
setUp: (game, tester) async {
await game.addFromBlueprint(LaunchRamp());
await game.ready();
game.camera.followVector2(Vector2.zero());
game.camera.zoom = 4.1;
},
verify: (game, tester) async {
await expectLater(
find.byGame<Forge2DGame>(),
matchesGoldenFile('golden/launch-ramp.png'),
);
},
);
});
}
Loading…
Cancel
Save