mirror of https://github.com/flutter/pinball.git
parent
50ee9775df
commit
c0f4ef05b3
@ -0,0 +1,27 @@
|
||||
import 'package:flame/components.dart';
|
||||
import 'package:flame_forge2d/flame_forge2d.dart';
|
||||
import 'package:pinball/game/components/components.dart';
|
||||
import 'package:pinball_components/pinball_components.dart' hide Assets;
|
||||
|
||||
/// {@template plunger_zone}
|
||||
/// A [Blueprint] which groups the [Plunger], [RocketSpriteComponent] and
|
||||
/// [LaunchRamp].
|
||||
/// {@endtemplate}
|
||||
class Launcher extends Forge2DBlueprint {
|
||||
/// {@macro plunger_zone}
|
||||
Launcher();
|
||||
|
||||
/// [Plunger] to launch the [Ball] into the board.
|
||||
late final Plunger plunger;
|
||||
|
||||
@override
|
||||
void build(Forge2DGame gameRef) {
|
||||
plunger = ControlledPlunger(compressionDistance: 12.3)
|
||||
..initialPosition = Vector2(40.1, -38);
|
||||
|
||||
final _rocket = RocketSpriteComponent()..position = Vector2(43, 62);
|
||||
|
||||
gameRef.addFromBlueprint(LaunchRamp());
|
||||
addAll([_rocket, plunger]);
|
||||
}
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
import 'package:flame/components.dart';
|
||||
import 'package:flame_forge2d/flame_forge2d.dart';
|
||||
import 'package:pinball/game/components/components.dart';
|
||||
import 'package:pinball/gen/assets.gen.dart';
|
||||
import 'package:pinball_components/pinball_components.dart' hide Assets;
|
||||
|
||||
/// {@template plunger_zone}
|
||||
/// A [Blueprint] which creates zone for the [Plunger].
|
||||
/// {@endtemplate}
|
||||
class PlungerZone extends Forge2DBlueprint {
|
||||
/// {@macro plunger_zone}
|
||||
PlungerZone();
|
||||
|
||||
/// [Plunger] to launch the [Ball] into the board.
|
||||
late final Plunger plunger;
|
||||
|
||||
@override
|
||||
void build(Forge2DGame gameRef) {
|
||||
plunger = ControlledPlunger(compressionDistance: 12.3)
|
||||
..initialPosition = Vector2(40.1, -38);
|
||||
|
||||
final _rocket = _PlungerRocketSpriteComponent();
|
||||
|
||||
addAll([_rocket, plunger]);
|
||||
}
|
||||
}
|
||||
|
||||
class _PlungerRocketSpriteComponent extends SpriteComponent with HasGameRef {
|
||||
// TODO(ruimiguel): change this priority to be over launcher ramp and bottom
|
||||
// wall.
|
||||
_PlungerRocketSpriteComponent() : super(priority: 5);
|
||||
|
||||
@override
|
||||
Future<void> onLoad() async {
|
||||
await super.onLoad();
|
||||
final sprite = await gameRef.loadSprite(
|
||||
Assets.images.components.rocket.path,
|
||||
);
|
||||
this.sprite = sprite;
|
||||
size = sprite.originalSize / 10;
|
||||
anchor = Anchor.center;
|
||||
position = Vector2(43.5, 62);
|
||||
}
|
||||
}
|
Loading…
Reference in new issue