feat: Refactor renderer key event handling and disable FPS counter by default
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
@@ -90,25 +90,6 @@ class _GameScreenState extends State<GameScreen> {
|
||||
),
|
||||
),
|
||||
|
||||
// Tab toggles the renderer implementation for quick visual debugging.
|
||||
Focus(
|
||||
autofocus: true,
|
||||
onKeyEvent: (node, event) {
|
||||
if (event is KeyDownEvent) {
|
||||
if (event.logicalKey == LogicalKeyboardKey.tab) {
|
||||
setState(_cycleRendererMode);
|
||||
return KeyEventResult.handled;
|
||||
}
|
||||
if (event.logicalKey == LogicalKeyboardKey.backquote) {
|
||||
setState(_toggleFpsCounter);
|
||||
return KeyEventResult.handled;
|
||||
}
|
||||
}
|
||||
return KeyEventResult.ignored;
|
||||
},
|
||||
child: const SizedBox.shrink(),
|
||||
),
|
||||
|
||||
// A second full-screen overlay keeps the presentation simple while
|
||||
// the engine is still warming up or decoding the first frame.
|
||||
if (!_engine.isInitialized)
|
||||
@@ -143,17 +124,40 @@ class _GameScreenState extends State<GameScreen> {
|
||||
// reset level state or audio playback.
|
||||
switch (_rendererMode) {
|
||||
case _RendererMode.software:
|
||||
return WolfFlutterRenderer(engine: _engine);
|
||||
return WolfFlutterRenderer(
|
||||
engine: _engine,
|
||||
onKeyEvent: _handleRendererKeyEvent,
|
||||
);
|
||||
case _RendererMode.ascii:
|
||||
return WolfAsciiRenderer(engine: _engine);
|
||||
return WolfAsciiRenderer(
|
||||
engine: _engine,
|
||||
onKeyEvent: _handleRendererKeyEvent,
|
||||
);
|
||||
case _RendererMode.glsl:
|
||||
return WolfGlslRenderer(
|
||||
engine: _engine,
|
||||
onKeyEvent: _handleRendererKeyEvent,
|
||||
onUnavailable: _onGlslUnavailable,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void _handleRendererKeyEvent(KeyEvent event) {
|
||||
if (event is! KeyDownEvent) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.logicalKey == LogicalKeyboardKey.tab) {
|
||||
setState(_cycleRendererMode);
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.logicalKey == LogicalKeyboardKey.backquote ||
|
||||
event.character == '`') {
|
||||
setState(_toggleFpsCounter);
|
||||
}
|
||||
}
|
||||
|
||||
void _cycleRendererMode() {
|
||||
switch (_rendererMode) {
|
||||
case _RendererMode.software:
|
||||
|
||||
Reference in New Issue
Block a user