diff --git a/app/pages/flightlab/medienstationen/index.vue b/app/pages/flightlab/medienstationen/index.vue index 9ad626e..b13bfda 100644 --- a/app/pages/flightlab/medienstationen/index.vue +++ b/app/pages/flightlab/medienstationen/index.vue @@ -102,6 +102,40 @@ + +
+
+
+
+
+ +
+ + Input + +
+

Stick Input

+

+ Touchscreen-Controller für Sidestick und Schubhebel. + Öffne diese Seite auf einem zweiten Gerät. +

+
+ + + Öffnen + + +
+
+
+
diff --git a/app/pages/flightlab/medienstationen/learn-pfd.vue b/app/pages/flightlab/medienstationen/learn-pfd.vue index 0dde6d6..b0e3fdf 100644 --- a/app/pages/flightlab/medienstationen/learn-pfd.vue +++ b/app/pages/flightlab/medienstationen/learn-pfd.vue @@ -127,7 +127,25 @@ {{ engine.scenario.title }}
-
+
+ +
+ + Input: + {{ sync.sessionCode.value }} + +
+
+ + Session wird erstellt... +
+ (null) const isFullscreen = ref(false) const canFullscreen = ref(false) +const wsConnected = ref(false) const fullscreenEvents = ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'] let initialSpeechTimeout: ReturnType | null = null @@ -532,7 +551,7 @@ watch(() => engine.currentPhaseId.value, async (newId, oldId) => { }) // --- Lifecycle --- -onMounted(() => { +onMounted(async () => { // Start FBW physics fbw.start() @@ -547,6 +566,14 @@ onMounted(() => { window.addEventListener('keydown', onGlobalKeydown) } + // Create WebSocket session for stick input + try { + await sync.createSession('learn-pfd') + wsConnected.value = true + } catch (e) { + console.warn('[learn-pfd] WS session creation failed:', e) + } + // Speak initial welcome const phase = engine.currentPhase.value if (phase?.atcMessage) { @@ -570,6 +597,7 @@ onBeforeUnmount(() => { clearTimeout(initialSpeechTimeout) initialSpeechTimeout = null } + sync.disconnect() fbw.cleanup() engine.cleanup() audio.dispose() diff --git a/app/pages/flightlab/medienstationen/stick-input.vue b/app/pages/flightlab/medienstationen/stick-input.vue new file mode 100644 index 0000000..4b978a9 --- /dev/null +++ b/app/pages/flightlab/medienstationen/stick-input.vue @@ -0,0 +1,278 @@ + + + + +