@the-inclusionist/engine 9.0.0 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +120 -78
- package/app/css/style.css +761 -377
- package/app/public/vendor/fonts/playwrite-cu.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-es-deco.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-es.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-gb-j.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-gb-s.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-pe.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-pt.woff2 +0 -0
- package/app/public/vendor/fonts-licences/NOTICE.txt +166 -0
- package/app/public/vendor/fonts-licences/OFL-1.1.txt +86 -0
- package/app/public/vendor/fonts.css +36 -84
- package/dist-pkg/boot/create-game.d.ts +499 -219
- package/dist-pkg/boot/create-game.js +3944 -562
- package/dist-pkg/core/a11y-sr.d.ts +25 -3
- package/dist-pkg/core/a11y-sr.js +38 -19
- package/dist-pkg/core/accessible-label.d.ts +17 -0
- package/dist-pkg/core/accessible-label.js +37 -0
- package/dist-pkg/core/accommodation-subjects.d.ts +26 -0
- package/dist-pkg/core/accommodation-subjects.js +32 -0
- package/dist-pkg/core/accommodations.d.ts +125 -0
- package/dist-pkg/core/accommodations.js +195 -0
- package/dist-pkg/core/actions.d.ts +108 -55
- package/dist-pkg/core/actions.js +122 -71
- package/dist-pkg/core/calm-mode.d.ts +31 -0
- package/dist-pkg/core/calm-mode.js +47 -0
- package/dist-pkg/core/camera-cycle.d.ts +15 -0
- package/dist-pkg/core/camera-cycle.js +7 -0
- package/dist-pkg/core/caption-duration.d.ts +15 -0
- package/dist-pkg/core/caption-duration.js +19 -0
- package/dist-pkg/core/cartridge-problems.d.ts +34 -0
- package/dist-pkg/core/cartridge-problems.js +53 -0
- package/dist-pkg/core/constants.d.ts +0 -54
- package/dist-pkg/core/constants.js +9 -76
- package/dist-pkg/core/contract.d.ts +142 -164
- package/dist-pkg/core/contract.js +222 -208
- package/dist-pkg/core/dom-query.d.ts +4 -4
- package/dist-pkg/core/dom-query.js +12 -20
- package/dist-pkg/core/entity.d.ts +62 -77
- package/dist-pkg/core/entity.js +18 -32
- package/dist-pkg/core/escape-html.d.ts +9 -10
- package/dist-pkg/core/escape-html.js +16 -20
- package/dist-pkg/core/flash-threshold.d.ts +17 -0
- package/dist-pkg/core/flash-threshold.js +113 -0
- package/dist-pkg/core/game-speed.d.ts +11 -0
- package/dist-pkg/core/game-speed.js +16 -0
- package/dist-pkg/core/genres.d.ts +20 -0
- package/dist-pkg/core/genres.js +44 -0
- package/dist-pkg/core/i18n.d.ts +71 -60
- package/dist-pkg/core/i18n.js +186 -200
- package/dist-pkg/core/loop.d.ts +17 -6
- package/dist-pkg/core/loop.js +26 -26
- package/dist-pkg/core/pause-icon-catalogue.d.ts +15 -0
- package/dist-pkg/core/pause-icon-catalogue.js +54 -0
- package/dist-pkg/core/ring.d.ts +17 -0
- package/dist-pkg/core/ring.js +29 -0
- package/dist-pkg/core/rng.d.ts +7 -12
- package/dist-pkg/core/rng.js +23 -53
- package/dist-pkg/core/route.d.ts +26 -26
- package/dist-pkg/core/route.js +126 -121
- package/dist-pkg/core/scenes.d.ts +37 -40
- package/dist-pkg/core/scenes.js +41 -43
- package/dist-pkg/core/screens.d.ts +4 -4
- package/dist-pkg/core/screens.js +11 -16
- package/dist-pkg/core/session-clock.d.ts +23 -0
- package/dist-pkg/core/session-clock.js +37 -0
- package/dist-pkg/core/setting-defaults.d.ts +61 -0
- package/dist-pkg/core/setting-defaults.js +66 -0
- package/dist-pkg/core/speech-rate.d.ts +29 -0
- package/dist-pkg/core/speech-rate.js +47 -0
- package/dist-pkg/core/state.d.ts +118 -118
- package/dist-pkg/core/state.js +322 -297
- package/dist-pkg/core/visual-cycles.d.ts +30 -0
- package/dist-pkg/core/visual-cycles.js +52 -0
- package/dist-pkg/core/visual-state.d.ts +13 -0
- package/dist-pkg/core/visual-state.js +6 -0
- package/dist-pkg/educational/activities-registry.d.ts +1 -1
- package/dist-pkg/educational/activities-registry.js +9 -8
- package/dist-pkg/educational/adaptive-engine.d.ts +11 -11
- package/dist-pkg/educational/adaptive-engine.js +17 -17
- package/dist-pkg/educational/segment-bar.d.ts +12 -12
- package/dist-pkg/educational/segment-bar.js +9 -9
- package/dist-pkg/i18n/en.js +324 -223
- package/dist-pkg/i18n/es.js +323 -223
- package/dist-pkg/i18n/pt.js +348 -226
- package/dist-pkg/input/default-bindings.d.ts +37 -38
- package/dist-pkg/input/default-bindings.js +127 -144
- package/dist-pkg/input/devices.d.ts +7 -7
- package/dist-pkg/input/devices.js +17 -16
- package/dist-pkg/input/edges.d.ts +23 -32
- package/dist-pkg/input/edges.js +23 -28
- package/dist-pkg/input/empathy-filter.d.ts +22 -0
- package/dist-pkg/input/empathy-filter.js +34 -0
- package/dist-pkg/input/face-map.d.ts +96 -0
- package/dist-pkg/input/face-map.js +255 -0
- package/dist-pkg/input/face-signals.d.ts +40 -0
- package/dist-pkg/input/face-signals.js +48 -0
- package/dist-pkg/input/gamepad.d.ts +195 -145
- package/dist-pkg/input/gamepad.js +383 -556
- package/dist-pkg/input/gaze-cycle.d.ts +64 -0
- package/dist-pkg/input/gaze-cycle.js +133 -0
- package/dist-pkg/input/gaze-relative.d.ts +68 -0
- package/dist-pkg/input/gaze-relative.js +142 -0
- package/dist-pkg/input/hand-map.d.ts +28 -0
- package/dist-pkg/input/hand-map.js +142 -0
- package/dist-pkg/input/input-cooldown.d.ts +17 -0
- package/dist-pkg/input/input-cooldown.js +39 -0
- package/dist-pkg/input/key-default.d.ts +30 -0
- package/dist-pkg/input/key-default.js +60 -0
- package/dist-pkg/input/keyboard-runtime.d.ts +15 -21
- package/dist-pkg/input/keyboard-runtime.js +23 -27
- package/dist-pkg/input/keyboard.d.ts +68 -63
- package/dist-pkg/input/keyboard.js +83 -105
- package/dist-pkg/input/keydown.d.ts +123 -137
- package/dist-pkg/input/keydown.js +284 -289
- package/dist-pkg/input/latch-edge.d.ts +33 -21
- package/dist-pkg/input/latch-edge.js +34 -35
- package/dist-pkg/input/latch-scope.d.ts +51 -50
- package/dist-pkg/input/latch-scope.js +61 -82
- package/dist-pkg/input/latch-store.d.ts +26 -30
- package/dist-pkg/input/latch-store.js +42 -50
- package/dist-pkg/input/latch-sync.d.ts +29 -29
- package/dist-pkg/input/latch-sync.js +25 -25
- package/dist-pkg/input/latch.d.ts +14 -17
- package/dist-pkg/input/latch.js +29 -37
- package/dist-pkg/input/pad-defaults.d.ts +13 -16
- package/dist-pkg/input/pad-defaults.js +21 -28
- package/dist-pkg/input/pad-reading.d.ts +76 -0
- package/dist-pkg/input/pad-reading.js +169 -0
- package/dist-pkg/input/pad-wizard.d.ts +99 -0
- package/dist-pkg/input/pad-wizard.js +256 -0
- package/dist-pkg/input/pointer-space.d.ts +19 -20
- package/dist-pkg/input/pointer-space.js +27 -32
- package/dist-pkg/input/pointer.d.ts +39 -40
- package/dist-pkg/input/pointer.js +42 -45
- package/dist-pkg/input/state.d.ts +101 -89
- package/dist-pkg/input/state.js +54 -134
- package/dist-pkg/input/switch-scan.d.ts +59 -0
- package/dist-pkg/input/switch-scan.js +67 -0
- package/dist-pkg/input/synthetic-source.d.ts +42 -0
- package/dist-pkg/input/synthetic-source.js +57 -0
- package/dist-pkg/input/touch-bindings.d.ts +127 -116
- package/dist-pkg/input/touch-bindings.js +158 -173
- package/dist-pkg/input/touch.d.ts +147 -72
- package/dist-pkg/input/touch.js +362 -126
- package/dist-pkg/input/transport-in-use.d.ts +107 -0
- package/dist-pkg/input/transport-in-use.js +130 -0
- package/dist-pkg/input/transports.d.ts +90 -117
- package/dist-pkg/input/transports.js +104 -106
- package/dist-pkg/input/virtual-controller.d.ts +82 -0
- package/dist-pkg/input/virtual-controller.js +69 -0
- package/dist-pkg/input/vocabulary-migration.d.ts +50 -49
- package/dist-pkg/input/vocabulary-migration.js +80 -79
- package/dist-pkg/input/voice-map.d.ts +59 -0
- package/dist-pkg/input/voice-map.js +123 -0
- package/dist-pkg/platform/audio-ambient.d.ts +13 -2
- package/dist-pkg/platform/audio-ambient.js +14 -14
- package/dist-pkg/platform/audio-earcons.d.ts +20 -19
- package/dist-pkg/platform/audio-earcons.js +51 -42
- package/dist-pkg/platform/audio-jingles.js +9 -10
- package/dist-pkg/platform/audio-mixer.d.ts +14 -2
- package/dist-pkg/platform/audio-mixer.js +31 -39
- package/dist-pkg/platform/audio-sonar.d.ts +49 -152
- package/dist-pkg/platform/audio-sonar.js +124 -302
- package/dist-pkg/platform/audio.d.ts +62 -19
- package/dist-pkg/platform/audio.js +193 -168
- package/dist-pkg/platform/choose-by-voice.d.ts +70 -0
- package/dist-pkg/platform/choose-by-voice.js +157 -0
- package/dist-pkg/platform/flash-sampler.d.ts +19 -0
- package/dist-pkg/platform/flash-sampler.js +79 -0
- package/dist-pkg/platform/font-library.d.ts +77 -0
- package/dist-pkg/platform/font-library.js +98 -0
- package/dist-pkg/platform/font-library.json +721 -0
- package/dist-pkg/platform/heavy-catalogue.d.ts +77 -0
- package/dist-pkg/platform/heavy-catalogue.js +256 -0
- package/dist-pkg/platform/heavy-mirror.d.ts +20 -0
- package/dist-pkg/platform/heavy-mirror.js +73 -0
- package/dist-pkg/platform/heavy.d.ts +136 -0
- package/dist-pkg/platform/heavy.js +324 -0
- package/dist-pkg/platform/interruptible-speech.d.ts +23 -16
- package/dist-pkg/platform/interruptible-speech.js +77 -54
- package/dist-pkg/platform/kokoro-port.d.ts +27 -0
- package/dist-pkg/platform/kokoro-port.js +50 -0
- package/dist-pkg/platform/kokoro-runtime.d.ts +20 -0
- package/dist-pkg/platform/kokoro-runtime.js +52 -0
- package/dist-pkg/platform/kokoro.d.ts +70 -0
- package/dist-pkg/platform/kokoro.js +133 -0
- package/dist-pkg/platform/listener-scope.d.ts +12 -0
- package/dist-pkg/platform/listener-scope.js +90 -0
- package/dist-pkg/platform/locale-host.d.ts +14 -0
- package/dist-pkg/platform/locale-host.js +45 -0
- package/dist-pkg/platform/microphone.d.ts +51 -0
- package/dist-pkg/platform/microphone.js +118 -0
- package/dist-pkg/platform/onnx-runtime.d.ts +34 -0
- package/dist-pkg/platform/onnx-runtime.js +42 -0
- package/dist-pkg/platform/reading-in-worker.d.ts +64 -0
- package/dist-pkg/platform/reading-in-worker.js +125 -0
- package/dist-pkg/platform/reading-model.d.ts +94 -0
- package/dist-pkg/platform/reading-model.js +272 -0
- package/dist-pkg/platform/reading-runtime.d.ts +24 -0
- package/dist-pkg/platform/reading-runtime.js +164 -0
- package/dist-pkg/platform/reading-worker.d.ts +41 -0
- package/dist-pkg/platform/reading-worker.js +58 -0
- package/dist-pkg/platform/reading.d.ts +80 -0
- package/dist-pkg/platform/reading.js +136 -0
- package/dist-pkg/platform/speech-recognition.d.ts +60 -0
- package/dist-pkg/platform/speech-recognition.js +104 -0
- package/dist-pkg/platform/speech.d.ts +23 -1
- package/dist-pkg/platform/speech.js +29 -18
- package/dist-pkg/platform/storage-keys.d.ts +96 -0
- package/dist-pkg/platform/storage-keys.js +106 -0
- package/dist-pkg/platform/storage.d.ts +46 -111
- package/dist-pkg/platform/storage.js +104 -169
- package/dist-pkg/platform/tts.d.ts +85 -39
- package/dist-pkg/platform/tts.js +447 -127
- package/dist-pkg/platform/vision-loop.d.ts +23 -0
- package/dist-pkg/platform/vision-loop.js +56 -0
- package/dist-pkg/platform/vision.d.ts +132 -0
- package/dist-pkg/platform/vision.js +117 -0
- package/dist-pkg/platform/voice-listener.d.ts +40 -0
- package/dist-pkg/platform/voice-listener.js +88 -0
- package/dist-pkg/platform/voice-plan.d.ts +15 -98
- package/dist-pkg/platform/voice-plan.js +56 -143
- package/dist-pkg/platform/vosk-runtime.d.ts +96 -0
- package/dist-pkg/platform/vosk-runtime.js +151 -0
- package/dist-pkg/platform/vosk-vocabulary.d.ts +6 -0
- package/dist-pkg/platform/vosk-vocabulary.js +178 -0
- package/dist-pkg/render/canvas.d.ts +13 -7
- package/dist-pkg/render/canvas.js +13 -13
- package/dist-pkg/render/crt.d.ts +48 -12
- package/dist-pkg/render/crt.js +78 -80
- package/dist-pkg/render/cvd-matrices.d.ts +22 -18
- package/dist-pkg/render/cvd-matrices.js +37 -38
- package/dist-pkg/render/hc-role-data.d.ts +7 -7
- package/dist-pkg/render/hc-role-data.js +14 -14
- package/dist-pkg/render/high-contrast.d.ts +67 -56
- package/dist-pkg/render/high-contrast.js +226 -217
- package/dist-pkg/render/low-vision-drawing.d.ts +5 -0
- package/dist-pkg/render/low-vision-drawing.js +46 -0
- package/dist-pkg/render/lq-filter.d.ts +32 -20
- package/dist-pkg/render/lq-filter.js +59 -65
- package/dist-pkg/render/port.d.ts +86 -88
- package/dist-pkg/render/port.js +17 -23
- package/dist-pkg/render/screen-pipeline.d.ts +42 -42
- package/dist-pkg/render/screen-pipeline.js +80 -87
- package/dist-pkg/render/sprite-fx.d.ts +2 -1
- package/dist-pkg/render/sprite-fx.js +16 -14
- package/dist-pkg/render/viewports.d.ts +20 -15
- package/dist-pkg/render/viewports.js +83 -114
- package/dist-pkg/render/viz-axes-labels.d.ts +47 -0
- package/dist-pkg/render/viz-axes-labels.js +88 -0
- package/dist-pkg/render/viz-axes.d.ts +89 -86
- package/dist-pkg/render/viz-axes.js +128 -116
- package/dist-pkg/render/viz-modes.d.ts +28 -29
- package/dist-pkg/render/viz-modes.js +40 -45
- package/dist-pkg/render/viz-refusal.d.ts +32 -0
- package/dist-pkg/render/viz-refusal.js +57 -0
- package/dist-pkg/render/viz-setters.d.ts +104 -66
- package/dist-pkg/render/viz-setters.js +182 -191
- package/dist-pkg/ui/aac-sets.d.ts +45 -0
- package/dist-pkg/ui/aac-sets.js +41 -0
- package/dist-pkg/ui/audio-choices.d.ts +68 -0
- package/dist-pkg/ui/audio-choices.js +98 -0
- package/dist-pkg/ui/audio-rows-that-apply.d.ts +12 -0
- package/dist-pkg/ui/audio-rows-that-apply.js +43 -0
- package/dist-pkg/ui/camera-control.d.ts +53 -0
- package/dist-pkg/ui/camera-control.js +48 -0
- package/dist-pkg/ui/changed-mark.d.ts +9 -8
- package/dist-pkg/ui/changed-mark.js +22 -53
- package/dist-pkg/ui/control-choices.d.ts +37 -0
- package/dist-pkg/ui/control-choices.js +84 -0
- package/dist-pkg/ui/debug-panel.d.ts +59 -43
- package/dist-pkg/ui/debug-panel.js +68 -69
- package/dist-pkg/ui/declared-words.d.ts +21 -0
- package/dist-pkg/ui/declared-words.js +66 -0
- package/dist-pkg/ui/dom.d.ts +10 -14
- package/dist-pkg/ui/dom.js +10 -47
- package/dist-pkg/ui/drawing-problems.d.ts +25 -0
- package/dist-pkg/ui/drawing-problems.js +94 -0
- package/dist-pkg/ui/eye-control.d.ts +36 -0
- package/dist-pkg/ui/eye-control.js +178 -0
- package/dist-pkg/ui/face-control.d.ts +25 -0
- package/dist-pkg/ui/face-control.js +183 -0
- package/dist-pkg/ui/focus-trap.d.ts +39 -49
- package/dist-pkg/ui/focus-trap.js +56 -65
- package/dist-pkg/ui/fonts.d.ts +157 -68
- package/dist-pkg/ui/fonts.js +305 -115
- package/dist-pkg/ui/footer-scroll-driver.d.ts +14 -0
- package/dist-pkg/ui/footer-scroll-driver.js +201 -0
- package/dist-pkg/ui/footer-scroll.d.ts +38 -0
- package/dist-pkg/ui/footer-scroll.js +55 -0
- package/dist-pkg/ui/game-options.d.ts +47 -0
- package/dist-pkg/ui/game-options.js +158 -0
- package/dist-pkg/ui/gaze-overlay.d.ts +64 -0
- package/dist-pkg/ui/gaze-overlay.js +165 -0
- package/dist-pkg/ui/hand-control.d.ts +25 -0
- package/dist-pkg/ui/hand-control.js +143 -0
- package/dist-pkg/ui/help-panel.d.ts +87 -0
- package/dist-pkg/ui/help-panel.js +242 -0
- package/dist-pkg/ui/hud-bands.d.ts +62 -0
- package/dist-pkg/ui/hud-bands.js +146 -0
- package/dist-pkg/ui/hud-row.d.ts +34 -0
- package/dist-pkg/ui/hud-row.js +80 -0
- package/dist-pkg/ui/hud.d.ts +73 -73
- package/dist-pkg/ui/hud.js +94 -98
- package/dist-pkg/ui/item-announcement.d.ts +13 -12
- package/dist-pkg/ui/item-announcement.js +25 -26
- package/dist-pkg/ui/layout.d.ts +103 -28
- package/dist-pkg/ui/layout.js +117 -99
- package/dist-pkg/ui/libras-avatar-clip.d.ts +30 -0
- package/dist-pkg/ui/libras-avatar-clip.js +86 -0
- package/dist-pkg/ui/libras-avatar-load.d.ts +52 -0
- package/dist-pkg/ui/libras-avatar-load.js +134 -0
- package/dist-pkg/ui/libras-avatar-plan.d.ts +102 -0
- package/dist-pkg/ui/libras-avatar-plan.js +211 -0
- package/dist-pkg/ui/libras-avatar-player.d.ts +28 -0
- package/dist-pkg/ui/libras-avatar-player.js +226 -0
- package/dist-pkg/ui/libras-avatar-stage.d.ts +37 -0
- package/dist-pkg/ui/libras-avatar-stage.js +208 -0
- package/dist-pkg/ui/libras-glosses.d.ts +28 -0
- package/dist-pkg/ui/libras-glosses.js +161 -0
- package/dist-pkg/ui/locale-flags.d.ts +16 -0
- package/dist-pkg/ui/locale-flags.js +30 -0
- package/dist-pkg/ui/loop-crash.d.ts +17 -17
- package/dist-pkg/ui/loop-crash.js +33 -62
- package/dist-pkg/ui/menu-intent.d.ts +61 -0
- package/dist-pkg/ui/menu-intent.js +88 -0
- package/dist-pkg/ui/menu-items.d.ts +20 -0
- package/dist-pkg/ui/menu-items.js +51 -0
- package/dist-pkg/ui/menu-nav.d.ts +98 -92
- package/dist-pkg/ui/menu-nav.js +398 -286
- package/dist-pkg/ui/mobility-choices.d.ts +26 -0
- package/dist-pkg/ui/mobility-choices.js +41 -0
- package/dist-pkg/ui/motion-choices.d.ts +31 -0
- package/dist-pkg/ui/motion-choices.js +68 -0
- package/dist-pkg/ui/motion-scene.d.ts +24 -19
- package/dist-pkg/ui/motion-scene.js +29 -61
- package/dist-pkg/ui/mount-panel.d.ts +81 -0
- package/dist-pkg/ui/mount-panel.js +61 -0
- package/dist-pkg/ui/panel-shell.d.ts +65 -31
- package/dist-pkg/ui/panel-shell.js +92 -66
- package/dist-pkg/ui/panel-widgets.d.ts +150 -0
- package/dist-pkg/ui/panel-widgets.js +294 -0
- package/dist-pkg/ui/pause-buttons.d.ts +35 -0
- package/dist-pkg/ui/pause-buttons.js +66 -0
- package/dist-pkg/ui/pause-icons.d.ts +261 -347
- package/dist-pkg/ui/pause-icons.js +671 -601
- package/dist-pkg/ui/pause-markup.d.ts +86 -0
- package/dist-pkg/ui/pause-markup.js +125 -0
- package/dist-pkg/ui/reach-notice.d.ts +22 -23
- package/dist-pkg/ui/reach-notice.js +55 -58
- package/dist-pkg/ui/scan-overlay.d.ts +23 -0
- package/dist-pkg/ui/scan-overlay.js +50 -0
- package/dist-pkg/ui/screen-text.d.ts +25 -0
- package/dist-pkg/ui/screen-text.js +152 -0
- package/dist-pkg/ui/session-clock.d.ts +32 -0
- package/dist-pkg/ui/session-clock.js +67 -0
- package/dist-pkg/ui/settings-aac.d.ts +70 -0
- package/dist-pkg/ui/settings-aac.js +208 -0
- package/dist-pkg/ui/settings-audio.d.ts +97 -114
- package/dist-pkg/ui/settings-audio.js +493 -425
- package/dist-pkg/ui/settings-controls.d.ts +53 -96
- package/dist-pkg/ui/settings-controls.js +143 -215
- package/dist-pkg/ui/settings-empathy.d.ts +39 -30
- package/dist-pkg/ui/settings-empathy.js +53 -60
- package/dist-pkg/ui/settings-mobility.d.ts +192 -0
- package/dist-pkg/ui/settings-mobility.js +332 -0
- package/dist-pkg/ui/settings-motion.d.ts +91 -70
- package/dist-pkg/ui/settings-motion.js +287 -198
- package/dist-pkg/ui/settings-panel.d.ts +58 -45
- package/dist-pkg/ui/settings-panel.js +189 -94
- package/dist-pkg/ui/settings-typo.d.ts +29 -78
- package/dist-pkg/ui/settings-typo.js +158 -129
- package/dist-pkg/ui/settings-visual.d.ts +29 -87
- package/dist-pkg/ui/settings-visual.js +240 -193
- package/dist-pkg/ui/shell.d.ts +112 -135
- package/dist-pkg/ui/shell.js +148 -217
- package/dist-pkg/ui/simulation-list.d.ts +27 -0
- package/dist-pkg/ui/simulation-list.js +76 -0
- package/dist-pkg/ui/simulation-over-the-world.d.ts +23 -0
- package/dist-pkg/ui/simulation-over-the-world.js +131 -0
- package/dist-pkg/ui/simulation-refusal.d.ts +5 -31
- package/dist-pkg/ui/simulation-refusal.js +8 -56
- package/dist-pkg/ui/switchable-control.d.ts +11 -0
- package/dist-pkg/ui/switchable-control.js +19 -0
- package/dist-pkg/ui/title.d.ts +3 -12
- package/dist-pkg/ui/title.js +49 -18
- package/dist-pkg/ui/top-band.d.ts +26 -0
- package/dist-pkg/ui/top-band.js +96 -0
- package/dist-pkg/ui/typo-choices.d.ts +71 -0
- package/dist-pkg/ui/typo-choices.js +85 -0
- package/dist-pkg/ui/visual-axes-panel.d.ts +11 -47
- package/dist-pkg/ui/visual-axes-panel.js +12 -94
- package/dist-pkg/ui/visual-choices.d.ts +77 -0
- package/dist-pkg/ui/visual-choices.js +107 -0
- package/dist-pkg/ui/vlibras.d.ts +77 -10
- package/dist-pkg/ui/vlibras.js +130 -81
- package/dist-pkg/ui/voice-control.d.ts +68 -0
- package/dist-pkg/ui/voice-control.js +276 -0
- package/dist-pkg/ui/voice-settings.d.ts +95 -0
- package/dist-pkg/ui/voice-settings.js +352 -0
- package/dist-pkg/ui/where-the-child-is.d.ts +31 -0
- package/dist-pkg/ui/where-the-child-is.js +70 -0
- package/docs/CREDITS.md +300 -44
- package/docs/LICENSES.md +189 -145
- package/package.json +51 -27
- package/scripts/check-cartridge.mjs +78 -0
- package/scripts/game-build.d.mts +25 -0
- package/scripts/game-build.mjs +144 -0
- package/scripts/heavy-into-the-delivery.mjs +388 -0
- package/scripts/libras-avatar.json +680 -0
- package/scripts/libras-avatar.mjs +246 -0
- package/scripts/libras-glosses/gloss.py +95 -0
- package/scripts/libras-glosses/pyproject.toml +32 -0
- package/scripts/libras-glosses/uv.lock +781 -0
- package/scripts/libras-glosses.mjs +351 -0
- package/scripts/licences/Apache-2.0.txt +176 -0
- package/scripts/licences/GPL-3.0.txt +674 -0
- package/scripts/licences/MIT.txt +17 -0
- package/scripts/licences/OFL-1.1.txt +86 -0
- package/scripts/licences/UFL-1.0.txt +96 -0
- package/scripts/licences/fonts.mjs +389 -0
- package/scripts/licences/third-party.mjs +301 -0
- package/scripts/licences/vosk-browser.NOTICE.txt +268 -0
- package/app/public/vendor/fonts/comicneue-400.woff2 +0 -0
- package/app/public/vendor/fonts/comicneue-700.woff2 +0 -0
- package/app/public/vendor/fonts/fondamento-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/fondamento-400.woff2 +0 -0
- package/app/public/vendor/fonts/inter-400.woff2 +0 -0
- package/app/public/vendor/fonts/inter-700.woff2 +0 -0
- package/app/public/vendor/fonts/lato-400.woff2 +0 -0
- package/app/public/vendor/fonts/lato-700.woff2 +0 -0
- package/app/public/vendor/fonts/literata-400.woff2 +0 -0
- package/app/public/vendor/fonts/literata-700.woff2 +0 -0
- package/app/public/vendor/fonts/newsreader-400.woff2 +0 -0
- package/app/public/vendor/fonts/newsreader-700.woff2 +0 -0
- package/app/public/vendor/fonts/opendyslexic-400.woff2 +0 -0
- package/app/public/vendor/fonts/opensans-400.woff2 +0 -0
- package/app/public/vendor/fonts/opensans-700.woff2 +0 -0
- package/app/public/vendor/fonts/pinyon-400.woff2 +0 -0
- package/app/public/vendor/fonts/pressstart-400.woff2 +0 -0
- package/app/public/vendor/fonts/quattro-400.woff2 +0 -0
- package/app/public/vendor/fonts/quattro-700.woff2 +0 -0
- package/app/public/vendor/fonts/sourcesans-400.woff2 +0 -0
- package/app/public/vendor/fonts/sourcesans-700.woff2 +0 -0
- package/app/public/vendor/fonts/sourceserif-400.woff2 +0 -0
- package/app/public/vendor/fonts/sourceserif-700.woff2 +0 -0
- package/app/public/vendor/fonts/ufmag-400.woff2 +0 -0
- package/dist-pkg/core/anel.d.ts +0 -17
- package/dist-pkg/core/anel.js +0 -31
- package/dist-pkg/core/collision.d.ts +0 -21
- package/dist-pkg/core/collision.js +0 -62
- package/dist-pkg/core/layers.d.ts +0 -63
- package/dist-pkg/core/layers.js +0 -95
- package/dist-pkg/core/letter-grid.d.ts +0 -55
- package/dist-pkg/core/letter-grid.js +0 -116
- package/dist-pkg/core/password.d.ts +0 -34
- package/dist-pkg/core/password.js +0 -205
- package/dist-pkg/core/rotulo-acessivel.d.ts +0 -17
- package/dist-pkg/core/rotulo-acessivel.js +0 -41
- package/dist-pkg/core/run-state.d.ts +0 -115
- package/dist-pkg/core/run-state.js +0 -40
- package/dist-pkg/core/tiles.d.ts +0 -12
- package/dist-pkg/core/tiles.js +0 -61
- package/dist-pkg/core/world.d.ts +0 -4
- package/dist-pkg/core/world.js +0 -58
- package/dist-pkg/input/origem-sintetica.d.ts +0 -44
- package/dist-pkg/input/origem-sintetica.js +0 -60
- package/dist-pkg/input/transporte-em-uso.d.ts +0 -101
- package/dist-pkg/input/transporte-em-uso.js +0 -130
- package/dist-pkg/platform/audio-nav.d.ts +0 -51
- package/dist-pkg/platform/audio-nav.js +0 -99
- package/dist-pkg/platform/guide-intensity.d.ts +0 -40
- package/dist-pkg/platform/guide-intensity.js +0 -73
- package/dist-pkg/platform/pesados-catalogo.d.ts +0 -14
- package/dist-pkg/platform/pesados-catalogo.js +0 -177
- package/dist-pkg/platform/pesados.d.ts +0 -31
- package/dist-pkg/platform/pesados.js +0 -75
- package/dist-pkg/platform/vozes-prontas.d.ts +0 -28
- package/dist-pkg/platform/vozes-prontas.js +0 -61
- package/dist-pkg/render/camera.d.ts +0 -58
- package/dist-pkg/render/camera.js +0 -105
- package/dist-pkg/render/cenario-data.d.ts +0 -127
- package/dist-pkg/render/cenario-data.js +0 -145
- package/dist-pkg/render/city-tex.d.ts +0 -63
- package/dist-pkg/render/city-tex.js +0 -228
- package/dist-pkg/render/city-tiles.d.ts +0 -11
- package/dist-pkg/render/city-tiles.js +0 -140
- package/dist-pkg/render/draw.d.ts +0 -149
- package/dist-pkg/render/draw.js +0 -231
- package/dist-pkg/render/fx.d.ts +0 -63
- package/dist-pkg/render/fx.js +0 -123
- package/dist-pkg/render/minimap.d.ts +0 -11
- package/dist-pkg/render/minimap.js +0 -94
- package/dist-pkg/render/parallax.d.ts +0 -85
- package/dist-pkg/render/parallax.js +0 -158
- package/dist-pkg/render/player-anim.d.ts +0 -71
- package/dist-pkg/render/player-anim.js +0 -152
- package/dist-pkg/render/recycling-tex.d.ts +0 -48
- package/dist-pkg/render/recycling-tex.js +0 -164
- package/dist-pkg/render/scene-city.d.ts +0 -77
- package/dist-pkg/render/scene-city.js +0 -181
- package/dist-pkg/render/scene-parallax.d.ts +0 -72
- package/dist-pkg/render/scene-parallax.js +0 -426
- package/dist-pkg/render/scene-sky.d.ts +0 -126
- package/dist-pkg/render/scene-sky.js +0 -295
- package/dist-pkg/render/set-cenario.d.ts +0 -54
- package/dist-pkg/render/set-cenario.js +0 -103
- package/dist-pkg/render/textures.d.ts +0 -75
- package/dist-pkg/render/textures.js +0 -240
- package/dist-pkg/render/title-scene.d.ts +0 -46
- package/dist-pkg/render/title-scene.js +0 -75
- package/dist-pkg/render/weather.d.ts +0 -96
- package/dist-pkg/render/weather.js +0 -171
- package/dist-pkg/render/wheelchair-sprites.d.ts +0 -32
- package/dist-pkg/render/wheelchair-sprites.js +0 -69
- package/dist-pkg/render/world-tex.d.ts +0 -18
- package/dist-pkg/render/world-tex.js +0 -87
- package/dist-pkg/ui/activities-menu.d.ts +0 -258
- package/dist-pkg/ui/activities-menu.js +0 -648
- package/dist-pkg/ui/caa-sets.d.ts +0 -39
- package/dist-pkg/ui/caa-sets.js +0 -65
- package/dist-pkg/ui/latch-refusal.d.ts +0 -32
- package/dist-pkg/ui/latch-refusal.js +0 -60
- package/dist-pkg/ui/map-hub.d.ts +0 -56
- package/dist-pkg/ui/map-hub.js +0 -138
- package/dist-pkg/ui/settings-caa.d.ts +0 -45
- package/dist-pkg/ui/settings-caa.js +0 -137
- package/dist-pkg/ui/settings-motor.d.ts +0 -175
- package/dist-pkg/ui/settings-motor.js +0 -342
- package/dist-pkg/ui/webcam.d.ts +0 -7
- package/dist-pkg/ui/webcam.js +0 -93
|
@@ -1,44 +1,40 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
import type { Translate } from '../core/i18n.js';
|
|
2
3
|
import type { PlayerView } from '../core/entity.js';
|
|
3
4
|
import { type EdgeFlag } from './edges.js';
|
|
4
|
-
/**
|
|
5
|
-
export type { DomQuery } from '../core/dom-query.js';
|
|
6
|
-
/** O que este módulo lê e faz com um `KeyboardEvent` de `keydown`. */
|
|
5
|
+
/** What this module reads and does with a `keydown` `KeyboardEvent`. */
|
|
7
6
|
export interface KeydownEventLike {
|
|
8
7
|
code: string;
|
|
9
8
|
altKey: boolean;
|
|
10
9
|
ctrlKey: boolean;
|
|
11
10
|
preventDefault(): void;
|
|
12
11
|
/**
|
|
13
|
-
*
|
|
12
|
+
* Did the browser see the person press? (ADR-0109) — OPTIONAL, and the optionality is the decision.
|
|
14
13
|
*
|
|
15
|
-
* ⚠️
|
|
16
|
-
*
|
|
17
|
-
*
|
|
14
|
+
* ⚠️ Making it required would break every existing test double, for a false reason: they describe the keyboard
|
|
15
|
+
* decision, which does not depend on this. What the absence means is written in `input/synthetic-source` — "I
|
|
16
|
+
* asserted nothing", whose answer is `undefined` and not `'teclado'`.
|
|
18
17
|
*/
|
|
19
18
|
isTrusted?: boolean;
|
|
20
19
|
}
|
|
21
|
-
/** `keyup`
|
|
20
|
+
/** `keyup` only needs the code. */
|
|
22
21
|
export interface KeyupEventLike {
|
|
23
22
|
code: string;
|
|
24
23
|
}
|
|
25
|
-
/**
|
|
26
|
-
* prefere a cópia a puxar um alias de tipo através de camadas (ver o cabeçalho de keyboard-runtime). */
|
|
27
|
-
export type { KeyScheme } from '../core/entity.js';
|
|
28
|
-
/** As seis bordas de entrada que o keydown levanta no jogador (consumidas e zeradas pela física). */
|
|
24
|
+
/** The six input edges keydown raises on the player (consumed and cleared by the game's physics). */
|
|
29
25
|
/**
|
|
30
|
-
*
|
|
26
|
+
* What this module reads (and writes) of a player — and ONLY that. DERIVED from core/entity.
|
|
31
27
|
*
|
|
32
|
-
* · `i` —
|
|
33
|
-
* · `ctrl` —
|
|
34
|
-
* (`quiz`
|
|
35
|
-
*
|
|
36
|
-
* · `waiting` —
|
|
37
|
-
* · `easy` —
|
|
28
|
+
* · `i` — the player's OWN index. Routing goes by it, not by the position in the array.
|
|
29
|
+
* · `ctrl` — the key scheme; `null` before assignControls.
|
|
30
|
+
* (There is no `quiz` — ADR-0033. The open challenge arrives through `modalOpen` in the snapshot, and what the key
|
|
31
|
+
* MEANS inside it is the game's decision. See the "MODAL" block below.)
|
|
32
|
+
* · `waiting` — a screen on standby (multi-screen): THAT player's 1st key joins the match.
|
|
33
|
+
* · `easy` — Easy mode (motor difficulty): no running, and the Ctrl/Shift shortcuts in solo.
|
|
38
34
|
*/
|
|
39
35
|
export type KeydownPlayer = PlayerView<'i' | 'ctrl' | 'waiting' | 'easy' | 'jumpEdge' | 'runEdge' | 'leftEdge' | 'rightEdge' | 'swapEdge' | 'specialEdge'>;
|
|
40
|
-
/**
|
|
41
|
-
*
|
|
36
|
+
/** The subset of input/keyboard-runtime.ts's `ControlsState` the decision consults (`controls` stays out: only the six
|
|
37
|
+
* aliases and the flattened list are used here). */
|
|
42
38
|
export interface ControlsSnapshot {
|
|
43
39
|
action2: string[];
|
|
44
40
|
left: string[];
|
|
@@ -48,38 +44,36 @@ export interface ControlsSnapshot {
|
|
|
48
44
|
action1: string[];
|
|
49
45
|
gameKeys: string[];
|
|
50
46
|
}
|
|
51
|
-
/**
|
|
52
|
-
*
|
|
47
|
+
/** The title menu's navigation intent — `NavKeys` from input/edges, under the local name this module reads by (it was a
|
|
48
|
+
* fourth structural copy under another name). */
|
|
53
49
|
import type { NavKeys as TitleNav } from './edges.js';
|
|
54
|
-
|
|
55
|
-
/** TUDO o que a decisão precisa saber do mundo, num objeto só, montado ANTES de qualquer efeito. */
|
|
50
|
+
/** EVERYTHING the decision needs to know about the world, in one object, built BEFORE any effect. */
|
|
56
51
|
export interface KeydownSnapshot {
|
|
57
|
-
/**
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
|
|
52
|
+
/** Is the title screen on top? (Only Player 1 picks the game; the others hear a notice.) */
|
|
53
|
+
titleScreen: boolean;
|
|
54
|
+
/** Is a game in progress — running OR paused? (Alt+N and the pause key need this, and no modal open.) */
|
|
55
|
+
inGame: boolean;
|
|
61
56
|
numPlayers: number;
|
|
62
57
|
players: readonly KeydownPlayer[];
|
|
63
58
|
/**
|
|
64
|
-
*
|
|
59
|
+
* Is a MODAL open for the player at each POSITION? — the answer, beside the players (ADR-0033).
|
|
65
60
|
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* todo jogo do catálogo a ter um "quiz" com aquele formato.
|
|
61
|
+
* Not `players[i].quiz`: reading that field would force `core/entity.Player` — the ENGINE's canonical entity — to
|
|
62
|
+
* DECLARE it, and every game in the catalogue to have a "quiz" of that shape.
|
|
69
63
|
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* `
|
|
73
|
-
*
|
|
74
|
-
*
|
|
64
|
+
* Why here and not two ctx functions: this module already builds a snapshot before any effect, and adding ctx to
|
|
65
|
+
* whoever has a snapshot is one more piece. Why a PARALLEL array and not a field on `KeydownPlayer`: that type is a
|
|
66
|
+
* `PlayerView<>` derived from `Player`, so the field would be required on the entity again — a better name, the same
|
|
67
|
+
* wrong place. And why not wrap the players in a copy: this module WRITES into them (the six edges), and a copy would
|
|
68
|
+
* lose the write.
|
|
75
69
|
*/
|
|
76
70
|
modalOpen: readonly boolean[];
|
|
77
71
|
controls: ControlsSnapshot;
|
|
78
|
-
/**
|
|
72
|
+
/** input/state.ts's `keys`: the keys held NOW (every transport's, mixed). */
|
|
79
73
|
heldKeys: ReadonlySet<string>;
|
|
80
|
-
/**
|
|
74
|
+
/** motor empathy: one game button at a time. */
|
|
81
75
|
oneButton: boolean;
|
|
82
|
-
/** `overlays.escapeTarget()` — id
|
|
76
|
+
/** `overlays.escapeTarget()` — the id of the 1st REGISTERED dialog that is open, or null. */
|
|
83
77
|
escapeTargetId: string | null;
|
|
84
78
|
touchCfgVisible: boolean;
|
|
85
79
|
padWizVisible: boolean;
|
|
@@ -88,66 +82,66 @@ export interface KeydownSnapshot {
|
|
|
88
82
|
whichPlayer(code: string): number;
|
|
89
83
|
}
|
|
90
84
|
export type ModalIntent = 'left' | 'right' | 'up' | 'down' | 'confirm' | 'erase';
|
|
91
|
-
/**
|
|
85
|
+
/** An edge to raise: which player (POSITION in the array) and which flag. */
|
|
92
86
|
export interface EdgeRaise {
|
|
93
87
|
playerIndex: number;
|
|
94
88
|
edge: EdgeFlag;
|
|
95
89
|
}
|
|
96
90
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
91
|
+
* The single answer: what this key MEANS. `kind` is the precedence branch that won — and it is that word, not the
|
|
92
|
+
* effect, that the precedence tests assert.
|
|
99
93
|
*/
|
|
100
94
|
export type KeydownDecision =
|
|
101
|
-
/**
|
|
95
|
+
/** 1st · a REGISTERED dialog open: Escape closes (`closeId`), any other key is swallowed. */
|
|
102
96
|
{
|
|
103
97
|
kind: 'overlay';
|
|
104
98
|
closeId: string | null;
|
|
105
99
|
preventDefault: boolean;
|
|
106
100
|
}
|
|
107
|
-
/**
|
|
101
|
+
/** 2nd · `#touchcfg` visible: Escape hides, the rest is swallowed. */
|
|
108
102
|
| {
|
|
109
103
|
kind: 'touchcfg';
|
|
110
104
|
close: boolean;
|
|
111
105
|
preventDefault: boolean;
|
|
112
106
|
}
|
|
113
|
-
/**
|
|
107
|
+
/** 3rd · `#padwiz` (the pad wizard) visible: Escape CANCELS (`save:false`), the rest is swallowed. */
|
|
114
108
|
| {
|
|
115
109
|
kind: 'padwiz';
|
|
116
110
|
close: boolean;
|
|
117
111
|
preventDefault: boolean;
|
|
118
112
|
}
|
|
119
|
-
/**
|
|
113
|
+
/** 4th · win screen: jump (any player's) or Escape/Enter press "Play again". */
|
|
120
114
|
| {
|
|
121
115
|
kind: 'win';
|
|
122
116
|
again: boolean;
|
|
123
117
|
preventDefault: boolean;
|
|
124
118
|
}
|
|
125
|
-
/**
|
|
119
|
+
/** 5th · title screen: `wait` = multi-screen and the key is another player's (only P1 commands). */
|
|
126
120
|
| {
|
|
127
121
|
kind: 'title';
|
|
128
122
|
wait: boolean;
|
|
129
123
|
nav: TitleNav | null;
|
|
130
124
|
preventDefault: boolean;
|
|
131
125
|
}
|
|
132
|
-
/**
|
|
126
|
+
/** 6th · Alt+1..4 = number of screens. */
|
|
133
127
|
| {
|
|
134
128
|
kind: 'screens';
|
|
135
129
|
count: number;
|
|
136
130
|
preventDefault: boolean;
|
|
137
131
|
}
|
|
138
|
-
/**
|
|
132
|
+
/** 7th · Escape/Enter = pause. */
|
|
139
133
|
| {
|
|
140
134
|
kind: 'pause';
|
|
141
135
|
preventDefault: boolean;
|
|
142
136
|
}
|
|
143
|
-
/**
|
|
137
|
+
/** 8th · a modal open: the key acts on its OWNER's modal (`playerIndex` = position in the array). */
|
|
144
138
|
| {
|
|
145
139
|
kind: 'modal';
|
|
146
140
|
playerIndex: number;
|
|
147
141
|
intent: ModalIntent | null;
|
|
148
142
|
preventDefault: boolean;
|
|
149
143
|
}
|
|
150
|
-
/**
|
|
144
|
+
/** 9th · normal play. */
|
|
151
145
|
| {
|
|
152
146
|
kind: 'play';
|
|
153
147
|
gameKey: boolean;
|
|
@@ -156,153 +150,145 @@ export type KeydownDecision =
|
|
|
156
150
|
releaseKeys: string[];
|
|
157
151
|
preventDefault: boolean;
|
|
158
152
|
};
|
|
159
|
-
/**
|
|
153
|
+
/** Easy (SOLO): Ctrl = Special, Shift = Swap power. Not Win/Alt/AltGr, on purpose. */
|
|
160
154
|
export declare const EASY_SHORTCUTS: ReadonlySet<string>;
|
|
161
|
-
/** Alt +
|
|
155
|
+
/** Alt + the digit row (NOT the numeric keypad) = 1..4 screens. Alt is free: solo does not use it. */
|
|
162
156
|
export declare const SCREEN_DIGITS: RegExp;
|
|
163
|
-
/**
|
|
157
|
+
/** Pause: Escape or the MAIN Enter. `NumpadEnter` does NOT pause. */
|
|
164
158
|
export declare const PAUSE_KEYS: ReadonlySet<string>;
|
|
165
|
-
export { EDGE_BY_ACTION
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
* "qualquer um pode apertar Jogar de novo" e "qualquer um confirma no título" serem verdade). */
|
|
159
|
+
export { EDGE_BY_ACTION } from './edges.js';
|
|
160
|
+
/** Does the key count as JUMP for anybody? P1's alias OR any player's `action2` (it is what makes "anyone can press
|
|
161
|
+
* Play again" and "anyone confirms on the title" true). */
|
|
169
162
|
export declare function isJumpKey(code: string, s: KeydownSnapshot): boolean;
|
|
170
|
-
/**
|
|
171
|
-
*
|
|
163
|
+
/** Is the key a GAME key? The flattened alias OR some player's scheme. It does NOT include the Easy shortcuts: those
|
|
164
|
+
* are added apart (`isEasyShortcut`). */
|
|
172
165
|
export declare function isGameKeyCode(code: string, s: KeydownSnapshot): boolean;
|
|
173
|
-
/**
|
|
166
|
+
/** Easy's accessibility shortcuts exist only in SOLO (`numPlayers<=1`) and only for Player 1. */
|
|
174
167
|
export declare function isEasyShortcut(code: string, s: KeydownSnapshot): boolean;
|
|
175
168
|
/**
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
*
|
|
169
|
+
* The title menu intent. Note the ASYMMETRY, kept as it is: `up`/`down` accept ArrowUp/ArrowDown ON TOP of the
|
|
170
|
+
* configured alias, `left`/`right` do not accept ArrowLeft/ArrowRight. It does not show in the factory scheme (solo
|
|
171
|
+
* already has the arrows on all four sides); it shows for whoever REMAPS — remap left to KeyA and the arrow stops moving
|
|
172
|
+
* in the menu, while up keeps working both ways. It is a test case in tests/keydown.node.test.js, and a candidate for a
|
|
173
|
+
* fix, not for a silent "cleanup".
|
|
181
174
|
*/
|
|
182
175
|
export declare function titleNavOf(code: string, s: KeydownSnapshot, action2: boolean): TitleNav;
|
|
183
176
|
import type { EventTargetLike } from './touch-bindings.js';
|
|
184
177
|
import type { DomQuery } from '../core/dom-query.js';
|
|
185
|
-
import type {
|
|
178
|
+
import type { TransportName } from './transport-in-use.js';
|
|
186
179
|
export { hasNavIntent as hasTitleIntent } from './edges.js';
|
|
187
180
|
/**
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
181
|
+
* Who owns the modal this key commands? Returns the POSITION in the array, or -1.
|
|
182
|
+
* A player's key goes to THAT player's modal (and only if they have one open); a generic key falls to Player 1. A key of
|
|
183
|
+
* a player WITHOUT an open modal does not fall to P1 — it goes down to normal play, which is what lets their match go on
|
|
184
|
+
* while the other solves the challenge.
|
|
192
185
|
*/
|
|
193
186
|
export declare function modalOwnerIndex(code: string, s: KeydownSnapshot): number;
|
|
194
|
-
/**
|
|
195
|
-
* Que INTENÇÃO esta tecla exprime dentro do modal do dono. `owner` é a posição no array; `generic` diz se a
|
|
196
|
-
* tecla chegou sem dono (aí as seis leituras usam os aliases do J1 em vez da ação remapeada).
|
|
197
|
-
*
|
|
198
|
-
* As seis leituras são as mesmas de antes, letra por letra. O que saiu foi a linha seguinte: a que trocava
|
|
199
|
-
* "cima" por `delta:-3` e "esquerda" por `delta:-1`, e o desvio de Braille. Isso é grade, e grade é do jogo.
|
|
200
|
-
*/
|
|
201
187
|
export declare function modalIntentOf(code: string, s: KeydownSnapshot, owner: number, generic: boolean): ModalIntent | null;
|
|
202
188
|
/**
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
* `p.ctrl[act] || []`:
|
|
206
|
-
*
|
|
207
|
-
* ui/menu-nav.ts) — é a única linha desta função que não é cópia literal.
|
|
189
|
+
* The edges this key raises. It is only called when the key is NOT YET held — that is what makes it an EDGE and not a
|
|
190
|
+
* state, and what keeps the system's auto-repeat from becoming ten jumps.
|
|
191
|
+
* `p.ctrl[act] || []`: a scheme without the action turns a TypeError into a no-op (the precedent is `navPause`'s guard
|
|
192
|
+
* in ui/menu-nav.ts) — a net that removes no chance of a fix.
|
|
208
193
|
*/
|
|
209
194
|
export declare function edgesFor(code: string, s: KeydownSnapshot): EdgeRaise[];
|
|
210
|
-
/**
|
|
211
|
-
|
|
212
|
-
* O que NÃO está aqui, e vem antes no wrapper: a demo (attract) e a captura de remapeamento. Ver o cabeçalho.
|
|
213
|
-
*/
|
|
214
|
-
export declare function decideKeydown(ev: {
|
|
195
|
+
/** The event as the chain reads it. */
|
|
196
|
+
type KeyEventFacts = {
|
|
215
197
|
code: string;
|
|
216
198
|
altKey?: boolean;
|
|
217
199
|
ctrlKey?: boolean;
|
|
218
|
-
}
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* THE CHAIN. Nine questions, in this order — and the order IS the specification.
|
|
203
|
+
* What is NOT here, and comes first in the wrapper: the demo (attract) and the remapping capture. See the header.
|
|
204
|
+
*/
|
|
205
|
+
export declare function decideKeydown(ev: KeyEventFacts, s: KeydownSnapshot): KeydownDecision;
|
|
219
206
|
export interface KeydownCtx {
|
|
220
|
-
/**
|
|
207
|
+
/** Translates in the page's language — the root's translator (ADR-0232 D3). REQUIRED: text built from nowhere is a raw key. */
|
|
208
|
+
t: Translate;
|
|
209
|
+
/** The demo: resets idleness and ends the demo; `true` = the key was only to wake it up. */
|
|
221
210
|
attractOnInput: () => boolean;
|
|
222
|
-
/** ui/settings-controls.ts:
|
|
211
|
+
/** ui/settings-controls.ts: a remap in progress — the next key BECOMES the control. */
|
|
223
212
|
handleCaptureKeydown: (e: KeydownEventLike) => boolean;
|
|
224
|
-
/**
|
|
225
|
-
|
|
226
|
-
|
|
213
|
+
/** The scene's two facts. See `KeydownSnapshot`: booleans, never the phase. */
|
|
214
|
+
isTitleScreen: () => boolean;
|
|
215
|
+
isInGame: () => boolean;
|
|
227
216
|
getNumPlayers: () => number;
|
|
228
217
|
getPlayers: () => readonly KeydownPlayer[];
|
|
229
|
-
/** `
|
|
218
|
+
/** The keyboard runtime's `controlsState()` — memoised over there; one call per key. */
|
|
230
219
|
getControls: () => ControlsSnapshot;
|
|
231
220
|
/**
|
|
232
|
-
*
|
|
221
|
+
* THE `input/state` DOORS, NOT THE RAW SET (ADR-0109) — the same cut `input/touch-bindings` made.
|
|
233
222
|
*
|
|
234
|
-
* ⚠️ `ReadonlySet`
|
|
235
|
-
*
|
|
236
|
-
*
|
|
223
|
+
* ⚠️ `ReadonlySet` and not `Set`, and the difference IS why the doors exist: READING the set was never the problem;
|
|
224
|
+
* WRITING into it erased the source. With the type like this, a raw write stops compiling — the inventory gate has the
|
|
225
|
+
* compiler on its side instead of being the only thing holding the line.
|
|
237
226
|
*/
|
|
238
227
|
readonly heldKeys: ReadonlySet<string>;
|
|
239
|
-
/**
|
|
240
|
-
|
|
228
|
+
/** A key was held, and who pressed it is known. */
|
|
229
|
+
markKey: (code: string, origin: TransportName) => void;
|
|
241
230
|
/**
|
|
242
|
-
*
|
|
231
|
+
* A key was held and who pressed it is NOT known — an event nobody signed, which every real key is.
|
|
243
232
|
*
|
|
244
|
-
* ⚠️
|
|
245
|
-
*
|
|
233
|
+
* ⚠️ It sits in the ctx beside the other two on purpose: imported, a consumer would have no way to see it exists, and
|
|
234
|
+
* the consumer is exactly who produces the events that land here.
|
|
246
235
|
*/
|
|
247
|
-
|
|
236
|
+
markKeyWithoutSource: (code: string) => void;
|
|
248
237
|
/**
|
|
249
|
-
*
|
|
238
|
+
* THIS EDGE IS THIS PLAYER'S, AND IT CAME FROM HERE (ADR-0113 clause 4, issue #127) — `input/state.playerEdge`.
|
|
250
239
|
*
|
|
251
|
-
* 🔴
|
|
252
|
-
*
|
|
253
|
-
*
|
|
254
|
-
* alternância de que a entrada dela depende, e nada o diz.
|
|
240
|
+
* 🔴 A REQUIRED FIELD: without a feeder, ADR-0109's automaton answers `teclado` for everyone through
|
|
241
|
+
* `inputOf(i).inUse` — forever, with no error. Then the latch is read and written under the keyboard's key for a child
|
|
242
|
+
* playing by webcam, and the game's default for her device (ADR-0249) never applies.
|
|
255
243
|
*
|
|
256
|
-
* ⚠️
|
|
257
|
-
*
|
|
258
|
-
*
|
|
244
|
+
* ⚠️ AND IT IS HERE THAT IT COUNTS, not on the keyboard, which is already the default: a stamped synthetic event
|
|
245
|
+
* (`input/synthetic-source`) is how `olhos`/`rosto`/`gestos`/`fala` become the transport in use through this module.
|
|
246
|
+
* A key really pressed brings back the keyboard, which is ADR-0109's rule 3.
|
|
259
247
|
*/
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
/**
|
|
248
|
+
playerEdge: (player: number, origin: TransportName) => void;
|
|
249
|
+
releaseKey: (code: string) => void;
|
|
250
|
+
/** Motor empathy's one-button mode → getter. */
|
|
263
251
|
isOneButton: () => boolean;
|
|
264
252
|
actionOf: (code: string, playerIndex: number) => string | null;
|
|
265
253
|
whichPlayer: (code: string) => number;
|
|
266
254
|
$: DomQuery;
|
|
267
|
-
/**
|
|
255
|
+
/** ui/settings-panel.ts's `overlays.escapeTarget()`. */
|
|
268
256
|
escapeTarget: () => string | null;
|
|
269
|
-
/** `overlays.closeById(id)` —
|
|
257
|
+
/** `overlays.closeById(id)` — its return value is ignored. */
|
|
270
258
|
closeOverlayById: (id: string) => void;
|
|
271
|
-
/** input/gamepad.ts. LAZY:
|
|
259
|
+
/** input/gamepad.ts's. LAZY: the pad api may be built after this module. */
|
|
272
260
|
closePadWiz: (save: boolean) => void;
|
|
273
|
-
/** input/touch.ts
|
|
261
|
+
/** input/touch.ts's. No reason on the title; `'teclado'` in play. */
|
|
274
262
|
hideTouchControls: (reason?: string) => void;
|
|
275
263
|
srSay: (msg: string) => void;
|
|
276
264
|
navTitle: (k: TitleNav) => void;
|
|
277
265
|
activateScreens: (n: number) => void;
|
|
278
266
|
togglePause: () => void;
|
|
279
267
|
/**
|
|
280
|
-
*
|
|
268
|
+
* The INTENT arrives, and the GAME decides what it means (ADR-0033).
|
|
281
269
|
*
|
|
282
|
-
*
|
|
283
|
-
*
|
|
284
|
-
*
|
|
285
|
-
* módulo saiba que existe grade.
|
|
270
|
+
* One door and not four verbs (move, confirm, erase, announce Braille): with the verbs, which one to call was decided
|
|
271
|
+
* here, with a three-column grid and a Braille detour. A game with a four-column grid, or a vertical list, answers
|
|
272
|
+
* differently without this module knowing there is a grid.
|
|
286
273
|
*/
|
|
287
|
-
/**
|
|
274
|
+
/** The player's INDEX, not the player (ADR-0033/0039). See the same note in input/gamepad. */
|
|
288
275
|
modalInput: (playerIndex: number, intent: ModalIntent) => void;
|
|
289
|
-
/**
|
|
276
|
+
/** Does the player at POSITION `i` have a modal open? A question, and not the object: see `modalOpen` in the snapshot. */
|
|
290
277
|
hasModal: (playerIndex: number) => boolean;
|
|
291
|
-
/**
|
|
278
|
+
/** Removes the "screen on standby" badge when that screen's player joins. */
|
|
292
279
|
clearWaitingBadge: (playerIndex: number) => void;
|
|
293
|
-
/**
|
|
294
|
-
|
|
295
|
-
* porque a versão com `fn: (e: never)` obrigava um cast aqui e um adaptador em cada consumidor. */
|
|
280
|
+
/** The keyboard listener. See `EventTargetLike` in input/touch-bindings: generic over `WindowEventMap`, because the
|
|
281
|
+
* `fn: (e: never)` version forced a cast here and an adapter in every consumer. */
|
|
296
282
|
win: EventTargetLike;
|
|
297
283
|
}
|
|
298
284
|
export interface KeydownApi {
|
|
299
|
-
/**
|
|
285
|
+
/** The snapshot the decision consumes. Exposed so the test can build and compare it. */
|
|
300
286
|
snapshot: () => KeydownSnapshot;
|
|
301
|
-
/**
|
|
287
|
+
/** The whole bubbling listener (probes + decision + effect). Exported apart so the test can fire it without DOM. */
|
|
302
288
|
onKeydown: (e: KeydownEventLike) => void;
|
|
303
|
-
/**
|
|
289
|
+
/** The other half of the hold. */
|
|
304
290
|
onKeyup: (e: KeyupEventLike) => void;
|
|
305
|
-
/**
|
|
291
|
+
/** Installs both on the window, in BUBBLE. */
|
|
306
292
|
attach: () => void;
|
|
307
293
|
}
|
|
308
294
|
export declare function initKeydown(ctx: KeydownCtx): KeydownApi;
|