|
|
|
@ -5,6 +5,7 @@ import 'package:flame/components.dart';
|
|
|
|
|
import 'package:flame/input.dart';
|
|
|
|
|
import 'package:flame_bloc/flame_bloc.dart';
|
|
|
|
|
import 'package:flame_forge2d/flame_forge2d.dart';
|
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
|
import 'package:pinball/flame/flame.dart';
|
|
|
|
|
import 'package:pinball/game/game.dart';
|
|
|
|
|
import 'package:pinball/gen/assets.gen.dart';
|
|
|
|
@ -91,7 +92,10 @@ class PinballGame extends Forge2DGame
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class _GameBallsController extends ComponentController<PinballGame>
|
|
|
|
|
with BlocComponent<GameBloc, GameState>, HasGameRef<PinballGame> {
|
|
|
|
|
with
|
|
|
|
|
BlocComponent<GameBloc, GameState>,
|
|
|
|
|
HasGameRef<PinballGame>,
|
|
|
|
|
KeyboardHandler {
|
|
|
|
|
_GameBallsController(PinballGame game) : super(game);
|
|
|
|
|
|
|
|
|
|
late final Plunger _plunger;
|
|
|
|
@ -132,6 +136,27 @@ class _GameBallsController extends ComponentController<PinballGame>
|
|
|
|
|
void attachTo(Plunger plunger) {
|
|
|
|
|
_plunger = plunger;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
bool onKeyEvent(
|
|
|
|
|
RawKeyEvent event,
|
|
|
|
|
Set<LogicalKeyboardKey> keysPressed,
|
|
|
|
|
) {
|
|
|
|
|
final keys = [
|
|
|
|
|
LogicalKeyboardKey.space,
|
|
|
|
|
LogicalKeyboardKey.arrowDown,
|
|
|
|
|
LogicalKeyboardKey.keyS,
|
|
|
|
|
];
|
|
|
|
|
if (!keys.contains(event.logicalKey)) return true;
|
|
|
|
|
|
|
|
|
|
if (event is RawKeyDownEvent) {
|
|
|
|
|
_plunger.pull();
|
|
|
|
|
} else if (event is RawKeyUpEvent) {
|
|
|
|
|
_plunger.release();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class DebugPinballGame extends PinballGame with TapDetector {
|
|
|
|
|