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