refactor: keyevents to gamecontroller

pull/152/head
RuiAlonso 4 years ago
parent 6b044a4474
commit 6a7e9e7422

@ -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 {

@ -74,6 +74,7 @@ class Plunger extends BodyComponent with InitialPosition {
Future<void> onLoad() async {
await super.onLoad();
await _anchorToJoint();
renderBody = false;
await add(_PlungerSpriteComponent());
}
}

Loading…
Cancel
Save