From 46b0717d137da61ef6108c30b3c623b8ff3bb86c Mon Sep 17 00:00:00 2001 From: Liana P <32243840+liana-p@users.noreply.github.com> Date: Fri, 30 Aug 2024 17:17:40 +0100 Subject: [PATCH] feat: new button prompts system --- .../ui/button-prompts/gamepad/dpad-down.png | Bin 0 -> 285 bytes .../ui/button-prompts/gamepad/dpad-left.png | Bin 0 -> 275 bytes .../ui/button-prompts/gamepad/dpad-right.png | Bin 0 -> 276 bytes .../img/ui/button-prompts/gamepad/dpad-up.png | Bin 0 -> 284 bytes .../img/ui/button-prompts/gamepad/dpad.png | Bin 0 -> 281 bytes .../gamepad/facebutton-down.png | Bin 0 -> 673 bytes .../gamepad/facebutton-left.png | Bin 0 -> 696 bytes .../gamepad/facebutton-right.png | Bin 0 -> 644 bytes .../button-prompts/gamepad/facebutton-top.png | Bin 0 -> 661 bytes .../button-prompts/gamepad/shoulder-left.png | Bin 0 -> 362 bytes .../button-prompts/gamepad/shoulder-right.png | Bin 0 -> 407 bytes .../button-prompts/gamepad/special-left.png | Bin 0 -> 629 bytes .../button-prompts/gamepad/special-right.png | Bin 0 -> 591 bytes .../button-prompts/gamepad/trigger-left.png | Bin 0 -> 435 bytes .../button-prompts/gamepad/trigger-right.png | Bin 0 -> 499 bytes .../img/ui/button-prompts/keyboard/key-1.png | Bin 0 -> 274 bytes .../img/ui/button-prompts/keyboard/key-2.png | Bin 0 -> 358 bytes .../img/ui/button-prompts/keyboard/key-3.png | Bin 0 -> 371 bytes .../img/ui/button-prompts/keyboard/key-4.png | Bin 0 -> 276 bytes .../img/ui/button-prompts/keyboard/key-5.png | Bin 0 -> 342 bytes .../img/ui/button-prompts/keyboard/key-6.png | Bin 0 -> 380 bytes .../img/ui/button-prompts/keyboard/key-7.png | Bin 0 -> 352 bytes .../img/ui/button-prompts/keyboard/key-8.png | Bin 0 -> 368 bytes .../img/ui/button-prompts/keyboard/key-9.png | Bin 0 -> 384 bytes .../img/ui/button-prompts/keyboard/key-a.png | Bin 0 -> 398 bytes .../ui/button-prompts/keyboard/key-arrows.png | Bin 0 -> 233 bytes .../img/ui/button-prompts/keyboard/key-b.png | Bin 0 -> 347 bytes .../img/ui/button-prompts/keyboard/key-c.png | Bin 0 -> 396 bytes .../img/ui/button-prompts/keyboard/key-d.png | Bin 0 -> 367 bytes .../ui/button-prompts/keyboard/key-down.png | Bin 0 -> 365 bytes .../img/ui/button-prompts/keyboard/key-e.png | Bin 0 -> 262 bytes .../ui/button-prompts/keyboard/key-enter.png | Bin 0 -> 341 bytes .../ui/button-prompts/keyboard/key-escape.png | Bin 0 -> 385 bytes .../img/ui/button-prompts/keyboard/key-f.png | Bin 0 -> 262 bytes .../img/ui/button-prompts/keyboard/key-g.png | Bin 0 -> 414 bytes .../img/ui/button-prompts/keyboard/key-h.png | Bin 0 -> 258 bytes .../img/ui/button-prompts/keyboard/key-i.png | Bin 0 -> 255 bytes .../img/ui/button-prompts/keyboard/key-j.png | Bin 0 -> 313 bytes .../img/ui/button-prompts/keyboard/key-k.png | Bin 0 -> 372 bytes .../img/ui/button-prompts/keyboard/key-l.png | Bin 0 -> 258 bytes .../ui/button-prompts/keyboard/key-left.png | Bin 0 -> 373 bytes .../img/ui/button-prompts/keyboard/key-m.png | Bin 0 -> 370 bytes .../img/ui/button-prompts/keyboard/key-n.png | Bin 0 -> 332 bytes .../img/ui/button-prompts/keyboard/key-o.png | Bin 0 -> 405 bytes .../img/ui/button-prompts/keyboard/key-p.png | Bin 0 -> 347 bytes .../img/ui/button-prompts/keyboard/key-q.png | Bin 0 -> 393 bytes .../img/ui/button-prompts/keyboard/key-r.png | Bin 0 -> 360 bytes .../ui/button-prompts/keyboard/key-right.png | Bin 0 -> 370 bytes .../img/ui/button-prompts/keyboard/key-s.png | Bin 0 -> 405 bytes .../ui/button-prompts/keyboard/key-space.png | Bin 0 -> 328 bytes .../img/ui/button-prompts/keyboard/key-t.png | Bin 0 -> 261 bytes .../img/ui/button-prompts/keyboard/key-u.png | Bin 0 -> 338 bytes .../img/ui/button-prompts/keyboard/key-up.png | Bin 0 -> 372 bytes .../img/ui/button-prompts/keyboard/key-v.png | Bin 0 -> 395 bytes .../img/ui/button-prompts/keyboard/key-w.png | Bin 0 -> 401 bytes .../img/ui/button-prompts/keyboard/key-x.png | Bin 0 -> 429 bytes .../img/ui/button-prompts/keyboard/key-y.png | Bin 0 -> 370 bytes .../img/ui/button-prompts/keyboard/key-z.png | Bin 0 -> 345 bytes .../demo/src/config/common.yaml | 4 + .../ui/button-prompts/gamepad/dpad-down.png | Bin 0 -> 285 bytes .../ui/button-prompts/gamepad/dpad-left.png | Bin 0 -> 275 bytes .../ui/button-prompts/gamepad/dpad-right.png | Bin 0 -> 276 bytes .../img/ui/button-prompts/gamepad/dpad-up.png | Bin 0 -> 284 bytes .../img/ui/button-prompts/gamepad/dpad.png | Bin 0 -> 281 bytes .../gamepad/facebutton-down.png | Bin 0 -> 673 bytes .../gamepad/facebutton-left.png | Bin 0 -> 696 bytes .../gamepad/facebutton-right.png | Bin 0 -> 644 bytes .../button-prompts/gamepad/facebutton-top.png | Bin 0 -> 661 bytes .../button-prompts/gamepad/shoulder-left.png | Bin 0 -> 362 bytes .../button-prompts/gamepad/shoulder-right.png | Bin 0 -> 407 bytes .../button-prompts/gamepad/special-left.png | Bin 0 -> 629 bytes .../button-prompts/gamepad/special-right.png | Bin 0 -> 591 bytes .../button-prompts/gamepad/trigger-left.png | Bin 0 -> 435 bytes .../button-prompts/gamepad/trigger-right.png | Bin 0 -> 499 bytes .../img/ui/button-prompts/keyboard/key-1.png | Bin 0 -> 274 bytes .../img/ui/button-prompts/keyboard/key-2.png | Bin 0 -> 358 bytes .../img/ui/button-prompts/keyboard/key-3.png | Bin 0 -> 371 bytes .../img/ui/button-prompts/keyboard/key-4.png | Bin 0 -> 276 bytes .../img/ui/button-prompts/keyboard/key-5.png | Bin 0 -> 342 bytes .../img/ui/button-prompts/keyboard/key-6.png | Bin 0 -> 380 bytes .../img/ui/button-prompts/keyboard/key-7.png | Bin 0 -> 352 bytes .../img/ui/button-prompts/keyboard/key-8.png | Bin 0 -> 368 bytes .../img/ui/button-prompts/keyboard/key-9.png | Bin 0 -> 384 bytes .../img/ui/button-prompts/keyboard/key-a.png | Bin 0 -> 398 bytes .../ui/button-prompts/keyboard/key-arrows.png | Bin 0 -> 233 bytes .../img/ui/button-prompts/keyboard/key-b.png | Bin 0 -> 347 bytes .../img/ui/button-prompts/keyboard/key-c.png | Bin 0 -> 396 bytes .../img/ui/button-prompts/keyboard/key-d.png | Bin 0 -> 367 bytes .../ui/button-prompts/keyboard/key-down.png | Bin 0 -> 365 bytes .../img/ui/button-prompts/keyboard/key-e.png | Bin 0 -> 262 bytes .../ui/button-prompts/keyboard/key-enter.png | Bin 0 -> 341 bytes .../ui/button-prompts/keyboard/key-escape.png | Bin 0 -> 385 bytes .../img/ui/button-prompts/keyboard/key-f.png | Bin 0 -> 262 bytes .../img/ui/button-prompts/keyboard/key-g.png | Bin 0 -> 414 bytes .../img/ui/button-prompts/keyboard/key-h.png | Bin 0 -> 258 bytes .../img/ui/button-prompts/keyboard/key-i.png | Bin 0 -> 255 bytes .../img/ui/button-prompts/keyboard/key-j.png | Bin 0 -> 313 bytes .../img/ui/button-prompts/keyboard/key-k.png | Bin 0 -> 372 bytes .../img/ui/button-prompts/keyboard/key-l.png | Bin 0 -> 258 bytes .../ui/button-prompts/keyboard/key-left.png | Bin 0 -> 373 bytes .../img/ui/button-prompts/keyboard/key-m.png | Bin 0 -> 370 bytes .../img/ui/button-prompts/keyboard/key-n.png | Bin 0 -> 332 bytes .../img/ui/button-prompts/keyboard/key-o.png | Bin 0 -> 405 bytes .../img/ui/button-prompts/keyboard/key-p.png | Bin 0 -> 347 bytes .../img/ui/button-prompts/keyboard/key-q.png | Bin 0 -> 393 bytes .../img/ui/button-prompts/keyboard/key-r.png | Bin 0 -> 360 bytes .../ui/button-prompts/keyboard/key-right.png | Bin 0 -> 370 bytes .../img/ui/button-prompts/keyboard/key-s.png | Bin 0 -> 405 bytes .../ui/button-prompts/keyboard/key-space.png | Bin 0 -> 328 bytes .../img/ui/button-prompts/keyboard/key-t.png | Bin 0 -> 261 bytes .../img/ui/button-prompts/keyboard/key-u.png | Bin 0 -> 338 bytes .../img/ui/button-prompts/keyboard/key-up.png | Bin 0 -> 372 bytes .../img/ui/button-prompts/keyboard/key-v.png | Bin 0 -> 395 bytes .../img/ui/button-prompts/keyboard/key-w.png | Bin 0 -> 401 bytes .../img/ui/button-prompts/keyboard/key-x.png | Bin 0 -> 429 bytes .../img/ui/button-prompts/keyboard/key-y.png | Bin 0 -> 370 bytes .../img/ui/button-prompts/keyboard/key-z.png | Bin 0 -> 345 bytes .../empty/src/config/common.yaml | 4 + .../ui/button-prompts/gamepad/dpad-down.png | Bin 0 -> 285 bytes .../ui/button-prompts/gamepad/dpad-left.png | Bin 0 -> 275 bytes .../ui/button-prompts/gamepad/dpad-right.png | Bin 0 -> 276 bytes .../img/ui/button-prompts/gamepad/dpad-up.png | Bin 0 -> 284 bytes .../img/ui/button-prompts/gamepad/dpad.png | Bin 0 -> 281 bytes .../gamepad/facebutton-down.png | Bin 0 -> 673 bytes .../gamepad/facebutton-left.png | Bin 0 -> 696 bytes .../gamepad/facebutton-right.png | Bin 0 -> 644 bytes .../button-prompts/gamepad/facebutton-top.png | Bin 0 -> 661 bytes .../button-prompts/gamepad/shoulder-left.png | Bin 0 -> 362 bytes .../button-prompts/gamepad/shoulder-right.png | Bin 0 -> 407 bytes .../button-prompts/gamepad/special-left.png | Bin 0 -> 629 bytes .../button-prompts/gamepad/special-right.png | Bin 0 -> 591 bytes .../button-prompts/gamepad/trigger-left.png | Bin 0 -> 435 bytes .../button-prompts/gamepad/trigger-right.png | Bin 0 -> 499 bytes .../img/ui/button-prompts/keyboard/key-1.png | Bin 0 -> 274 bytes .../img/ui/button-prompts/keyboard/key-2.png | Bin 0 -> 358 bytes .../img/ui/button-prompts/keyboard/key-3.png | Bin 0 -> 371 bytes .../img/ui/button-prompts/keyboard/key-4.png | Bin 0 -> 276 bytes .../img/ui/button-prompts/keyboard/key-5.png | Bin 0 -> 342 bytes .../img/ui/button-prompts/keyboard/key-6.png | Bin 0 -> 380 bytes .../img/ui/button-prompts/keyboard/key-7.png | Bin 0 -> 352 bytes .../img/ui/button-prompts/keyboard/key-8.png | Bin 0 -> 368 bytes .../img/ui/button-prompts/keyboard/key-9.png | Bin 0 -> 384 bytes .../img/ui/button-prompts/keyboard/key-a.png | Bin 0 -> 398 bytes .../ui/button-prompts/keyboard/key-arrows.png | Bin 0 -> 233 bytes .../img/ui/button-prompts/keyboard/key-b.png | Bin 0 -> 347 bytes .../img/ui/button-prompts/keyboard/key-c.png | Bin 0 -> 396 bytes .../img/ui/button-prompts/keyboard/key-d.png | Bin 0 -> 367 bytes .../ui/button-prompts/keyboard/key-down.png | Bin 0 -> 365 bytes .../img/ui/button-prompts/keyboard/key-e.png | Bin 0 -> 262 bytes .../ui/button-prompts/keyboard/key-enter.png | Bin 0 -> 341 bytes .../ui/button-prompts/keyboard/key-escape.png | Bin 0 -> 385 bytes .../img/ui/button-prompts/keyboard/key-f.png | Bin 0 -> 262 bytes .../img/ui/button-prompts/keyboard/key-g.png | Bin 0 -> 414 bytes .../img/ui/button-prompts/keyboard/key-h.png | Bin 0 -> 258 bytes .../img/ui/button-prompts/keyboard/key-i.png | Bin 0 -> 255 bytes .../img/ui/button-prompts/keyboard/key-j.png | Bin 0 -> 313 bytes .../img/ui/button-prompts/keyboard/key-k.png | Bin 0 -> 372 bytes .../img/ui/button-prompts/keyboard/key-l.png | Bin 0 -> 258 bytes .../ui/button-prompts/keyboard/key-left.png | Bin 0 -> 373 bytes .../img/ui/button-prompts/keyboard/key-m.png | Bin 0 -> 370 bytes .../img/ui/button-prompts/keyboard/key-n.png | Bin 0 -> 332 bytes .../img/ui/button-prompts/keyboard/key-o.png | Bin 0 -> 405 bytes .../img/ui/button-prompts/keyboard/key-p.png | Bin 0 -> 347 bytes .../img/ui/button-prompts/keyboard/key-q.png | Bin 0 -> 393 bytes .../img/ui/button-prompts/keyboard/key-r.png | Bin 0 -> 360 bytes .../ui/button-prompts/keyboard/key-right.png | Bin 0 -> 370 bytes .../img/ui/button-prompts/keyboard/key-s.png | Bin 0 -> 405 bytes .../ui/button-prompts/keyboard/key-space.png | Bin 0 -> 328 bytes .../img/ui/button-prompts/keyboard/key-t.png | Bin 0 -> 261 bytes .../img/ui/button-prompts/keyboard/key-u.png | Bin 0 -> 338 bytes .../img/ui/button-prompts/keyboard/key-up.png | Bin 0 -> 372 bytes .../img/ui/button-prompts/keyboard/key-v.png | Bin 0 -> 395 bytes .../img/ui/button-prompts/keyboard/key-w.png | Bin 0 -> 401 bytes .../img/ui/button-prompts/keyboard/key-x.png | Bin 0 -> 429 bytes .../img/ui/button-prompts/keyboard/key-y.png | Bin 0 -> 370 bytes .../img/ui/button-prompts/keyboard/key-z.png | Bin 0 -> 345 bytes packages/narrat/src/app.vue | 2 + .../narrat/src/components/game-dialog.vue | 3 + .../components/input-prompt/input-prompt.vue | 54 +++++++++ .../components/input-prompt/inputs-legend.vue | 48 ++++++++ .../narrat/src/components/menu-buttons.vue | 5 + packages/narrat/src/config/common-config.ts | 13 +++ packages/narrat/src/dialog-box.vue | 2 + .../src/examples/default/config/common.yaml | 5 +- packages/narrat/src/inputs/Inputs.ts | 34 +++++- .../narrat/src/menu-buttons/menu-buttons.ts | 2 + packages/narrat/src/stores/inputs-store.ts | 106 +++++++++++++++++- packages/narrat/src/stores/menu-store.ts | 2 + 188 files changed, 279 insertions(+), 5 deletions(-) create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad-down.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad-left.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad-right.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad-up.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/facebutton-down.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/facebutton-left.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/facebutton-right.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/facebutton-top.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/shoulder-left.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/shoulder-right.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/special-left.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/special-right.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/trigger-left.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/trigger-right.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-1.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-2.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-3.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-4.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-5.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-6.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-7.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-8.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-9.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-a.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-arrows.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-b.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-c.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-d.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-down.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-e.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-enter.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-escape.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-f.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-g.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-h.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-i.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-j.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-k.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-l.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-left.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-m.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-n.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-o.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-p.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-q.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-r.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-right.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-s.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-space.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-t.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-u.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-up.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-v.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-w.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-x.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-y.png create mode 100644 packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-z.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad-down.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad-left.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad-right.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad-up.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/facebutton-down.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/facebutton-left.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/facebutton-right.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/facebutton-top.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/shoulder-left.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/shoulder-right.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/special-left.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/special-right.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/trigger-left.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/trigger-right.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-1.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-2.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-3.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-4.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-5.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-6.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-7.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-8.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-9.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-a.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-arrows.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-b.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-c.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-d.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-down.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-e.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-enter.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-escape.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-f.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-g.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-h.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-i.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-j.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-k.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-l.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-left.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-m.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-n.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-o.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-p.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-q.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-r.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-right.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-s.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-space.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-t.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-u.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-up.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-v.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-w.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-x.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-y.png create mode 100644 packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-z.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad-down.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad-left.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad-right.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad-up.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/facebutton-down.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/facebutton-left.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/facebutton-right.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/facebutton-top.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/shoulder-left.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/shoulder-right.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/special-left.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/special-right.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/trigger-left.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/gamepad/trigger-right.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-1.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-2.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-3.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-4.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-5.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-6.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-7.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-8.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-9.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-a.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-arrows.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-b.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-c.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-d.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-down.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-e.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-enter.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-escape.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-f.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-g.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-h.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-i.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-j.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-k.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-l.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-left.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-m.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-n.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-o.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-p.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-q.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-r.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-right.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-s.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-space.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-t.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-u.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-up.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-v.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-w.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-x.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-y.png create mode 100644 packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-z.png create mode 100644 packages/narrat/src/components/input-prompt/input-prompt.vue create mode 100644 packages/narrat/src/components/input-prompt/inputs-legend.vue diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad-down.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad-down.png new file mode 100644 index 0000000000000000000000000000000000000000..1f40c869b7f60b72bef6a12b4a6bb23c91664930 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFPOhS{=WVD`uz-z>%<#@f>S+R978;gC%;f&kZ@bT^!3zC z2ZOyF)0?)<44Ba9?5OSI$il}u*Vxt}a1rCSjC=*J(Haz@Uv5SZ`2VshBN{Kyahd=C literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad-left.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad-left.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac6de86118ca05ced65d03133fbca7e00523584 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFPPuH|9<@Y`uz;4E4S(a1-m_6978;gC%;f&kZ@bT^!?OK z2ZOyV)0?)<44Ba9?5OSI$il}u*I3mde#CM)zwej~4Id+|AT`agJ#NmxV(J vvmfi(4H26Zwi~>^&~n0G>g81>GX{pwI|3ti_3C{EI*Y;6)z4*}Q$iB}kfU!Q literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad-right.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad-right.png new file mode 100644 index 0000000000000000000000000000000000000000..cbd8e5f2b9959c9b4e904863adf006d28bd0affb GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFPPuH|9<@Y`uz;4E4S(a1$#VQ978;gC%;f&kZ@bT^!?OK z2ZOyV)0?)<44Ba9?5OSI$il}u*I3mde#5^&4f#IypYyphy w9a#rfE|3)S7JDN0Om>#QPfz8&QAgMqM2-i&ZMq~c4|ErUr>mdKI;Vst07)coK>z>% literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad-up.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad-up.png new file mode 100644 index 0000000000000000000000000000000000000000..3879cce8e0977cbecf52057c4ec36af391e089c9 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFWA1H|9<@Y`uz-|6`m`Bf>S(Q978;gC%;f&kZ@bT^!?OK z2ZOyV)0?)<44Ba9?5OSI$il}u*MQa7O_XOw)3i@BBOG?J$2dOoS(6|YxO4F?c~|KmupCTnA5&xuo%~Kv9K7y9IYMah_3O4{fma z?bBK?jfq#_YD=)AvCcG|6S`-tRTMu7yH{=P;ALP~uqa5o_Ee=j(0vS^u6{1-oD!M< DQ0Hv( literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/dpad.png new file mode 100644 index 0000000000000000000000000000000000000000..88fad8f9a4f16035ebf1bb129184bff034dfa829 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFZg{w|NVIT`uz;*+8a56f)hPm978;gC%;f&kZ@bT^!?OK z2ZOyV)0?)<44Ba9?8xlH$j-+)*I3yhek{o5ExwIvPK~PHPR#PDDKSq9S1_El znJu7^tt0Eu$_0{Q-eOP0p2^}H BZ}R{E literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/facebutton-down.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/facebutton-down.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa572a6db94b8501f7b2d3e2fe96141f1c4f14a GIT binary patch literal 673 zcmV;S0$%-zP)FwgYn*8i5P(fNM&Ii@pI6vBfQ%n)zjJd8lw%FBru@RF_d{B= z@&KNzQaf^;JqwU3XlCx8LA4Yp0eXNucX;Lyo&iV<>@-+r1)aEzy`K98P)(1#UgcWE zrXy3cwE&i1c^o{hZ2*>Zg_vB+y{7Z&S}hGgJy}tx6hmVjOjOYVL*cS8G=?gx3m~m? z428}yH0C)DfT2*oUkFO$96+Wp{VW(7rvM6tXM<20rvTQ^-I6Vh96+RDVyy|0CKrcg z1gt7BETblkM8s()jieg@iCfuIVe`0^<>)f4b=p8^WG_>m6=+So`x5mRdQdjng|%Km zeFE-5K`+&g-?vcHh~GYec;9CpRlH8%FfiT^I5~l<(-*dnxNUdR7W>kA$={u{4aJ$0 zXVJ)(>d0#`2(o7|ib1hGX{HuMFw)tzIC5mN;LZ}h%_B_Myy8(cfv~#x)d`z-8BHa_ zSr8YbdSEnjPa4kZn()AEi;ZsI#8bNu`pUy-`2J`50(8d@13c;-*J-4{00000NkvXX Hu0mjf1Q;S0 literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/facebutton-left.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/facebutton-left.png new file mode 100644 index 0000000000000000000000000000000000000000..ea7c9c6457796cfc75d7170e4331678baef14adf GIT binary patch literal 696 zcmV;p0!RIcP)j0nX0H5mspX&ge?*O0b0H5jrpX&gg>j0VV0G;mu zp6mdh>i_@%0H5n8KjVV{000nlQchD(Z;#)9uOFY!zdsKzU+(}wKEfUV00IYxm+UKUdUVwjUNHxd1d>mv8o~(eg? zPHTV*AuJ?)5ncKbN;rhlRe)e7FEy9;xtyIa_93md3IIPQLMlmzu<1NS`i7Sg;2BeC zF5H~!fGfqMD?r$0Yt3D&(5D4Hg@7vmzvrv^un0)WQAqzCz;_H-1!On2QoIE?P>y|z z$3-ar0z}sjW0ulU%cv7ZSqSOO&BSCO>$4D&tN;v4`AG&}r9xCKn?;fTX#LzeH2 zgn4-M3u9ht2(m!9ln``b%)19o%FGoIYZ!eoXhuz{)~Kt@i(#Aa@;E1N$9*qvJCyXl e|CxS(;ra(dTZiG literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/facebutton-right.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/facebutton-right.png new file mode 100644 index 0000000000000000000000000000000000000000..2e0e5a5a4a232cfec81eafe45f9f419ae9f441f2 GIT binary patch literal 644 zcmV-~0(UFAqOozwZDnWp?iX00H1hL_t(o z!|j*ZdW0YhMx!jUs_*}_1!`v!c00Z5CzlQ!Le_ua_;A4k_}>8OR)4M4$-4l#@{=sS z${PUf&&u+85@5FLfB>5ohzq!x8Gzg4Ugff{Dt_JF7$DMBw!F$F!^8-{>i4{DV|{>& z4%e-a=@=T<1H|*nw6n&jfwf0OJBW=Kum=0=DEDpHwAKN# z7Nv54{1LJO2p;f94RGe6@z@J*0H+bAl}H>PvW1rb z9qu`r0P5WkN?ib!P(nH2dUGshj(-bfwG;sSkphy}PW&6b43KAR10ZvNMg9hKz|;XI zW+=%JgMb)t%sTP757^CzfGo#<@q}dv*h!6HCxXvSkSOV9!lPxoi$s%q0ml60ISJ@hyn(rQ~8;uO7{V6mTr9B(dG;E zZT-RaGu*b;Xxsav^)>!lqir~xYvUP;vBf*%H3`=@- e|Ct^@cYOitN9yfLyvry60000L_3U literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/facebutton-top.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/facebutton-top.png new file mode 100644 index 0000000000000000000000000000000000000000..6acc03b2b2eed17152f5340a8b109708e814728c GIT binary patch literal 661 zcmV;G0&4wi>Uj0j*8AL~P%>hNl^Xok$KzWcwcn`vCqoK*eRf#uC+AfLg?X zhFH`KKv<8?Si>a1>T84Kz6>reptduBxaGAjR!&;XK~x;m<(tPAJugwN8oVhsRJ-l|QywC8@LZ)l8xlktt_ z($13;YB8-1AT6_dhtS!-TX3cjP%DOi19<&p5^%-uX!FY~;0&hOe-GG?;dBGo&>f=z z3W#nTMgq_cqp5^M0T{e!AW!I7fCiaobeTv%_cG;KJ_q2?7D_034xsx91!pP(fO8*1 znQEO$s(2m4$ud6gk2v`<{BCq%`z~&JRN6MWwBF@!RN5YkbFVzJrfdnKyp{$*QVoVV zr~(~2Eeh+DPO`<3Pfb=FwS;H$7$@4i(xaLR5lVIw6K&qzXbS1CfLJfZi$*hR()C(h v=U+72T-Vz*f7|XybNk^;{CqQg0Oa@ry{zhnLRVpy00000NkvXXu0mjf6pAFX literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/shoulder-left.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/shoulder-left.png new file mode 100644 index 0000000000000000000000000000000000000000..17f6fb0af68666eae90c08ecd1baaa9f8580027a GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSlA_5JU!KOfKk-o9Uc{(gq1lhsp!a>qPf977@wzrA)- zs9AxBHNadT^3w1B@wcb16WW%xZ0^e^cB?EEyh?U)7;7$QV5;ZYVJaZVrDznqhS5+q zBTbJbMw}J`5ngojjf>W zgk-`j2eV_=3EBt#o?Xe5!O+gKBXug13TxR#shWC0dH4C-AG9`XHcH5R!|Jd@x}N_+ zgl(#W1hW$x&$c5oz90E;ktOc-FNbj7KgX}m-dFVatGp*8t4Kl-Yk|<`U~wU58K93C NJYD@<);T3K0RRCeppF0l literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/shoulder-right.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/shoulder-right.png new file mode 100644 index 0000000000000000000000000000000000000000..db42583f653539031e2bdcefaf9e3ee9e7003894 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSlS>*Me9>z{w$zh2&c{(go_Y%gVja-Th2977@wzrA*o zuSJ1}H6TVHMf30f^>cUdG10wFD2 zZvsy$U25Q)?7Dw-|;Eook_`0p!XR(UHx3v IIVCg!07VD4TmS$7 literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/special-left.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/special-left.png new file mode 100644 index 0000000000000000000000000000000000000000..35d8f4e3753aa5ae5cef33481d3f1132bf030ad9 GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@S`|sD!mp{LrUw^;-`*?;9ZmsJK42%~&T^vIq4!@m# zJMXXpPutxBwU#e`=a(J0bd2wrK|F^WN<6USrWlhMKOz%X@cSu58a|G^+pn_taTCj~N>1`tV3d&$ux);&Y{KkezTus5L+#P+1x!aI zwQPeJFNt?aJqYIdZh2r{&`a$D%C-w59je0mxf;Y@D__}Q>|idO#`tj0d*KOuJGB>t z^7B}QY?m7VQo%CI3bWW@wG(Vq_dQUUWfY-Z@T z;{QFvjp3W&)6f~r4BuR(y5=%R>|1!j@9Ihy-&y7p{I;HBcwx8TtWnrxvDsC&7Z31@ zSxe=tf0!1%IQMn`weLT&d$&C-cy`Pmam7Io(pYJ&ZpD0i{!m63aaW-ah+vHtpcLZ)HtUs=MXX@|3 ly^jsF>gtVa8DoDlo;mjV?HaG!6M+%W;OXk;vd$@?2>@E%E7t%3 literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/special-right.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/special-right.png new file mode 100644 index 0000000000000000000000000000000000000000..2fab006b6caed66857d276844d1e58355ba6fd21 GIT binary patch literal 591 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@S`|r=Mmp{LrUw^-S{CkFD2Dc0t7#LT3x;TbJ9DY0f z_N2oK9Br94()^YGm&cZF)^%&Py1m+OXUUhz42R@9{+s+@vXfT$yKVlq%AH&jq^-4* zXU8zy`1|5Uo;su3e0G){NeX@o%#0c2KgB)OU#+#C&7Q5JXlnNQqN9d}OdtN)>fg8E z{b2dvn_jBf@?*gbHE}b4uQFVv7{V~ShG)_$>zU;@tR0@Qdxz)kTl`6odE1lu(pUF+ z&)#O|@NLtTsB@d&Fa@z)J@Y#_RBvI?gZIpR>lXG;kag%fAeYWics#IzQR0*VugBFx zQ4PMDJ;e<(f-Nb$oPY zTv(O7#WSSjy|;3_w#q$*BT<^&-|d&};VNc0P#((bdY-Xl|H21;u1qOc_XGyt4J^`F z{oV2I$G<=JtY6N4IBpTE$f>(+B!Nq|Mwpvz(7 zm5hB}A}@OUf*y5DJn^Y~(uZ)HUz{_;O|EtPvII(k{DSNAXtC7CGcBtPvM=faz94&GWzmXPF-U*%Ex9ZN+j1XRX5*I+u7IuVQET@<)b|N0VE* zVM%Ky%Y_s{_Xgd{#=3;>DZ)Gq8#h#0@*Vk?Dfo`LY-&q)oxbn3y`@4wAYQyzsCZG7BlM&dz oE8&mt9^2OF|J>X^avyN-z4(5Mb(ha&V6ZWGy85}Sb4q9e0A$3{w*UYD literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/trigger-right.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/gamepad/trigger-right.png new file mode 100644 index 0000000000000000000000000000000000000000..ca952555536047bd5728b61c4140199b22980ebd GIT binary patch literal 499 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DR}_^X2>R`_Es0UVs04etQP@OP>}pFfjUix;TbJ9DaNK z;G|{+9)8a zGxMhF1uQ)k$-UJK(@qC6$J{k;==0Wi!_aP_dT-xS&Wmpux_>-+_lNu9y9QO=y0;z% zjEh7L4^=S z8CKLz*vOx&@LDP6>Y+IdkypiER|NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0a{(5=){{8bA#AY1d0u*iYba4#vIG#Milfj@zg*AA} z>F|Y(MaupvtU;?cG_-QCUJgrSoms#dctcdDRr|%EbqTC7jN)ai+z+_I9x^QE(g?U< zSu7UEdf>;w^$R9XXqqXa9kI12WPgReu3p#Ng@b=d#Wzp$PyajBjrM literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-2.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-2.png new file mode 100644 index 0000000000000000000000000000000000000000..b82cfe17b900c3c954d03d2c7e489583d297f365 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@S>)+o$ug~9aA1^EtPvII(k{DSrU^{eFi0^jDjJa_2o=977@wzrB8& zuUUbIErEXy|J3jGw^q)+y(!7<^rNGf{s%qbUU=!jhLSXa2lpFZh&cQdVtAS)>#@{w zCEEPa4$UH5E-CX@!qs=~iQ|;49sGHZC z`t0pN#fpUQ&6)O|QL|PtTxWEc&Cg+AazH`hQp1nmtMy*4%X)qN@0wf7R_pxtVXAq; YHiPdQzr@7JpkQV2boFyt=akR{0K{;zasU7T literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-4.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-4.png new file mode 100644 index 0000000000000000000000000000000000000000..98388efefc3fa99efa8ae1781b406f2edc63e37e GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|&0G|-o z|9AmV6;NLF((NiBi@PMqFPQ&+eg1s=_451s8Qx9)nF17U@pN$v@i?9w;mTmpqr!Un ztX0|K#=a+7Dy+A5Z*1`8VAU>9X5IXNYtcsS8(iTJdSefY?O@7$!)10z^vy9wH_-`e z8IHI- literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-5.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-5.png new file mode 100644 index 0000000000000000000000000000000000000000..77edaf82fbbcf048fe9febf0fc84280d9a45dd96 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSr0$DjAl=dWLX-(J3d{(go_v3<5cxlNufjv*0;-(Ej0 z)U3e68W8QO&^Y1$|66^ReQz7+8uoF|-aXA&>d@hplE#(=rVP$XkK`4-7=JrFd3Z!F zAY!5tV?w9{LnwO)V~Xqq)&r+39vp}~aC_g!;|)7I+|Mu_GMc^IaMo{y=*FWLPF3DM z7=AixN93=B-`_TT=e-csJY9Ip#dT75Zci`HU(r!oYiIm>*{cJY3@?vOX6WM6U~-Uc uI38abT7LD`{&&t&((?}dpDFX>1hY-gw_{8E`EtPvII(k{DSrU4pShVElXlQR%MaEkdFlR}#2f&;w{ayM=;-Z=k#5ATVK%|!>6wr*U^-oJ&R zh~fK+PmHYxBx^2fF~_~MUBF^+d;5uehGSP4RGzOse1$EtPvII(k{DSq*$JhJwzt6Y7KYzXa{(c6p+_~~VxjmjPjv*0;-(Ej0 zbVz}R^};RjDJm!a*RN&PHZ@S|z1;dNPc!{uBezd^vKo6G?*Rsvr_LP;3GxwL7T)|P zTqmAsj0oxE@vu@bd~ku0ow>`1&!Rx^Ly&Ymm(BZV6Nbcq@+1cKTxHe;eQVoVw_G!{ z;D1w^VXX7?+W&(L4>oK_J+QVm=|=D8A14GEe}~mStdq-lemzHHN?FsS>8qH-nU>7< z=Q&}eV9Zd;Q1^e;>Rqds{VTO^%CT~(H@5sRjs3XMw literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-8.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-8.png new file mode 100644 index 0000000000000000000000000000000000000000..eb418fefacc55e4ade78b5162cf880c2942531af GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=|t=imF^m+!A%uRq^@Kf~g#{WpP97d%}YLp+WrSGY46 z^r*0&S9$->ow;27nWE;4|NX3g95gEa$!o7@*0$)6Jt)7U>F*8EKW*9_$Jag3jyYH_ zlMupqlgsY=p6X(u`AwNCI+>jh#uo@xc1Iu7-_R7kL-bGecd02HA2cg|{WrE_Wm(&> zC z-ri`FS^6i!3*>kIiQmyw^@eNTVbLea;U9W`ERv`W{4Kq5OTDpt@W1CfCx+`jVr2Lo Xv+C^wR`X_{-xxey{an^LB{Ts5cHFPs literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-9.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-9.png new file mode 100644 index 0000000000000000000000000000000000000000..a20ac2e3b85c280538576335bd5c564a4a1ee31d GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=nQ_3Qc9=g+?{zrX*zJwv+wp+`We2c9mDAs)w*E8H0j zdQ@2TgTw#2Gp|1MOi^>g|9;jQH;szF^4d4p!wckhH|;NA{dz;Rrd|8R@pTW_V-D8K zB!n>DTu~o@*S?aebpiIzu&3mvHrie_t$^H zlb#VGdw%?9pWih9{k*yVzrE8{bhkVD*wk3Y zZ};;bqCfV2KDe4;#_b;;wHTgV|GM~RQw{6uji>)NY2WCNJ($0v>E{j6KPvk)j>TQ6 pbJu!%|5);=`n~3#R=L_RFf7==q>{5crV{8^22WQ%mvv4FO#p|9z+?ab literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-a.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-a.png new file mode 100644 index 0000000000000000000000000000000000000000..d845fa44901c564f62ae11d1c2cc4491a76c6afe GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}50G|-o z|3m~aq4q`EZ&kJzu@=r_3Qih%jfgox1Z1O#KE8%DDlnH#WBR=_}i<7d`$)- zYzcf1ME5kF^Si^~?v~dud9(WijyntPF$gDfFz;~{)SPtB)#LHvZR@Yf{$J|6e}cX5 zy~EA=AD^*w)oN^MnH|BH?fAs3F=hg%fK28Gmx4u({R&GR+Z`f|;xE+hkz$N$XcjJL zIKpYvaEepH;U$x-$i_>TSahE>0!f*3+)I~o8b!oSou-!X;JTMLGmmU*K$O&i)^35- zE0;3vn6vE&ml3Cyc7o6pvkQCGt+qCV)!7`LX7yl`-0^8v688#imTkYn*qmV_mGg7H zFR#m&+U5lBX6q(dUb+42ld7(MJGD)}_Vd29&%br8J~0JWO@16c!8HaL0t}w6elF{r G5}E)E3a}Rd literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-arrows.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..6491f7492740c321d3244224ec17104fc94accf0 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|s0G|-o z{}=!$0~EX2x2h7zVlN5u3y$x9e}8{H!(Gk~_kco~o-U3d9>OjtZX>C zch8<9jN6;86d7FNAR=7em23N4*6iISYZ7GI+ZB KxvXNS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=(S`SbP9ub*GPU;cf+J;T9E>sWwNyFFbTLp+WrSGY46 z^r*0|Ka=*)o!NNubw$k=|NB}0IA~OSme;mm4=<44-L$`e_3I7Mns)66$JaezjyYH_ zldwc<1#{uMdB@f=Ok$GzC>-$N-0TTW;uRtcop;LDf6)HXm8G<->3)kyPR;igA@`<6 zGey>aEh2jkzCRJMr*DauMa>cED_1z%!#`Sxo@f+}=>M^%J@{bFn@{!+xy~hre_&si zU|YtzzeB%kqxjbQ6TN|ho BqnZE! literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-c.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-c.png new file mode 100644 index 0000000000000000000000000000000000000000..0a530ef762ae6b43804761d9191497c87c2af0e8 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSNK(*sW9l>(}y}O>1cp?dA8HFE(l3n@d5<*5$X&ILsp@Dzz*RA64f6u_3is*>pQpuS;&WjkN9!;RN-4|8m=DXooRYdHOR-{w<{ zx5R7(8uPzJiC?HZJH_P8`A42SGxj`tH{I{?0q-|gkFo4y%$fi3<45KmhG^B_mzcWG z2M5P>rWPH!)3(rL>K>u~hgaolY8lQ>%r8iBKKNJ8hA%HOfTPV)T&+M#A<{0iVJhP` xrbRp*^X*@Com+Lm?%ihV>F+B38T&p^&6AP%x=Bk(cLUJR44$rjF6*2UngAj&yo>+< literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-d.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-d.png new file mode 100644 index 0000000000000000000000000000000000000000..2436d62fc59292aab203fe9a9bf2746e8d8c7948 GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@U&*#U#ub02S-hTf6etw3H1#kI*a;H6A977@wzrB8& z?~noyTY_1_9IuzZ?bj|UzoZc>u0Q2}R^*}S2A3|)T-FnLU_IkOHHKdT4Jpk0GA47I znYB2B+!ZEkR5En&XfO+;I>;~xr7`|zw7H*mGh{tum4RmCwK-xBv~sx=ZXHaj_eyW9 zuE|eW!I0s;E}pZ&o&AiILQ(YuhA;1?>|i=zdR@cAsud(g}Rr3|a-_#u6 SMtuN!i^0>?&t;ucLK6TK7^xWm literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-down.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-down.png new file mode 100644 index 0000000000000000000000000000000000000000..71f2dd4d07e5a1e5693680e4948de4661249a7bc GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@$d8b*Pp+?U%uadKEso&wgW(^vz{)FAs)w*E8H0j zdQ@1~-%0!D&TJffO;Pi~|9;jQ2aSrq^4d4p!wdfHKPg$V`@F^f|IFb9|Epz|y`FdN zf2;P3{~c%lezJeS_3!`TWe@(=w=h{dasA`fXI-En5$dp$DWXU%{$Op#pZGak_nbuT z9DaM^w+CB7=m)Wr3~%o3={I25-L##9xj<#-?|RN9C%1ohb2@iu=>u^y*4Khu&*~2? zbNH_wbMT-1jjn_L?iaAW{(n6|%Ytv?j2(+4rbz@Ij9+r;pRe7rKii9y*GC;;W>EQD W$=>$#`);7e7(8A5T-G@yGywp%m9(q? literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-e.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-e.png new file mode 100644 index 0000000000000000000000000000000000000000..18d44a796712dc9a619e1c0b141dacf74c69c0a3 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g6_6x;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZT0j5=NH zVT_LMmmCjfSny0Mka$_SnS1vit{qKUZ@8u%7IjGs-!SFJB8lq2-8?I|%zx9Wx&KJf elhE!828OKpY_|gLJT?Hjg2B_(&t;ucLK6T42Wl+< literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-enter.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-enter.png new file mode 100644 index 0000000000000000000000000000000000000000..4cbc61d3241c29017f9f94a755242b43f134a023 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|&0G|-o z|9AmV6;NLF((NiBi@PMqFZh0azP{~YvZvhNf+ac|b_mDUTC7>Za- zm^7Kb2nLke7qBs~Iuy_T)tJTa%5;t)AwEGTH_+y{tmlDktGgFOGBI>Bh;kGtf47bJ z{P$|JD8HWEnTmo*$L*@ROt0^LV0d5W(LWo>PunG)^65L&ozR|iEtPvII(k{DSNA$B>A_Z?E6v zYgQ0o4RE=cc>Zsc=3tQDNqS9kmfnjrGiL95kOcdv&tiW_PiR zUBv!_XG(tKjD=mi2?hsD91b*GV35>dllW1&K#J2yuQQ~lE5PBlsc&*+pD@P>-J{Dg z_pryE%;{Y5dzP|7NHW8Qo)w$2B*PT0+Wrc^Id-8zYouwSA6pheqI0XFZ&~)M;Sa_{an^LB{Ts5h!M7P literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-f.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-f.png new file mode 100644 index 0000000000000000000000000000000000000000..5ea2b7eb0aeb12088cc7764383267ca092eae71b GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g6_6x;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZT0j5=NH zVT_LMmmCjfSn!CkD%<9lB~FiL3=e3HJy^7(N#hOIG@*ErWc{q^ic`N$-fQr5dPLuz dEJ1z-hVV%oMZXrF*bH<9gQu&X%Q~loCIBS!Ww`(V literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-g.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-g.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1eaac8a3b103b4889b58d915fed67ce5f924a4 GIT binary patch literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@K*PrKqpC7M3zh8d;eR~G2omMM>a=$!X977@wzrB81 zs9AxBHNeHOh2_Wp^=tdfx>_ao+z9n9vnp~?LuX$_S69Z{o?^l zIV^{sHS`Dk;E6CuILUB~;amfU8~Z=@gtyx-++q7*eUZhS!A3RG-jGM5Sj&c)=f&S+ z%z`(!GMxRO{O0DfD}@Sae^m2?XB?Y;?Sp8{+GAH5-cH%Yz2ti8=Yx$6%r)#E&U>oY zax*{sI>oZkm@UBL*bS$<>-C=Q{W>F8vsdkj@CxSTDK+b}6y_e^(z$!%!UZavxgpV> zix;z3zp7ox9L{*?STI`z&j!f{1_x^ES98A&o&Krp{^{()OW*(Zk^RxZF52={|MbI^ R4Zu)f@O1TaS?83{1OU7j#JKNS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZg`@eEaqJ^8Nc6_#fY30*aP-x;Tb-98aF%$zaf)}YlJ8d^D6gToV9Cl;_q-VoJk)?RUFU4mr{qj(uB_XDo5hYZT0j4iEa zL;Tr>n=(zbX1YKUJqGua7#y Z%wXZh(Y(&X?NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g4uTx;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZRQj8f?# z2Uj#Ph8ryUoF-oOQ?!6J6sWXay920H^P{Wbw?$==L7Db9xr6IEpPpDP_K|@>{Wtfb UVEKb?KNS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=h0``7F9=igs1-)}#EKf|RrHw1xFGd*1#Lp+WrSGY46 z^r*1v8^8PK&Rl-`nWE-~|NX2rZW>fb})dAl7gLpsDkZh#$Steaqfs>EG9NK0oDuyTxtoU}s?1Wwow-Z?ybU Qpd%SPUHx3vIVCg!06d+Tpa1{> literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-k.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-k.png new file mode 100644 index 0000000000000000000000000000000000000000..52ba37d7e7c798124767c4bf60ea36926b169edf GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=!0u6zn=enJ%h%cHSd8^S3F%DLp+WrSGY46 z^r*1ARa*FCW3 zGYArOh?HFIS`2J1cK=RXa%NF2V_nYa z`n}wVtAR6VNxJPEu4l>9|8s_406K+#2UGnUu6+XWBFXw$_R3Sg`Cm^y^}kEH@~V;? a14Dr9GP?=)1(pH*$KdJe=d#Wzp$PyDhpD>& literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-l.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-l.png new file mode 100644 index 0000000000000000000000000000000000000000..82e1dfae77511fecaf93e86d39cb1dd8a5f88733 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g9G+x;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZT0jJqxc zvMR?ivhXZvnmEsV_lDE!8?;vdm089(ij=W>cj|X-6yJJ!g4gepaWg)7>$t~l?O3Fra_Pgg&ebxsLQ04}>_n*aa+ literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-left.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-left.png new file mode 100644 index 0000000000000000000000000000000000000000..e59cd269a908041a4244d098e7befc6e9031e3c2 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@ALWBpTECfzTZB6KEs>GpY8*tu6nvShIkxLu5f2C z=uu(S_qG1FxUug+r3crK|H+K<0$g!_k8@o+DEj9A`aRNj-`#clUw>Hi&i`laFL$Z` ztbfS$%08)h|DW<5P5=LI(5(0`ztEw7LR0->t^mNS%G}50G|-o z|3m~aq4q`EZ&kJzu^1z`SSMj_xJ0c_g~MTIExi%EW<5N7sn8f<4>>d6>M@4 zU`>$Pz@oi@^{s=qf$C=Fw+vPdd$FO!z5W@}S zQxc6WD_Rz4KXkq@)k85sKbdEe5X0;H&)oL!m)>ys;NgZ=zIFfCC)HjJYtF6rv44Mi eY3+X33F7(Brp{elIh`BmO9oF@KbLh*2~7ZM>72Fz literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-n.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-n.png new file mode 100644 index 0000000000000000000000000000000000000000..41f13363f311d16affce9787e745aa6ed9a5780d GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}@0G|-o z|AYWgAyCOe`RR*+ES{1ezu@}y@8|R9-NS%G}r0G|-o z|HJ{Ha-hP1@~AC97GFt_U-0|$@%8!q^7q&G&);v);A%F{94PbC)5S5w9(hR(pA{VRPKCZ3T@F^#-1H?mjP&vDbu z=?C7`7(8&6C}rBcu08)D?{Coyj!Jr}77CK`pOYm=_qNnYMsETz(8Q| MboFyt=akR{0K6EodH?_b literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-p.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-p.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc24045e691766253c6f23e3355995ebc535820 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DRNx`^V?sujgMsU;h1m`+kPMQ@ZSda@##!977@wzrB8& z>#zb3Tf*)vTi3I{?cYXmHS2Dgxhx>!bA09F_6sh-ms9%d$aycY;~BuNnpYBqXHY&AG)^7 zlVQQnvO|Il`s|-}eGy8yr{(xda<#yRLr$OkLQd74W1sDLh8MdF{23~KH!@6R z4`EV~n{ZCPG;(v+oBrRbJ-Pg@|7VK)I3Zl?^liG!ee+2`FEDtz`njxgN@xNAw^gJz literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-q.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-q.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8a10dbcacdd0da0354493f43e05ae780ac7e71 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSNA-|PFIUw^+pUY>vde0zq?yH*te<(_)FIEF+VetZ2U zU$cS$Yd}nd?6N=quZyk7%w2e~yLQzb^`@evk_eIQlLcjem>=Nn(s*YPLC$>CIX2BK9 zN+tWHVh0;~YrW?!s_OLRX3m^aWfHn6A>sD-w^i(XOqmDsn5J#5x_0_Uy3bUb-t*Gw z5+}~TO<8y1*1pa5Gk@fY=QDf~saTrmc(F#PEtPvII(k{DS@Y!Wm=7IEHsBhK=+{_5}>&CJP?hR&4W-JeWZYs%;7hqc9x`81} z@K}sQ1DDF}e<}@0%v}tdcu&mV|7zB|RgU}Lxxc#YSNO-6_km{mGmmd>8WNxP0R6+@ M>FVdQ&MBb@0F-g4ivR!s literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-right.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-right.png new file mode 100644 index 0000000000000000000000000000000000000000..dad97765353c018072de673a8822b6991a3d4f42 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@ALWBpTECfzTZB6KEs>GpY8*tE_u2*hIkxLu5f2C z=uu(S_qG1FxUug+r3crK|H+K<0$g!_k8@o+DEj9A`aRNj-`#clUw>Hi&i`laFL$Z` ztbfS$%08)h|DW<5P5=LI(5(0`ztEw7LR0->t_z}n?A<*M$~$pAaC;E)fqgksgqIaW zV1e6%zz^*cn)bJd+)-ZeKwr`Qp0YqdJ!k6^TPCi5LS1XB7oVKR#A?4$b4Gu_h5zic zn?Bn=;JQ|SJdEes|0eAj|LvuN51MrxJtBJa{k!DJ|GPtO?e9B2<^QhyC!yUH3=9_T WEtPvII(k{DS?@>&MUMuV0^ke}BKd{CkE5L9q;=+(%Cr$B>A_Z>Jv= zYF6NJ5fyN1IPt$ew|nbiv1raOS2nrJ-t&2s)_M5OiiON|yaERlj&UnWaXe>`?OuAG zLC@$(QA5AZPo4!83{x3(_!EpBQdTklV|6&E-zIu5koSP!?GwJ!_!SB}cv}lGEV~#`BwrA38D_$JD+95ub;R?fzSubAKI9N-E{8Z@s{Y5+^Idz78j8spe z(Mk4&sZz(w=l^6%coJn1%6MgO`=^UFk)cd7?Vj6zCd^xLmOXJzm&wl>_ABpO`7~G* z-rJ-x9B1CaBT&)s;cw{lt*cjkF1zDCWT;%h&U^=NUX*{an^L HB{Ts5ps&2~ literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-space.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-space.png new file mode 100644 index 0000000000000000000000000000000000000000..aa2b684ce3c883791ed70cabf34be6ba835eef87 GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@$d8b*Pp+?U%r37J;P+tbWfnv3Qrfu5Rc=@748fM zJu0m0@1*^6XEqMLrl|Sge?M!DgGR+)dF>nQ;RXNqpNuWp{od;Tf9~*tf7LR}UeCMs zzft?e|BkbNKiNOv`uG3vvIl?bTbQh!xc>EONrW1hi2nKipKqp|0;_?8G3)chPxWl6 zF@Fv%OR#l1_{aZ-$cz6i+Bg0)M;qSwFTF0|@Bb(t*6WI5!r>yyhXf@5IBLDU|19}b h{ciJ5t6Xgu7+P+XZw{Ba{Tk?I22WQ%mvv4FO#q4Co~!@> literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-t.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-t.png new file mode 100644 index 0000000000000000000000000000000000000000..c122913f570243d24d5063438d295518ae89bf36 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g6_7x;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZT0j5=NH zL5vYS4f<}PJsPaaR{3R#)8iS#16pGb7VT)#c*8YKC|)F4KWn<;)Nhmb8a$mI(YGf{ cke`9!{T42+(j`WXKu0imy85}Sb4q9e0I5@CKL7v# literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-u.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-u.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc351c144894c6fc0562e792c6d5b3ec7ae16c7 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=h0``72|ujlWVzdwJ!J%f)%TQg8yB z9u-#oyXXG6Gp7eVQ`Fq>zn`_nO{3zYy!MM`?H&EG2jh1%{k=D<$!5)W#|`Lu22WQ%mvv4FO#pNHrF8%R literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-up.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-up.png new file mode 100644 index 0000000000000000000000000000000000000000..d94221b68d22fb333b8da2dd221fcf42f3edd8e8 GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@AKF5pPzq!zkI)aJcGlE6)r%jE1oWnAs)w*E8H0j zdQ@1~`=tGIXEvUDT~YJF|9;jQ2aSrq^4d4p!wdfH|0G$m`@F>8|IFb5|8@B;m->I+ ze^~TO{gG#NKjjNp|Nl=6{_xM2k1l)g&woeLU;7QB&42elK c3Gy>AFveE+CiW}E0sY6|>FVdQ&MBb@06NmPLjV8( literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-v.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-v.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe6d9eb872d7a53c8b7a0dab9ddb2ab2d1699b7 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}50G|-o z|3m~aq4q`EZ&kJzu@}y{P*+Y-`mfZ-`~%Wn0RLuP~x+vi(`n#@wZp^3pN>u z94{2#u(_1QeM13*djYfC0p1ekmbocb+KTY3$%o3^T(yteC z`;zMB%=A<#bgrj*Cqpvpvo{Ak51y1uFm>HU_HCC;e;o+h-r1k=$BFl z7hjvYNRS~`Q;P8dGNYEi>hQF^@;?7I1~PVdm?#BI&Tv_vdU3_S>dnkXHG5Mx9Di^! xq5a_F?~5hmxAt1R?Os{`SBU@p_8Z3f%D*Ok{d{5KbfEVcJYD@<);T3K0RTb5xD)^Y literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-w.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-w.png new file mode 100644 index 0000000000000000000000000000000000000000..c79a453712f67507c0aa63fe42ba396a70e16ecb GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}@0G|-o z|AYWgAyCOe`RR*+ES{1ezumFpAV`#F4`3-~h0X_xe7Cr^TfVz2&|C!?D7w09#P}tY)iUi&o>$J`-%Bf6l_a4+Ps_9Yerp@`ZuqgA~Gxsraud0 z2}oW(#o6&tlb8O}JfV#XSg!F;Zpar*u4G;+kkxi$_kt%(A11yEUN)K2;d+6CCriNI z_f9GepLm%v#ec055h;vRoDl5tfLYR&#dJb|%Ytl|(BMV9CA|xBybRQ}^n6?do~bE) zFrFM2zn5>rgZ=Tk5uYC;INr`&TFV_5Jo6hWZ9g9QjeZ)|CJQ Og2B_(&t;ucLK6U=`LGxO literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-x.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-x.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf7e5d676ba0ed34b73c469b6d5c9aba06aceee GIT binary patch literal 429 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@K*XPUMx7Xi){(XEu|9pnq^Up{#Ffej@x;TbJ9DY0f zu2i!EN1OK65B-(@!*^fOtzM>GV14V!38VWwKMu6rZZ|7Au%2~Fo3oLZk5AF+;*niXr*^(x`mp`u$7eex8*xmrX^8o;KzHJYHBl3d z0+(oBoO7xoNKdoj$+1=3o(xat7sqX72-5mlB^Ai9vb3S@a+x0EZix+At=8}=XX}O6`p^UF8Xk-VaGjjs|FT^dsP|?ee4CS4xbo4{dSMN7AgAr_}|J! jy7Qm?JAZ{yzl{Bp`BzzC1BL6r0AuiU^>bP0l+XkKFon-g literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-y.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-y.png new file mode 100644 index 0000000000000000000000000000000000000000..e8469b0277ef58d3f6cb746d8536b9de05572499 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=yB z9u-#qn^yl8H}5l3B`YP`mZJXQ=mbb_k z9$}SA4>{;@uF696OY-#pjNt}AC(JKk{Rnh|>OPHQaaaDiYQ2?zo_wl)vvlQEB{>F$ YvMI})FQ~qV0s4-?)78&qol`;+04;vDe*gdg literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-z.png b/packages/create-narrat/template-games/demo/public/img/ui/button-prompts/keyboard/key-z.png new file mode 100644 index 0000000000000000000000000000000000000000..575a424bf5a8306302af38199e0e6ede793f67ef GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DR}}=lkoQm$!dEzkdIE{(gq4y{lFM<+ggdIEF+VetUhl z*kJ_@wuH%Q_Y9_eufH|Vs)QrxU|QCXaK8IZj*sWrACvr$-w@Buz{eC2cAwp-YjU-N ztE(0((<&j32_+6n2Np4lF)c7+yTfczzpb3bPIK*_8EoGk$KHLUBM|*xaQXRz*Sdax zaV&bXZ4%?m`0Gjyk_{3M*c4cAFnTbSF*qHl-LKc?Aa`f_HvTtp1`Ui3*ZEmiSS=7b w@S36iZ*ch6FyFt=>ohif6M8fMWJ7S=nhoEa&v2JL0(yYK)78&qol`;+0Kqn(?f?J) literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/demo/src/config/common.yaml b/packages/create-narrat/template-games/demo/src/config/common.yaml index b07eb170..5970a8ee 100644 --- a/packages/create-narrat/template-games/demo/src/config/common.yaml +++ b/packages/create-narrat/template-games/demo/src/config/common.yaml @@ -14,6 +14,10 @@ dialogPanel: historyLength: 200 # The number of dialogue lines to keep in the history hideDuringTransition: true # Setting this to true will make the dialog panel hide during screen transitions showAfterScriptEnd: false # Setting this to true will make the dialog panel stay on even if the narrat script ends +input: + showPromptsOnGamepad: true + showPromptsOnKeyboard: true + showBottomLegend: true graphics: allowFullscreen: true layout: diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad-down.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad-down.png new file mode 100644 index 0000000000000000000000000000000000000000..1f40c869b7f60b72bef6a12b4a6bb23c91664930 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFPOhS{=WVD`uz-z>%<#@f>S+R978;gC%;f&kZ@bT^!3zC z2ZOyF)0?)<44Ba9?5OSI$il}u*Vxt}a1rCSjC=*J(Haz@Uv5SZ`2VshBN{Kyahd=C literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad-left.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad-left.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac6de86118ca05ced65d03133fbca7e00523584 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFPPuH|9<@Y`uz;4E4S(a1-m_6978;gC%;f&kZ@bT^!?OK z2ZOyV)0?)<44Ba9?5OSI$il}u*I3mde#CM)zwej~4Id+|AT`agJ#NmxV(J vvmfi(4H26Zwi~>^&~n0G>g81>GX{pwI|3ti_3C{EI*Y;6)z4*}Q$iB}kfU!Q literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad-right.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad-right.png new file mode 100644 index 0000000000000000000000000000000000000000..cbd8e5f2b9959c9b4e904863adf006d28bd0affb GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFPPuH|9<@Y`uz;4E4S(a1$#VQ978;gC%;f&kZ@bT^!?OK z2ZOyV)0?)<44Ba9?5OSI$il}u*I3mde#5^&4f#IypYyphy w9a#rfE|3)S7JDN0Om>#QPfz8&QAgMqM2-i&ZMq~c4|ErUr>mdKI;Vst07)coK>z>% literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad-up.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad-up.png new file mode 100644 index 0000000000000000000000000000000000000000..3879cce8e0977cbecf52057c4ec36af391e089c9 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFWA1H|9<@Y`uz-|6`m`Bf>S(Q978;gC%;f&kZ@bT^!?OK z2ZOyV)0?)<44Ba9?5OSI$il}u*MQa7O_XOw)3i@BBOG?J$2dOoS(6|YxO4F?c~|KmupCTnA5&xuo%~Kv9K7y9IYMah_3O4{fma z?bBK?jfq#_YD=)AvCcG|6S`-tRTMu7yH{=P;ALP~uqa5o_Ee=j(0vS^u6{1-oD!M< DQ0Hv( literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/dpad.png new file mode 100644 index 0000000000000000000000000000000000000000..88fad8f9a4f16035ebf1bb129184bff034dfa829 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFZg{w|NVIT`uz;*+8a56f)hPm978;gC%;f&kZ@bT^!?OK z2ZOyV)0?)<44Ba9?8xlH$j-+)*I3yhek{o5ExwIvPK~PHPR#PDDKSq9S1_El znJu7^tt0Eu$_0{Q-eOP0p2^}H BZ}R{E literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/facebutton-down.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/facebutton-down.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa572a6db94b8501f7b2d3e2fe96141f1c4f14a GIT binary patch literal 673 zcmV;S0$%-zP)FwgYn*8i5P(fNM&Ii@pI6vBfQ%n)zjJd8lw%FBru@RF_d{B= z@&KNzQaf^;JqwU3XlCx8LA4Yp0eXNucX;Lyo&iV<>@-+r1)aEzy`K98P)(1#UgcWE zrXy3cwE&i1c^o{hZ2*>Zg_vB+y{7Z&S}hGgJy}tx6hmVjOjOYVL*cS8G=?gx3m~m? z428}yH0C)DfT2*oUkFO$96+Wp{VW(7rvM6tXM<20rvTQ^-I6Vh96+RDVyy|0CKrcg z1gt7BETblkM8s()jieg@iCfuIVe`0^<>)f4b=p8^WG_>m6=+So`x5mRdQdjng|%Km zeFE-5K`+&g-?vcHh~GYec;9CpRlH8%FfiT^I5~l<(-*dnxNUdR7W>kA$={u{4aJ$0 zXVJ)(>d0#`2(o7|ib1hGX{HuMFw)tzIC5mN;LZ}h%_B_Myy8(cfv~#x)d`z-8BHa_ zSr8YbdSEnjPa4kZn()AEi;ZsI#8bNu`pUy-`2J`50(8d@13c;-*J-4{00000NkvXX Hu0mjf1Q;S0 literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/facebutton-left.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/facebutton-left.png new file mode 100644 index 0000000000000000000000000000000000000000..ea7c9c6457796cfc75d7170e4331678baef14adf GIT binary patch literal 696 zcmV;p0!RIcP)j0nX0H5mspX&ge?*O0b0H5jrpX&gg>j0VV0G;mu zp6mdh>i_@%0H5n8KjVV{000nlQchD(Z;#)9uOFY!zdsKzU+(}wKEfUV00IYxm+UKUdUVwjUNHxd1d>mv8o~(eg? zPHTV*AuJ?)5ncKbN;rhlRe)e7FEy9;xtyIa_93md3IIPQLMlmzu<1NS`i7Sg;2BeC zF5H~!fGfqMD?r$0Yt3D&(5D4Hg@7vmzvrv^un0)WQAqzCz;_H-1!On2QoIE?P>y|z z$3-ar0z}sjW0ulU%cv7ZSqSOO&BSCO>$4D&tN;v4`AG&}r9xCKn?;fTX#LzeH2 zgn4-M3u9ht2(m!9ln``b%)19o%FGoIYZ!eoXhuz{)~Kt@i(#Aa@;E1N$9*qvJCyXl e|CxS(;ra(dTZiG literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/facebutton-right.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/facebutton-right.png new file mode 100644 index 0000000000000000000000000000000000000000..2e0e5a5a4a232cfec81eafe45f9f419ae9f441f2 GIT binary patch literal 644 zcmV-~0(UFAqOozwZDnWp?iX00H1hL_t(o z!|j*ZdW0YhMx!jUs_*}_1!`v!c00Z5CzlQ!Le_ua_;A4k_}>8OR)4M4$-4l#@{=sS z${PUf&&u+85@5FLfB>5ohzq!x8Gzg4Ugff{Dt_JF7$DMBw!F$F!^8-{>i4{DV|{>& z4%e-a=@=T<1H|*nw6n&jfwf0OJBW=Kum=0=DEDpHwAKN# z7Nv54{1LJO2p;f94RGe6@z@J*0H+bAl}H>PvW1rb z9qu`r0P5WkN?ib!P(nH2dUGshj(-bfwG;sSkphy}PW&6b43KAR10ZvNMg9hKz|;XI zW+=%JgMb)t%sTP757^CzfGo#<@q}dv*h!6HCxXvSkSOV9!lPxoi$s%q0ml60ISJ@hyn(rQ~8;uO7{V6mTr9B(dG;E zZT-RaGu*b;Xxsav^)>!lqir~xYvUP;vBf*%H3`=@- e|Ct^@cYOitN9yfLyvry60000L_3U literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/facebutton-top.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/facebutton-top.png new file mode 100644 index 0000000000000000000000000000000000000000..6acc03b2b2eed17152f5340a8b109708e814728c GIT binary patch literal 661 zcmV;G0&4wi>Uj0j*8AL~P%>hNl^Xok$KzWcwcn`vCqoK*eRf#uC+AfLg?X zhFH`KKv<8?Si>a1>T84Kz6>reptduBxaGAjR!&;XK~x;m<(tPAJugwN8oVhsRJ-l|QywC8@LZ)l8xlktt_ z($13;YB8-1AT6_dhtS!-TX3cjP%DOi19<&p5^%-uX!FY~;0&hOe-GG?;dBGo&>f=z z3W#nTMgq_cqp5^M0T{e!AW!I7fCiaobeTv%_cG;KJ_q2?7D_034xsx91!pP(fO8*1 znQEO$s(2m4$ud6gk2v`<{BCq%`z~&JRN6MWwBF@!RN5YkbFVzJrfdnKyp{$*QVoVV zr~(~2Eeh+DPO`<3Pfb=FwS;H$7$@4i(xaLR5lVIw6K&qzXbS1CfLJfZi$*hR()C(h v=U+72T-Vz*f7|XybNk^;{CqQg0Oa@ry{zhnLRVpy00000NkvXXu0mjf6pAFX literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/shoulder-left.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/shoulder-left.png new file mode 100644 index 0000000000000000000000000000000000000000..17f6fb0af68666eae90c08ecd1baaa9f8580027a GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSlA_5JU!KOfKk-o9Uc{(gq1lhsp!a>qPf977@wzrA)- zs9AxBHNadT^3w1B@wcb16WW%xZ0^e^cB?EEyh?U)7;7$QV5;ZYVJaZVrDznqhS5+q zBTbJbMw}J`5ngojjf>W zgk-`j2eV_=3EBt#o?Xe5!O+gKBXug13TxR#shWC0dH4C-AG9`XHcH5R!|Jd@x}N_+ zgl(#W1hW$x&$c5oz90E;ktOc-FNbj7KgX}m-dFVatGp*8t4Kl-Yk|<`U~wU58K93C NJYD@<);T3K0RRCeppF0l literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/shoulder-right.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/shoulder-right.png new file mode 100644 index 0000000000000000000000000000000000000000..db42583f653539031e2bdcefaf9e3ee9e7003894 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSlS>*Me9>z{w$zh2&c{(go_Y%gVja-Th2977@wzrA*o zuSJ1}H6TVHMf30f^>cUdG10wFD2 zZvsy$U25Q)?7Dw-|;Eook_`0p!XR(UHx3v IIVCg!07VD4TmS$7 literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/special-left.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/special-left.png new file mode 100644 index 0000000000000000000000000000000000000000..35d8f4e3753aa5ae5cef33481d3f1132bf030ad9 GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@S`|sD!mp{LrUw^;-`*?;9ZmsJK42%~&T^vIq4!@m# zJMXXpPutxBwU#e`=a(J0bd2wrK|F^WN<6USrWlhMKOz%X@cSu58a|G^+pn_taTCj~N>1`tV3d&$ux);&Y{KkezTus5L+#P+1x!aI zwQPeJFNt?aJqYIdZh2r{&`a$D%C-w59je0mxf;Y@D__}Q>|idO#`tj0d*KOuJGB>t z^7B}QY?m7VQo%CI3bWW@wG(Vq_dQUUWfY-Z@T z;{QFvjp3W&)6f~r4BuR(y5=%R>|1!j@9Ihy-&y7p{I;HBcwx8TtWnrxvDsC&7Z31@ zSxe=tf0!1%IQMn`weLT&d$&C-cy`Pmam7Io(pYJ&ZpD0i{!m63aaW-ah+vHtpcLZ)HtUs=MXX@|3 ly^jsF>gtVa8DoDlo;mjV?HaG!6M+%W;OXk;vd$@?2>@E%E7t%3 literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/special-right.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/special-right.png new file mode 100644 index 0000000000000000000000000000000000000000..2fab006b6caed66857d276844d1e58355ba6fd21 GIT binary patch literal 591 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@S`|r=Mmp{LrUw^-S{CkFD2Dc0t7#LT3x;TbJ9DY0f z_N2oK9Br94()^YGm&cZF)^%&Py1m+OXUUhz42R@9{+s+@vXfT$yKVlq%AH&jq^-4* zXU8zy`1|5Uo;su3e0G){NeX@o%#0c2KgB)OU#+#C&7Q5JXlnNQqN9d}OdtN)>fg8E z{b2dvn_jBf@?*gbHE}b4uQFVv7{V~ShG)_$>zU;@tR0@Qdxz)kTl`6odE1lu(pUF+ z&)#O|@NLtTsB@d&Fa@z)J@Y#_RBvI?gZIpR>lXG;kag%fAeYWics#IzQR0*VugBFx zQ4PMDJ;e<(f-Nb$oPY zTv(O7#WSSjy|;3_w#q$*BT<^&-|d&};VNc0P#((bdY-Xl|H21;u1qOc_XGyt4J^`F z{oV2I$G<=JtY6N4IBpTE$f>(+B!Nq|Mwpvz(7 zm5hB}A}@OUf*y5DJn^Y~(uZ)HUz{_;O|EtPvII(k{DSNAXtC7CGcBtPvM=faz94&GWzmXPF-U*%Ex9ZN+j1XRX5*I+u7IuVQET@<)b|N0VE* zVM%Ky%Y_s{_Xgd{#=3;>DZ)Gq8#h#0@*Vk?Dfo`LY-&q)oxbn3y`@4wAYQyzsCZG7BlM&dz oE8&mt9^2OF|J>X^avyN-z4(5Mb(ha&V6ZWGy85}Sb4q9e0A$3{w*UYD literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/trigger-right.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/gamepad/trigger-right.png new file mode 100644 index 0000000000000000000000000000000000000000..ca952555536047bd5728b61c4140199b22980ebd GIT binary patch literal 499 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DR}_^X2>R`_Es0UVs04etQP@OP>}pFfjUix;TbJ9DaNK z;G|{+9)8a zGxMhF1uQ)k$-UJK(@qC6$J{k;==0Wi!_aP_dT-xS&Wmpux_>-+_lNu9y9QO=y0;z% zjEh7L4^=S z8CKLz*vOx&@LDP6>Y+IdkypiER|NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0a{(5=){{8bA#AY1d0u*iYba4#vIG#Milfj@zg*AA} z>F|Y(MaupvtU;?cG_-QCUJgrSoms#dctcdDRr|%EbqTC7jN)ai+z+_I9x^QE(g?U< zSu7UEdf>;w^$R9XXqqXa9kI12WPgReu3p#Ng@b=d#Wzp$PyajBjrM literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-2.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-2.png new file mode 100644 index 0000000000000000000000000000000000000000..b82cfe17b900c3c954d03d2c7e489583d297f365 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@S>)+o$ug~9aA1^EtPvII(k{DSrU^{eFi0^jDjJa_2o=977@wzrB8& zuUUbIErEXy|J3jGw^q)+y(!7<^rNGf{s%qbUU=!jhLSXa2lpFZh&cQdVtAS)>#@{w zCEEPa4$UH5E-CX@!qs=~iQ|;49sGHZC z`t0pN#fpUQ&6)O|QL|PtTxWEc&Cg+AazH`hQp1nmtMy*4%X)qN@0wf7R_pxtVXAq; YHiPdQzr@7JpkQV2boFyt=akR{0K{;zasU7T literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-4.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-4.png new file mode 100644 index 0000000000000000000000000000000000000000..98388efefc3fa99efa8ae1781b406f2edc63e37e GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|&0G|-o z|9AmV6;NLF((NiBi@PMqFPQ&+eg1s=_451s8Qx9)nF17U@pN$v@i?9w;mTmpqr!Un ztX0|K#=a+7Dy+A5Z*1`8VAU>9X5IXNYtcsS8(iTJdSefY?O@7$!)10z^vy9wH_-`e z8IHI- literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-5.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-5.png new file mode 100644 index 0000000000000000000000000000000000000000..77edaf82fbbcf048fe9febf0fc84280d9a45dd96 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSr0$DjAl=dWLX-(J3d{(go_v3<5cxlNufjv*0;-(Ej0 z)U3e68W8QO&^Y1$|66^ReQz7+8uoF|-aXA&>d@hplE#(=rVP$XkK`4-7=JrFd3Z!F zAY!5tV?w9{LnwO)V~Xqq)&r+39vp}~aC_g!;|)7I+|Mu_GMc^IaMo{y=*FWLPF3DM z7=AixN93=B-`_TT=e-csJY9Ip#dT75Zci`HU(r!oYiIm>*{cJY3@?vOX6WM6U~-Uc uI38abT7LD`{&&t&((?}dpDFX>1hY-gw_{8E`EtPvII(k{DSrU4pShVElXlQR%MaEkdFlR}#2f&;w{ayM=;-Z=k#5ATVK%|!>6wr*U^-oJ&R zh~fK+PmHYxBx^2fF~_~MUBF^+d;5uehGSP4RGzOse1$EtPvII(k{DSq*$JhJwzt6Y7KYzXa{(c6p+_~~VxjmjPjv*0;-(Ej0 zbVz}R^};RjDJm!a*RN&PHZ@S|z1;dNPc!{uBezd^vKo6G?*Rsvr_LP;3GxwL7T)|P zTqmAsj0oxE@vu@bd~ku0ow>`1&!Rx^Ly&Ymm(BZV6Nbcq@+1cKTxHe;eQVoVw_G!{ z;D1w^VXX7?+W&(L4>oK_J+QVm=|=D8A14GEe}~mStdq-lemzHHN?FsS>8qH-nU>7< z=Q&}eV9Zd;Q1^e;>Rqds{VTO^%CT~(H@5sRjs3XMw literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-8.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-8.png new file mode 100644 index 0000000000000000000000000000000000000000..eb418fefacc55e4ade78b5162cf880c2942531af GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=|t=imF^m+!A%uRq^@Kf~g#{WpP97d%}YLp+WrSGY46 z^r*0&S9$->ow;27nWE;4|NX3g95gEa$!o7@*0$)6Jt)7U>F*8EKW*9_$Jag3jyYH_ zlMupqlgsY=p6X(u`AwNCI+>jh#uo@xc1Iu7-_R7kL-bGecd02HA2cg|{WrE_Wm(&> zC z-ri`FS^6i!3*>kIiQmyw^@eNTVbLea;U9W`ERv`W{4Kq5OTDpt@W1CfCx+`jVr2Lo Xv+C^wR`X_{-xxey{an^LB{Ts5cHFPs literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-9.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-9.png new file mode 100644 index 0000000000000000000000000000000000000000..a20ac2e3b85c280538576335bd5c564a4a1ee31d GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=nQ_3Qc9=g+?{zrX*zJwv+wp+`We2c9mDAs)w*E8H0j zdQ@2TgTw#2Gp|1MOi^>g|9;jQH;szF^4d4p!wckhH|;NA{dz;Rrd|8R@pTW_V-D8K zB!n>DTu~o@*S?aebpiIzu&3mvHrie_t$^H zlb#VGdw%?9pWih9{k*yVzrE8{bhkVD*wk3Y zZ};;bqCfV2KDe4;#_b;;wHTgV|GM~RQw{6uji>)NY2WCNJ($0v>E{j6KPvk)j>TQ6 pbJu!%|5);=`n~3#R=L_RFf7==q>{5crV{8^22WQ%mvv4FO#p|9z+?ab literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-a.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-a.png new file mode 100644 index 0000000000000000000000000000000000000000..d845fa44901c564f62ae11d1c2cc4491a76c6afe GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}50G|-o z|3m~aq4q`EZ&kJzu@=r_3Qih%jfgox1Z1O#KE8%DDlnH#WBR=_}i<7d`$)- zYzcf1ME5kF^Si^~?v~dud9(WijyntPF$gDfFz;~{)SPtB)#LHvZR@Yf{$J|6e}cX5 zy~EA=AD^*w)oN^MnH|BH?fAs3F=hg%fK28Gmx4u({R&GR+Z`f|;xE+hkz$N$XcjJL zIKpYvaEepH;U$x-$i_>TSahE>0!f*3+)I~o8b!oSou-!X;JTMLGmmU*K$O&i)^35- zE0;3vn6vE&ml3Cyc7o6pvkQCGt+qCV)!7`LX7yl`-0^8v688#imTkYn*qmV_mGg7H zFR#m&+U5lBX6q(dUb+42ld7(MJGD)}_Vd29&%br8J~0JWO@16c!8HaL0t}w6elF{r G5}E)E3a}Rd literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-arrows.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..6491f7492740c321d3244224ec17104fc94accf0 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|s0G|-o z{}=!$0~EX2x2h7zVlN5u3y$x9e}8{H!(Gk~_kco~o-U3d9>OjtZX>C zch8<9jN6;86d7FNAR=7em23N4*6iISYZ7GI+ZB KxvXNS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=(S`SbP9ub*GPU;cf+J;T9E>sWwNyFFbTLp+WrSGY46 z^r*0|Ka=*)o!NNubw$k=|NB}0IA~OSme;mm4=<44-L$`e_3I7Mns)66$JaezjyYH_ zldwc<1#{uMdB@f=Ok$GzC>-$N-0TTW;uRtcop;LDf6)HXm8G<->3)kyPR;igA@`<6 zGey>aEh2jkzCRJMr*DauMa>cED_1z%!#`Sxo@f+}=>M^%J@{bFn@{!+xy~hre_&si zU|YtzzeB%kqxjbQ6TN|ho BqnZE! literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-c.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-c.png new file mode 100644 index 0000000000000000000000000000000000000000..0a530ef762ae6b43804761d9191497c87c2af0e8 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSNK(*sW9l>(}y}O>1cp?dA8HFE(l3n@d5<*5$X&ILsp@Dzz*RA64f6u_3is*>pQpuS;&WjkN9!;RN-4|8m=DXooRYdHOR-{w<{ zx5R7(8uPzJiC?HZJH_P8`A42SGxj`tH{I{?0q-|gkFo4y%$fi3<45KmhG^B_mzcWG z2M5P>rWPH!)3(rL>K>u~hgaolY8lQ>%r8iBKKNJ8hA%HOfTPV)T&+M#A<{0iVJhP` xrbRp*^X*@Com+Lm?%ihV>F+B38T&p^&6AP%x=Bk(cLUJR44$rjF6*2UngAj&yo>+< literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-d.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-d.png new file mode 100644 index 0000000000000000000000000000000000000000..2436d62fc59292aab203fe9a9bf2746e8d8c7948 GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@U&*#U#ub02S-hTf6etw3H1#kI*a;H6A977@wzrB8& z?~noyTY_1_9IuzZ?bj|UzoZc>u0Q2}R^*}S2A3|)T-FnLU_IkOHHKdT4Jpk0GA47I znYB2B+!ZEkR5En&XfO+;I>;~xr7`|zw7H*mGh{tum4RmCwK-xBv~sx=ZXHaj_eyW9 zuE|eW!I0s;E}pZ&o&AiILQ(YuhA;1?>|i=zdR@cAsud(g}Rr3|a-_#u6 SMtuN!i^0>?&t;ucLK6TK7^xWm literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-down.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-down.png new file mode 100644 index 0000000000000000000000000000000000000000..71f2dd4d07e5a1e5693680e4948de4661249a7bc GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@$d8b*Pp+?U%uadKEso&wgW(^vz{)FAs)w*E8H0j zdQ@1~-%0!D&TJffO;Pi~|9;jQ2aSrq^4d4p!wdfHKPg$V`@F^f|IFb9|Epz|y`FdN zf2;P3{~c%lezJeS_3!`TWe@(=w=h{dasA`fXI-En5$dp$DWXU%{$Op#pZGak_nbuT z9DaM^w+CB7=m)Wr3~%o3={I25-L##9xj<#-?|RN9C%1ohb2@iu=>u^y*4Khu&*~2? zbNH_wbMT-1jjn_L?iaAW{(n6|%Ytv?j2(+4rbz@Ij9+r;pRe7rKii9y*GC;;W>EQD W$=>$#`);7e7(8A5T-G@yGywp%m9(q? literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-e.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-e.png new file mode 100644 index 0000000000000000000000000000000000000000..18d44a796712dc9a619e1c0b141dacf74c69c0a3 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g6_6x;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZT0j5=NH zVT_LMmmCjfSny0Mka$_SnS1vit{qKUZ@8u%7IjGs-!SFJB8lq2-8?I|%zx9Wx&KJf elhE!828OKpY_|gLJT?Hjg2B_(&t;ucLK6T42Wl+< literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-enter.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-enter.png new file mode 100644 index 0000000000000000000000000000000000000000..4cbc61d3241c29017f9f94a755242b43f134a023 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|&0G|-o z|9AmV6;NLF((NiBi@PMqFZh0azP{~YvZvhNf+ac|b_mDUTC7>Za- zm^7Kb2nLke7qBs~Iuy_T)tJTa%5;t)AwEGTH_+y{tmlDktGgFOGBI>Bh;kGtf47bJ z{P$|JD8HWEnTmo*$L*@ROt0^LV0d5W(LWo>PunG)^65L&ozR|iEtPvII(k{DSNA$B>A_Z?E6v zYgQ0o4RE=cc>Zsc=3tQDNqS9kmfnjrGiL95kOcdv&tiW_PiR zUBv!_XG(tKjD=mi2?hsD91b*GV35>dllW1&K#J2yuQQ~lE5PBlsc&*+pD@P>-J{Dg z_pryE%;{Y5dzP|7NHW8Qo)w$2B*PT0+Wrc^Id-8zYouwSA6pheqI0XFZ&~)M;Sa_{an^LB{Ts5h!M7P literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-f.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-f.png new file mode 100644 index 0000000000000000000000000000000000000000..5ea2b7eb0aeb12088cc7764383267ca092eae71b GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g6_6x;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZT0j5=NH zVT_LMmmCjfSn!CkD%<9lB~FiL3=e3HJy^7(N#hOIG@*ErWc{q^ic`N$-fQr5dPLuz dEJ1z-hVV%oMZXrF*bH<9gQu&X%Q~loCIBS!Ww`(V literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-g.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-g.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1eaac8a3b103b4889b58d915fed67ce5f924a4 GIT binary patch literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@K*PrKqpC7M3zh8d;eR~G2omMM>a=$!X977@wzrB81 zs9AxBHNeHOh2_Wp^=tdfx>_ao+z9n9vnp~?LuX$_S69Z{o?^l zIV^{sHS`Dk;E6CuILUB~;amfU8~Z=@gtyx-++q7*eUZhS!A3RG-jGM5Sj&c)=f&S+ z%z`(!GMxRO{O0DfD}@Sae^m2?XB?Y;?Sp8{+GAH5-cH%Yz2ti8=Yx$6%r)#E&U>oY zax*{sI>oZkm@UBL*bS$<>-C=Q{W>F8vsdkj@CxSTDK+b}6y_e^(z$!%!UZavxgpV> zix;z3zp7ox9L{*?STI`z&j!f{1_x^ES98A&o&Krp{^{()OW*(Zk^RxZF52={|MbI^ R4Zu)f@O1TaS?83{1OU7j#JKNS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZg`@eEaqJ^8Nc6_#fY30*aP-x;Tb-98aF%$zaf)}YlJ8d^D6gToV9Cl;_q-VoJk)?RUFU4mr{qj(uB_XDo5hYZT0j4iEa zL;Tr>n=(zbX1YKUJqGua7#y Z%wXZh(Y(&X?NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g4uTx;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZRQj8f?# z2Uj#Ph8ryUoF-oOQ?!6J6sWXay920H^P{Wbw?$==L7Db9xr6IEpPpDP_K|@>{Wtfb UVEKb?KNS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=h0``7F9=igs1-)}#EKf|RrHw1xFGd*1#Lp+WrSGY46 z^r*1v8^8PK&Rl-`nWE-~|NX2rZW>fb})dAl7gLpsDkZh#$Steaqfs>EG9NK0oDuyTxtoU}s?1Wwow-Z?ybU Qpd%SPUHx3vIVCg!06d+Tpa1{> literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-k.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-k.png new file mode 100644 index 0000000000000000000000000000000000000000..52ba37d7e7c798124767c4bf60ea36926b169edf GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=!0u6zn=enJ%h%cHSd8^S3F%DLp+WrSGY46 z^r*1ARa*FCW3 zGYArOh?HFIS`2J1cK=RXa%NF2V_nYa z`n}wVtAR6VNxJPEu4l>9|8s_406K+#2UGnUu6+XWBFXw$_R3Sg`Cm^y^}kEH@~V;? a14Dr9GP?=)1(pH*$KdJe=d#Wzp$PyDhpD>& literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-l.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-l.png new file mode 100644 index 0000000000000000000000000000000000000000..82e1dfae77511fecaf93e86d39cb1dd8a5f88733 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g9G+x;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZT0jJqxc zvMR?ivhXZvnmEsV_lDE!8?;vdm089(ij=W>cj|X-6yJJ!g4gepaWg)7>$t~l?O3Fra_Pgg&ebxsLQ04}>_n*aa+ literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-left.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-left.png new file mode 100644 index 0000000000000000000000000000000000000000..e59cd269a908041a4244d098e7befc6e9031e3c2 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@ALWBpTECfzTZB6KEs>GpY8*tu6nvShIkxLu5f2C z=uu(S_qG1FxUug+r3crK|H+K<0$g!_k8@o+DEj9A`aRNj-`#clUw>Hi&i`laFL$Z` ztbfS$%08)h|DW<5P5=LI(5(0`ztEw7LR0->t^mNS%G}50G|-o z|3m~aq4q`EZ&kJzu^1z`SSMj_xJ0c_g~MTIExi%EW<5N7sn8f<4>>d6>M@4 zU`>$Pz@oi@^{s=qf$C=Fw+vPdd$FO!z5W@}S zQxc6WD_Rz4KXkq@)k85sKbdEe5X0;H&)oL!m)>ys;NgZ=zIFfCC)HjJYtF6rv44Mi eY3+X33F7(Brp{elIh`BmO9oF@KbLh*2~7ZM>72Fz literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-n.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-n.png new file mode 100644 index 0000000000000000000000000000000000000000..41f13363f311d16affce9787e745aa6ed9a5780d GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}@0G|-o z|AYWgAyCOe`RR*+ES{1ezu@}y@8|R9-NS%G}r0G|-o z|HJ{Ha-hP1@~AC97GFt_U-0|$@%8!q^7q&G&);v);A%F{94PbC)5S5w9(hR(pA{VRPKCZ3T@F^#-1H?mjP&vDbu z=?C7`7(8&6C}rBcu08)D?{Coyj!Jr}77CK`pOYm=_qNnYMsETz(8Q| MboFyt=akR{0K6EodH?_b literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-p.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-p.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc24045e691766253c6f23e3355995ebc535820 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DRNx`^V?sujgMsU;h1m`+kPMQ@ZSda@##!977@wzrB8& z>#zb3Tf*)vTi3I{?cYXmHS2Dgxhx>!bA09F_6sh-ms9%d$aycY;~BuNnpYBqXHY&AG)^7 zlVQQnvO|Il`s|-}eGy8yr{(xda<#yRLr$OkLQd74W1sDLh8MdF{23~KH!@6R z4`EV~n{ZCPG;(v+oBrRbJ-Pg@|7VK)I3Zl?^liG!ee+2`FEDtz`njxgN@xNAw^gJz literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-q.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-q.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8a10dbcacdd0da0354493f43e05ae780ac7e71 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSNA-|PFIUw^+pUY>vde0zq?yH*te<(_)FIEF+VetZ2U zU$cS$Yd}nd?6N=quZyk7%w2e~yLQzb^`@evk_eIQlLcjem>=Nn(s*YPLC$>CIX2BK9 zN+tWHVh0;~YrW?!s_OLRX3m^aWfHn6A>sD-w^i(XOqmDsn5J#5x_0_Uy3bUb-t*Gw z5+}~TO<8y1*1pa5Gk@fY=QDf~saTrmc(F#PEtPvII(k{DS@Y!Wm=7IEHsBhK=+{_5}>&CJP?hR&4W-JeWZYs%;7hqc9x`81} z@K}sQ1DDF}e<}@0%v}tdcu&mV|7zB|RgU}Lxxc#YSNO-6_km{mGmmd>8WNxP0R6+@ M>FVdQ&MBb@0F-g4ivR!s literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-right.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-right.png new file mode 100644 index 0000000000000000000000000000000000000000..dad97765353c018072de673a8822b6991a3d4f42 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@ALWBpTECfzTZB6KEs>GpY8*tE_u2*hIkxLu5f2C z=uu(S_qG1FxUug+r3crK|H+K<0$g!_k8@o+DEj9A`aRNj-`#clUw>Hi&i`laFL$Z` ztbfS$%08)h|DW<5P5=LI(5(0`ztEw7LR0->t_z}n?A<*M$~$pAaC;E)fqgksgqIaW zV1e6%zz^*cn)bJd+)-ZeKwr`Qp0YqdJ!k6^TPCi5LS1XB7oVKR#A?4$b4Gu_h5zic zn?Bn=;JQ|SJdEes|0eAj|LvuN51MrxJtBJa{k!DJ|GPtO?e9B2<^QhyC!yUH3=9_T WEtPvII(k{DS?@>&MUMuV0^ke}BKd{CkE5L9q;=+(%Cr$B>A_Z>Jv= zYF6NJ5fyN1IPt$ew|nbiv1raOS2nrJ-t&2s)_M5OiiON|yaERlj&UnWaXe>`?OuAG zLC@$(QA5AZPo4!83{x3(_!EpBQdTklV|6&E-zIu5koSP!?GwJ!_!SB}cv}lGEV~#`BwrA38D_$JD+95ub;R?fzSubAKI9N-E{8Z@s{Y5+^Idz78j8spe z(Mk4&sZz(w=l^6%coJn1%6MgO`=^UFk)cd7?Vj6zCd^xLmOXJzm&wl>_ABpO`7~G* z-rJ-x9B1CaBT&)s;cw{lt*cjkF1zDCWT;%h&U^=NUX*{an^L HB{Ts5ps&2~ literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-space.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-space.png new file mode 100644 index 0000000000000000000000000000000000000000..aa2b684ce3c883791ed70cabf34be6ba835eef87 GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@$d8b*Pp+?U%r37J;P+tbWfnv3Qrfu5Rc=@748fM zJu0m0@1*^6XEqMLrl|Sge?M!DgGR+)dF>nQ;RXNqpNuWp{od;Tf9~*tf7LR}UeCMs zzft?e|BkbNKiNOv`uG3vvIl?bTbQh!xc>EONrW1hi2nKipKqp|0;_?8G3)chPxWl6 zF@Fv%OR#l1_{aZ-$cz6i+Bg0)M;qSwFTF0|@Bb(t*6WI5!r>yyhXf@5IBLDU|19}b h{ciJ5t6Xgu7+P+XZw{Ba{Tk?I22WQ%mvv4FO#q4Co~!@> literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-t.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-t.png new file mode 100644 index 0000000000000000000000000000000000000000..c122913f570243d24d5063438d295518ae89bf36 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g6_7x;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZT0j5=NH zL5vYS4f<}PJsPaaR{3R#)8iS#16pGb7VT)#c*8YKC|)F4KWn<;)Nhmb8a$mI(YGf{ cke`9!{T42+(j`WXKu0imy85}Sb4q9e0I5@CKL7v# literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-u.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-u.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc351c144894c6fc0562e792c6d5b3ec7ae16c7 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=h0``72|ujlWVzdwJ!J%f)%TQg8yB z9u-#oyXXG6Gp7eVQ`Fq>zn`_nO{3zYy!MM`?H&EG2jh1%{k=D<$!5)W#|`Lu22WQ%mvv4FO#pNHrF8%R literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-up.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-up.png new file mode 100644 index 0000000000000000000000000000000000000000..d94221b68d22fb333b8da2dd221fcf42f3edd8e8 GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@AKF5pPzq!zkI)aJcGlE6)r%jE1oWnAs)w*E8H0j zdQ@1~`=tGIXEvUDT~YJF|9;jQ2aSrq^4d4p!wdfH|0G$m`@F>8|IFb5|8@B;m->I+ ze^~TO{gG#NKjjNp|Nl=6{_xM2k1l)g&woeLU;7QB&42elK c3Gy>AFveE+CiW}E0sY6|>FVdQ&MBb@06NmPLjV8( literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-v.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-v.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe6d9eb872d7a53c8b7a0dab9ddb2ab2d1699b7 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}50G|-o z|3m~aq4q`EZ&kJzu@}y{P*+Y-`mfZ-`~%Wn0RLuP~x+vi(`n#@wZp^3pN>u z94{2#u(_1QeM13*djYfC0p1ekmbocb+KTY3$%o3^T(yteC z`;zMB%=A<#bgrj*Cqpvpvo{Ak51y1uFm>HU_HCC;e;o+h-r1k=$BFl z7hjvYNRS~`Q;P8dGNYEi>hQF^@;?7I1~PVdm?#BI&Tv_vdU3_S>dnkXHG5Mx9Di^! xq5a_F?~5hmxAt1R?Os{`SBU@p_8Z3f%D*Ok{d{5KbfEVcJYD@<);T3K0RTb5xD)^Y literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-w.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-w.png new file mode 100644 index 0000000000000000000000000000000000000000..c79a453712f67507c0aa63fe42ba396a70e16ecb GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}@0G|-o z|AYWgAyCOe`RR*+ES{1ezumFpAV`#F4`3-~h0X_xe7Cr^TfVz2&|C!?D7w09#P}tY)iUi&o>$J`-%Bf6l_a4+Ps_9Yerp@`ZuqgA~Gxsraud0 z2}oW(#o6&tlb8O}JfV#XSg!F;Zpar*u4G;+kkxi$_kt%(A11yEUN)K2;d+6CCriNI z_f9GepLm%v#ec055h;vRoDl5tfLYR&#dJb|%Ytl|(BMV9CA|xBybRQ}^n6?do~bE) zFrFM2zn5>rgZ=Tk5uYC;INr`&TFV_5Jo6hWZ9g9QjeZ)|CJQ Og2B_(&t;ucLK6U=`LGxO literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-x.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-x.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf7e5d676ba0ed34b73c469b6d5c9aba06aceee GIT binary patch literal 429 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@K*XPUMx7Xi){(XEu|9pnq^Up{#Ffej@x;TbJ9DY0f zu2i!EN1OK65B-(@!*^fOtzM>GV14V!38VWwKMu6rZZ|7Au%2~Fo3oLZk5AF+;*niXr*^(x`mp`u$7eex8*xmrX^8o;KzHJYHBl3d z0+(oBoO7xoNKdoj$+1=3o(xat7sqX72-5mlB^Ai9vb3S@a+x0EZix+At=8}=XX}O6`p^UF8Xk-VaGjjs|FT^dsP|?ee4CS4xbo4{dSMN7AgAr_}|J! jy7Qm?JAZ{yzl{Bp`BzzC1BL6r0AuiU^>bP0l+XkKFon-g literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-y.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-y.png new file mode 100644 index 0000000000000000000000000000000000000000..e8469b0277ef58d3f6cb746d8536b9de05572499 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=yB z9u-#qn^yl8H}5l3B`YP`mZJXQ=mbb_k z9$}SA4>{;@uF696OY-#pjNt}AC(JKk{Rnh|>OPHQaaaDiYQ2?zo_wl)vvlQEB{>F$ YvMI})FQ~qV0s4-?)78&qol`;+04;vDe*gdg literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-z.png b/packages/create-narrat/template-games/empty/public/img/ui/button-prompts/keyboard/key-z.png new file mode 100644 index 0000000000000000000000000000000000000000..575a424bf5a8306302af38199e0e6ede793f67ef GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DR}}=lkoQm$!dEzkdIE{(gq4y{lFM<+ggdIEF+VetUhl z*kJ_@wuH%Q_Y9_eufH|Vs)QrxU|QCXaK8IZj*sWrACvr$-w@Buz{eC2cAwp-YjU-N ztE(0((<&j32_+6n2Np4lF)c7+yTfczzpb3bPIK*_8EoGk$KHLUBM|*xaQXRz*Sdax zaV&bXZ4%?m`0Gjyk_{3M*c4cAFnTbSF*qHl-LKc?Aa`f_HvTtp1`Ui3*ZEmiSS=7b w@S36iZ*ch6FyFt=>ohif6M8fMWJ7S=nhoEa&v2JL0(yYK)78&qol`;+0Kqn(?f?J) literal 0 HcmV?d00001 diff --git a/packages/create-narrat/template-games/empty/src/config/common.yaml b/packages/create-narrat/template-games/empty/src/config/common.yaml index 2751716a..6f7b4956 100644 --- a/packages/create-narrat/template-games/empty/src/config/common.yaml +++ b/packages/create-narrat/template-games/empty/src/config/common.yaml @@ -15,6 +15,10 @@ dialogPanel: historyLength: 200 # The number of dialogue lines to keep in the history hideDuringTransition: true # Setting this to true will make the dialog panel hide during screen transitions showAfterScriptEnd: false # Setting this to true will make the dialog panel stay on even if the narrat script ends +input: + showPromptsOnGamepad: true + showPromptsOnKeyboard: true + showBottomLegend: true graphics: allowFullscreen: true layout: diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad-down.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad-down.png new file mode 100644 index 0000000000000000000000000000000000000000..1f40c869b7f60b72bef6a12b4a6bb23c91664930 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFPOhS{=WVD`uz-z>%<#@f>S+R978;gC%;f&kZ@bT^!3zC z2ZOyF)0?)<44Ba9?5OSI$il}u*Vxt}a1rCSjC=*J(Haz@Uv5SZ`2VshBN{Kyahd=C literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad-left.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad-left.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac6de86118ca05ced65d03133fbca7e00523584 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFPPuH|9<@Y`uz;4E4S(a1-m_6978;gC%;f&kZ@bT^!?OK z2ZOyV)0?)<44Ba9?5OSI$il}u*I3mde#CM)zwej~4Id+|AT`agJ#NmxV(J vvmfi(4H26Zwi~>^&~n0G>g81>GX{pwI|3ti_3C{EI*Y;6)z4*}Q$iB}kfU!Q literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad-right.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad-right.png new file mode 100644 index 0000000000000000000000000000000000000000..cbd8e5f2b9959c9b4e904863adf006d28bd0affb GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFPPuH|9<@Y`uz;4E4S(a1$#VQ978;gC%;f&kZ@bT^!?OK z2ZOyV)0?)<44Ba9?5OSI$il}u*I3mde#5^&4f#IypYyphy w9a#rfE|3)S7JDN0Om>#QPfz8&QAgMqM2-i&ZMq~c4|ErUr>mdKI;Vst07)coK>z>% literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad-up.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad-up.png new file mode 100644 index 0000000000000000000000000000000000000000..3879cce8e0977cbecf52057c4ec36af391e089c9 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFWA1H|9<@Y`uz-|6`m`Bf>S(Q978;gC%;f&kZ@bT^!?OK z2ZOyV)0?)<44Ba9?5OSI$il}u*MQa7O_XOw)3i@BBOG?J$2dOoS(6|YxO4F?c~|KmupCTnA5&xuo%~Kv9K7y9IYMah_3O4{fma z?bBK?jfq#_YD=)AvCcG|6S`-tRTMu7yH{=P;ALP~uqa5o_Ee=j(0vS^u6{1-oD!M< DQ0Hv( literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/dpad.png new file mode 100644 index 0000000000000000000000000000000000000000..88fad8f9a4f16035ebf1bb129184bff034dfa829 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}H0G|-o z|2P0p9w_s)cG+Vfi?bxiFZg{w|NVIT`uz;*+8a56f)hPm978;gC%;f&kZ@bT^!?OK z2ZOyV)0?)<44Ba9?8xlH$j-+)*I3yhek{o5ExwIvPK~PHPR#PDDKSq9S1_El znJu7^tt0Eu$_0{Q-eOP0p2^}H BZ}R{E literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/facebutton-down.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/facebutton-down.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa572a6db94b8501f7b2d3e2fe96141f1c4f14a GIT binary patch literal 673 zcmV;S0$%-zP)FwgYn*8i5P(fNM&Ii@pI6vBfQ%n)zjJd8lw%FBru@RF_d{B= z@&KNzQaf^;JqwU3XlCx8LA4Yp0eXNucX;Lyo&iV<>@-+r1)aEzy`K98P)(1#UgcWE zrXy3cwE&i1c^o{hZ2*>Zg_vB+y{7Z&S}hGgJy}tx6hmVjOjOYVL*cS8G=?gx3m~m? z428}yH0C)DfT2*oUkFO$96+Wp{VW(7rvM6tXM<20rvTQ^-I6Vh96+RDVyy|0CKrcg z1gt7BETblkM8s()jieg@iCfuIVe`0^<>)f4b=p8^WG_>m6=+So`x5mRdQdjng|%Km zeFE-5K`+&g-?vcHh~GYec;9CpRlH8%FfiT^I5~l<(-*dnxNUdR7W>kA$={u{4aJ$0 zXVJ)(>d0#`2(o7|ib1hGX{HuMFw)tzIC5mN;LZ}h%_B_Myy8(cfv~#x)d`z-8BHa_ zSr8YbdSEnjPa4kZn()AEi;ZsI#8bNu`pUy-`2J`50(8d@13c;-*J-4{00000NkvXX Hu0mjf1Q;S0 literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/facebutton-left.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/facebutton-left.png new file mode 100644 index 0000000000000000000000000000000000000000..ea7c9c6457796cfc75d7170e4331678baef14adf GIT binary patch literal 696 zcmV;p0!RIcP)j0nX0H5mspX&ge?*O0b0H5jrpX&gg>j0VV0G;mu zp6mdh>i_@%0H5n8KjVV{000nlQchD(Z;#)9uOFY!zdsKzU+(}wKEfUV00IYxm+UKUdUVwjUNHxd1d>mv8o~(eg? zPHTV*AuJ?)5ncKbN;rhlRe)e7FEy9;xtyIa_93md3IIPQLMlmzu<1NS`i7Sg;2BeC zF5H~!fGfqMD?r$0Yt3D&(5D4Hg@7vmzvrv^un0)WQAqzCz;_H-1!On2QoIE?P>y|z z$3-ar0z}sjW0ulU%cv7ZSqSOO&BSCO>$4D&tN;v4`AG&}r9xCKn?;fTX#LzeH2 zgn4-M3u9ht2(m!9ln``b%)19o%FGoIYZ!eoXhuz{)~Kt@i(#Aa@;E1N$9*qvJCyXl e|CxS(;ra(dTZiG literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/facebutton-right.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/facebutton-right.png new file mode 100644 index 0000000000000000000000000000000000000000..2e0e5a5a4a232cfec81eafe45f9f419ae9f441f2 GIT binary patch literal 644 zcmV-~0(UFAqOozwZDnWp?iX00H1hL_t(o z!|j*ZdW0YhMx!jUs_*}_1!`v!c00Z5CzlQ!Le_ua_;A4k_}>8OR)4M4$-4l#@{=sS z${PUf&&u+85@5FLfB>5ohzq!x8Gzg4Ugff{Dt_JF7$DMBw!F$F!^8-{>i4{DV|{>& z4%e-a=@=T<1H|*nw6n&jfwf0OJBW=Kum=0=DEDpHwAKN# z7Nv54{1LJO2p;f94RGe6@z@J*0H+bAl}H>PvW1rb z9qu`r0P5WkN?ib!P(nH2dUGshj(-bfwG;sSkphy}PW&6b43KAR10ZvNMg9hKz|;XI zW+=%JgMb)t%sTP757^CzfGo#<@q}dv*h!6HCxXvSkSOV9!lPxoi$s%q0ml60ISJ@hyn(rQ~8;uO7{V6mTr9B(dG;E zZT-RaGu*b;Xxsav^)>!lqir~xYvUP;vBf*%H3`=@- e|Ct^@cYOitN9yfLyvry60000L_3U literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/facebutton-top.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/facebutton-top.png new file mode 100644 index 0000000000000000000000000000000000000000..6acc03b2b2eed17152f5340a8b109708e814728c GIT binary patch literal 661 zcmV;G0&4wi>Uj0j*8AL~P%>hNl^Xok$KzWcwcn`vCqoK*eRf#uC+AfLg?X zhFH`KKv<8?Si>a1>T84Kz6>reptduBxaGAjR!&;XK~x;m<(tPAJugwN8oVhsRJ-l|QywC8@LZ)l8xlktt_ z($13;YB8-1AT6_dhtS!-TX3cjP%DOi19<&p5^%-uX!FY~;0&hOe-GG?;dBGo&>f=z z3W#nTMgq_cqp5^M0T{e!AW!I7fCiaobeTv%_cG;KJ_q2?7D_034xsx91!pP(fO8*1 znQEO$s(2m4$ud6gk2v`<{BCq%`z~&JRN6MWwBF@!RN5YkbFVzJrfdnKyp{$*QVoVV zr~(~2Eeh+DPO`<3Pfb=FwS;H$7$@4i(xaLR5lVIw6K&qzXbS1CfLJfZi$*hR()C(h v=U+72T-Vz*f7|XybNk^;{CqQg0Oa@ry{zhnLRVpy00000NkvXXu0mjf6pAFX literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/shoulder-left.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/shoulder-left.png new file mode 100644 index 0000000000000000000000000000000000000000..17f6fb0af68666eae90c08ecd1baaa9f8580027a GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSlA_5JU!KOfKk-o9Uc{(gq1lhsp!a>qPf977@wzrA)- zs9AxBHNadT^3w1B@wcb16WW%xZ0^e^cB?EEyh?U)7;7$QV5;ZYVJaZVrDznqhS5+q zBTbJbMw}J`5ngojjf>W zgk-`j2eV_=3EBt#o?Xe5!O+gKBXug13TxR#shWC0dH4C-AG9`XHcH5R!|Jd@x}N_+ zgl(#W1hW$x&$c5oz90E;ktOc-FNbj7KgX}m-dFVatGp*8t4Kl-Yk|<`U~wU58K93C NJYD@<);T3K0RRCeppF0l literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/shoulder-right.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/shoulder-right.png new file mode 100644 index 0000000000000000000000000000000000000000..db42583f653539031e2bdcefaf9e3ee9e7003894 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSlS>*Me9>z{w$zh2&c{(go_Y%gVja-Th2977@wzrA*o zuSJ1}H6TVHMf30f^>cUdG10wFD2 zZvsy$U25Q)?7Dw-|;Eook_`0p!XR(UHx3v IIVCg!07VD4TmS$7 literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/special-left.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/special-left.png new file mode 100644 index 0000000000000000000000000000000000000000..35d8f4e3753aa5ae5cef33481d3f1132bf030ad9 GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@S`|sD!mp{LrUw^;-`*?;9ZmsJK42%~&T^vIq4!@m# zJMXXpPutxBwU#e`=a(J0bd2wrK|F^WN<6USrWlhMKOz%X@cSu58a|G^+pn_taTCj~N>1`tV3d&$ux);&Y{KkezTus5L+#P+1x!aI zwQPeJFNt?aJqYIdZh2r{&`a$D%C-w59je0mxf;Y@D__}Q>|idO#`tj0d*KOuJGB>t z^7B}QY?m7VQo%CI3bWW@wG(Vq_dQUUWfY-Z@T z;{QFvjp3W&)6f~r4BuR(y5=%R>|1!j@9Ihy-&y7p{I;HBcwx8TtWnrxvDsC&7Z31@ zSxe=tf0!1%IQMn`weLT&d$&C-cy`Pmam7Io(pYJ&ZpD0i{!m63aaW-ah+vHtpcLZ)HtUs=MXX@|3 ly^jsF>gtVa8DoDlo;mjV?HaG!6M+%W;OXk;vd$@?2>@E%E7t%3 literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/special-right.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/special-right.png new file mode 100644 index 0000000000000000000000000000000000000000..2fab006b6caed66857d276844d1e58355ba6fd21 GIT binary patch literal 591 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@S`|r=Mmp{LrUw^-S{CkFD2Dc0t7#LT3x;TbJ9DY0f z_N2oK9Br94()^YGm&cZF)^%&Py1m+OXUUhz42R@9{+s+@vXfT$yKVlq%AH&jq^-4* zXU8zy`1|5Uo;su3e0G){NeX@o%#0c2KgB)OU#+#C&7Q5JXlnNQqN9d}OdtN)>fg8E z{b2dvn_jBf@?*gbHE}b4uQFVv7{V~ShG)_$>zU;@tR0@Qdxz)kTl`6odE1lu(pUF+ z&)#O|@NLtTsB@d&Fa@z)J@Y#_RBvI?gZIpR>lXG;kag%fAeYWics#IzQR0*VugBFx zQ4PMDJ;e<(f-Nb$oPY zTv(O7#WSSjy|;3_w#q$*BT<^&-|d&};VNc0P#((bdY-Xl|H21;u1qOc_XGyt4J^`F z{oV2I$G<=JtY6N4IBpTE$f>(+B!Nq|Mwpvz(7 zm5hB}A}@OUf*y5DJn^Y~(uZ)HUz{_;O|EtPvII(k{DSNAXtC7CGcBtPvM=faz94&GWzmXPF-U*%Ex9ZN+j1XRX5*I+u7IuVQET@<)b|N0VE* zVM%Ky%Y_s{_Xgd{#=3;>DZ)Gq8#h#0@*Vk?Dfo`LY-&q)oxbn3y`@4wAYQyzsCZG7BlM&dz oE8&mt9^2OF|J>X^avyN-z4(5Mb(ha&V6ZWGy85}Sb4q9e0A$3{w*UYD literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/trigger-right.png b/packages/narrat/examples/assets/img/ui/button-prompts/gamepad/trigger-right.png new file mode 100644 index 0000000000000000000000000000000000000000..ca952555536047bd5728b61c4140199b22980ebd GIT binary patch literal 499 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DR}_^X2>R`_Es0UVs04etQP@OP>}pFfjUix;TbJ9DaNK z;G|{+9)8a zGxMhF1uQ)k$-UJK(@qC6$J{k;==0Wi!_aP_dT-xS&Wmpux_>-+_lNu9y9QO=y0;z% zjEh7L4^=S z8CKLz*vOx&@LDP6>Y+IdkypiER|NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0a{(5=){{8bA#AY1d0u*iYba4#vIG#Milfj@zg*AA} z>F|Y(MaupvtU;?cG_-QCUJgrSoms#dctcdDRr|%EbqTC7jN)ai+z+_I9x^QE(g?U< zSu7UEdf>;w^$R9XXqqXa9kI12WPgReu3p#Ng@b=d#Wzp$PyajBjrM literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-2.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-2.png new file mode 100644 index 0000000000000000000000000000000000000000..b82cfe17b900c3c954d03d2c7e489583d297f365 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@S>)+o$ug~9aA1^EtPvII(k{DSrU^{eFi0^jDjJa_2o=977@wzrB8& zuUUbIErEXy|J3jGw^q)+y(!7<^rNGf{s%qbUU=!jhLSXa2lpFZh&cQdVtAS)>#@{w zCEEPa4$UH5E-CX@!qs=~iQ|;49sGHZC z`t0pN#fpUQ&6)O|QL|PtTxWEc&Cg+AazH`hQp1nmtMy*4%X)qN@0wf7R_pxtVXAq; YHiPdQzr@7JpkQV2boFyt=akR{0K{;zasU7T literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-4.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-4.png new file mode 100644 index 0000000000000000000000000000000000000000..98388efefc3fa99efa8ae1781b406f2edc63e37e GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|&0G|-o z|9AmV6;NLF((NiBi@PMqFPQ&+eg1s=_451s8Qx9)nF17U@pN$v@i?9w;mTmpqr!Un ztX0|K#=a+7Dy+A5Z*1`8VAU>9X5IXNYtcsS8(iTJdSefY?O@7$!)10z^vy9wH_-`e z8IHI- literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-5.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-5.png new file mode 100644 index 0000000000000000000000000000000000000000..77edaf82fbbcf048fe9febf0fc84280d9a45dd96 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSr0$DjAl=dWLX-(J3d{(go_v3<5cxlNufjv*0;-(Ej0 z)U3e68W8QO&^Y1$|66^ReQz7+8uoF|-aXA&>d@hplE#(=rVP$XkK`4-7=JrFd3Z!F zAY!5tV?w9{LnwO)V~Xqq)&r+39vp}~aC_g!;|)7I+|Mu_GMc^IaMo{y=*FWLPF3DM z7=AixN93=B-`_TT=e-csJY9Ip#dT75Zci`HU(r!oYiIm>*{cJY3@?vOX6WM6U~-Uc uI38abT7LD`{&&t&((?}dpDFX>1hY-gw_{8E`EtPvII(k{DSrU4pShVElXlQR%MaEkdFlR}#2f&;w{ayM=;-Z=k#5ATVK%|!>6wr*U^-oJ&R zh~fK+PmHYxBx^2fF~_~MUBF^+d;5uehGSP4RGzOse1$EtPvII(k{DSq*$JhJwzt6Y7KYzXa{(c6p+_~~VxjmjPjv*0;-(Ej0 zbVz}R^};RjDJm!a*RN&PHZ@S|z1;dNPc!{uBezd^vKo6G?*Rsvr_LP;3GxwL7T)|P zTqmAsj0oxE@vu@bd~ku0ow>`1&!Rx^Ly&Ymm(BZV6Nbcq@+1cKTxHe;eQVoVw_G!{ z;D1w^VXX7?+W&(L4>oK_J+QVm=|=D8A14GEe}~mStdq-lemzHHN?FsS>8qH-nU>7< z=Q&}eV9Zd;Q1^e;>Rqds{VTO^%CT~(H@5sRjs3XMw literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-8.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-8.png new file mode 100644 index 0000000000000000000000000000000000000000..eb418fefacc55e4ade78b5162cf880c2942531af GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=|t=imF^m+!A%uRq^@Kf~g#{WpP97d%}YLp+WrSGY46 z^r*0&S9$->ow;27nWE;4|NX3g95gEa$!o7@*0$)6Jt)7U>F*8EKW*9_$Jag3jyYH_ zlMupqlgsY=p6X(u`AwNCI+>jh#uo@xc1Iu7-_R7kL-bGecd02HA2cg|{WrE_Wm(&> zC z-ri`FS^6i!3*>kIiQmyw^@eNTVbLea;U9W`ERv`W{4Kq5OTDpt@W1CfCx+`jVr2Lo Xv+C^wR`X_{-xxey{an^LB{Ts5cHFPs literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-9.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-9.png new file mode 100644 index 0000000000000000000000000000000000000000..a20ac2e3b85c280538576335bd5c564a4a1ee31d GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=nQ_3Qc9=g+?{zrX*zJwv+wp+`We2c9mDAs)w*E8H0j zdQ@2TgTw#2Gp|1MOi^>g|9;jQH;szF^4d4p!wckhH|;NA{dz;Rrd|8R@pTW_V-D8K zB!n>DTu~o@*S?aebpiIzu&3mvHrie_t$^H zlb#VGdw%?9pWih9{k*yVzrE8{bhkVD*wk3Y zZ};;bqCfV2KDe4;#_b;;wHTgV|GM~RQw{6uji>)NY2WCNJ($0v>E{j6KPvk)j>TQ6 pbJu!%|5);=`n~3#R=L_RFf7==q>{5crV{8^22WQ%mvv4FO#p|9z+?ab literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-a.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-a.png new file mode 100644 index 0000000000000000000000000000000000000000..d845fa44901c564f62ae11d1c2cc4491a76c6afe GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}50G|-o z|3m~aq4q`EZ&kJzu@=r_3Qih%jfgox1Z1O#KE8%DDlnH#WBR=_}i<7d`$)- zYzcf1ME5kF^Si^~?v~dud9(WijyntPF$gDfFz;~{)SPtB)#LHvZR@Yf{$J|6e}cX5 zy~EA=AD^*w)oN^MnH|BH?fAs3F=hg%fK28Gmx4u({R&GR+Z`f|;xE+hkz$N$XcjJL zIKpYvaEepH;U$x-$i_>TSahE>0!f*3+)I~o8b!oSou-!X;JTMLGmmU*K$O&i)^35- zE0;3vn6vE&ml3Cyc7o6pvkQCGt+qCV)!7`LX7yl`-0^8v688#imTkYn*qmV_mGg7H zFR#m&+U5lBX6q(dUb+42ld7(MJGD)}_Vd29&%br8J~0JWO@16c!8HaL0t}w6elF{r G5}E)E3a}Rd literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-arrows.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..6491f7492740c321d3244224ec17104fc94accf0 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|s0G|-o z{}=!$0~EX2x2h7zVlN5u3y$x9e}8{H!(Gk~_kco~o-U3d9>OjtZX>C zch8<9jN6;86d7FNAR=7em23N4*6iISYZ7GI+ZB KxvXNS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=(S`SbP9ub*GPU;cf+J;T9E>sWwNyFFbTLp+WrSGY46 z^r*0|Ka=*)o!NNubw$k=|NB}0IA~OSme;mm4=<44-L$`e_3I7Mns)66$JaezjyYH_ zldwc<1#{uMdB@f=Ok$GzC>-$N-0TTW;uRtcop;LDf6)HXm8G<->3)kyPR;igA@`<6 zGey>aEh2jkzCRJMr*DauMa>cED_1z%!#`Sxo@f+}=>M^%J@{bFn@{!+xy~hre_&si zU|YtzzeB%kqxjbQ6TN|ho BqnZE! literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-c.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-c.png new file mode 100644 index 0000000000000000000000000000000000000000..0a530ef762ae6b43804761d9191497c87c2af0e8 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSNK(*sW9l>(}y}O>1cp?dA8HFE(l3n@d5<*5$X&ILsp@Dzz*RA64f6u_3is*>pQpuS;&WjkN9!;RN-4|8m=DXooRYdHOR-{w<{ zx5R7(8uPzJiC?HZJH_P8`A42SGxj`tH{I{?0q-|gkFo4y%$fi3<45KmhG^B_mzcWG z2M5P>rWPH!)3(rL>K>u~hgaolY8lQ>%r8iBKKNJ8hA%HOfTPV)T&+M#A<{0iVJhP` xrbRp*^X*@Com+Lm?%ihV>F+B38T&p^&6AP%x=Bk(cLUJR44$rjF6*2UngAj&yo>+< literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-d.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-d.png new file mode 100644 index 0000000000000000000000000000000000000000..2436d62fc59292aab203fe9a9bf2746e8d8c7948 GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@U&*#U#ub02S-hTf6etw3H1#kI*a;H6A977@wzrB8& z?~noyTY_1_9IuzZ?bj|UzoZc>u0Q2}R^*}S2A3|)T-FnLU_IkOHHKdT4Jpk0GA47I znYB2B+!ZEkR5En&XfO+;I>;~xr7`|zw7H*mGh{tum4RmCwK-xBv~sx=ZXHaj_eyW9 zuE|eW!I0s;E}pZ&o&AiILQ(YuhA;1?>|i=zdR@cAsud(g}Rr3|a-_#u6 SMtuN!i^0>?&t;ucLK6TK7^xWm literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-down.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-down.png new file mode 100644 index 0000000000000000000000000000000000000000..71f2dd4d07e5a1e5693680e4948de4661249a7bc GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@$d8b*Pp+?U%uadKEso&wgW(^vz{)FAs)w*E8H0j zdQ@1~-%0!D&TJffO;Pi~|9;jQ2aSrq^4d4p!wdfHKPg$V`@F^f|IFb9|Epz|y`FdN zf2;P3{~c%lezJeS_3!`TWe@(=w=h{dasA`fXI-En5$dp$DWXU%{$Op#pZGak_nbuT z9DaM^w+CB7=m)Wr3~%o3={I25-L##9xj<#-?|RN9C%1ohb2@iu=>u^y*4Khu&*~2? zbNH_wbMT-1jjn_L?iaAW{(n6|%Ytv?j2(+4rbz@Ij9+r;pRe7rKii9y*GC;;W>EQD W$=>$#`);7e7(8A5T-G@yGywp%m9(q? literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-e.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-e.png new file mode 100644 index 0000000000000000000000000000000000000000..18d44a796712dc9a619e1c0b141dacf74c69c0a3 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g6_6x;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZT0j5=NH zVT_LMmmCjfSny0Mka$_SnS1vit{qKUZ@8u%7IjGs-!SFJB8lq2-8?I|%zx9Wx&KJf elhE!828OKpY_|gLJT?Hjg2B_(&t;ucLK6T42Wl+< literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-enter.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-enter.png new file mode 100644 index 0000000000000000000000000000000000000000..4cbc61d3241c29017f9f94a755242b43f134a023 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|&0G|-o z|9AmV6;NLF((NiBi@PMqFZh0azP{~YvZvhNf+ac|b_mDUTC7>Za- zm^7Kb2nLke7qBs~Iuy_T)tJTa%5;t)AwEGTH_+y{tmlDktGgFOGBI>Bh;kGtf47bJ z{P$|JD8HWEnTmo*$L*@ROt0^LV0d5W(LWo>PunG)^65L&ozR|iEtPvII(k{DSNA$B>A_Z?E6v zYgQ0o4RE=cc>Zsc=3tQDNqS9kmfnjrGiL95kOcdv&tiW_PiR zUBv!_XG(tKjD=mi2?hsD91b*GV35>dllW1&K#J2yuQQ~lE5PBlsc&*+pD@P>-J{Dg z_pryE%;{Y5dzP|7NHW8Qo)w$2B*PT0+Wrc^Id-8zYouwSA6pheqI0XFZ&~)M;Sa_{an^LB{Ts5h!M7P literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-f.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-f.png new file mode 100644 index 0000000000000000000000000000000000000000..5ea2b7eb0aeb12088cc7764383267ca092eae71b GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g6_6x;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZT0j5=NH zVT_LMmmCjfSn!CkD%<9lB~FiL3=e3HJy^7(N#hOIG@*ErWc{q^ic`N$-fQr5dPLuz dEJ1z-hVV%oMZXrF*bH<9gQu&X%Q~loCIBS!Ww`(V literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-g.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-g.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1eaac8a3b103b4889b58d915fed67ce5f924a4 GIT binary patch literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@K*PrKqpC7M3zh8d;eR~G2omMM>a=$!X977@wzrB81 zs9AxBHNeHOh2_Wp^=tdfx>_ao+z9n9vnp~?LuX$_S69Z{o?^l zIV^{sHS`Dk;E6CuILUB~;amfU8~Z=@gtyx-++q7*eUZhS!A3RG-jGM5Sj&c)=f&S+ z%z`(!GMxRO{O0DfD}@Sae^m2?XB?Y;?Sp8{+GAH5-cH%Yz2ti8=Yx$6%r)#E&U>oY zax*{sI>oZkm@UBL*bS$<>-C=Q{W>F8vsdkj@CxSTDK+b}6y_e^(z$!%!UZavxgpV> zix;z3zp7ox9L{*?STI`z&j!f{1_x^ES98A&o&Krp{^{()OW*(Zk^RxZF52={|MbI^ R4Zu)f@O1TaS?83{1OU7j#JKNS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZg`@eEaqJ^8Nc6_#fY30*aP-x;Tb-98aF%$zaf)}YlJ8d^D6gToV9Cl;_q-VoJk)?RUFU4mr{qj(uB_XDo5hYZT0j4iEa zL;Tr>n=(zbX1YKUJqGua7#y Z%wXZh(Y(&X?NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g4uTx;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZRQj8f?# z2Uj#Ph8ryUoF-oOQ?!6J6sWXay920H^P{Wbw?$==L7Db9xr6IEpPpDP_K|@>{Wtfb UVEKb?KNS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=h0``7F9=igs1-)}#EKf|RrHw1xFGd*1#Lp+WrSGY46 z^r*1v8^8PK&Rl-`nWE-~|NX2rZW>fb})dAl7gLpsDkZh#$Steaqfs>EG9NK0oDuyTxtoU}s?1Wwow-Z?ybU Qpd%SPUHx3vIVCg!06d+Tpa1{> literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-k.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-k.png new file mode 100644 index 0000000000000000000000000000000000000000..52ba37d7e7c798124767c4bf60ea36926b169edf GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=!0u6zn=enJ%h%cHSd8^S3F%DLp+WrSGY46 z^r*1ARa*FCW3 zGYArOh?HFIS`2J1cK=RXa%NF2V_nYa z`n}wVtAR6VNxJPEu4l>9|8s_406K+#2UGnUu6+XWBFXw$_R3Sg`Cm^y^}kEH@~V;? a14Dr9GP?=)1(pH*$KdJe=d#Wzp$PyDhpD>& literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-l.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-l.png new file mode 100644 index 0000000000000000000000000000000000000000..82e1dfae77511fecaf93e86d39cb1dd8a5f88733 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g9G+x;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZT0jJqxc zvMR?ivhXZvnmEsV_lDE!8?;vdm089(ij=W>cj|X-6yJJ!g4gepaWg)7>$t~l?O3Fra_Pgg&ebxsLQ04}>_n*aa+ literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-left.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-left.png new file mode 100644 index 0000000000000000000000000000000000000000..e59cd269a908041a4244d098e7befc6e9031e3c2 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@ALWBpTECfzTZB6KEs>GpY8*tu6nvShIkxLu5f2C z=uu(S_qG1FxUug+r3crK|H+K<0$g!_k8@o+DEj9A`aRNj-`#clUw>Hi&i`laFL$Z` ztbfS$%08)h|DW<5P5=LI(5(0`ztEw7LR0->t^mNS%G}50G|-o z|3m~aq4q`EZ&kJzu^1z`SSMj_xJ0c_g~MTIExi%EW<5N7sn8f<4>>d6>M@4 zU`>$Pz@oi@^{s=qf$C=Fw+vPdd$FO!z5W@}S zQxc6WD_Rz4KXkq@)k85sKbdEe5X0;H&)oL!m)>ys;NgZ=zIFfCC)HjJYtF6rv44Mi eY3+X33F7(Brp{elIh`BmO9oF@KbLh*2~7ZM>72Fz literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-n.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-n.png new file mode 100644 index 0000000000000000000000000000000000000000..41f13363f311d16affce9787e745aa6ed9a5780d GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}@0G|-o z|AYWgAyCOe`RR*+ES{1ezu@}y@8|R9-NS%G}r0G|-o z|HJ{Ha-hP1@~AC97GFt_U-0|$@%8!q^7q&G&);v);A%F{94PbC)5S5w9(hR(pA{VRPKCZ3T@F^#-1H?mjP&vDbu z=?C7`7(8&6C}rBcu08)D?{Coyj!Jr}77CK`pOYm=_qNnYMsETz(8Q| MboFyt=akR{0K6EodH?_b literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-p.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-p.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc24045e691766253c6f23e3355995ebc535820 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DRNx`^V?sujgMsU;h1m`+kPMQ@ZSda@##!977@wzrB8& z>#zb3Tf*)vTi3I{?cYXmHS2Dgxhx>!bA09F_6sh-ms9%d$aycY;~BuNnpYBqXHY&AG)^7 zlVQQnvO|Il`s|-}eGy8yr{(xda<#yRLr$OkLQd74W1sDLh8MdF{23~KH!@6R z4`EV~n{ZCPG;(v+oBrRbJ-Pg@|7VK)I3Zl?^liG!ee+2`FEDtz`njxgN@xNAw^gJz literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-q.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-q.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8a10dbcacdd0da0354493f43e05ae780ac7e71 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DSNA-|PFIUw^+pUY>vde0zq?yH*te<(_)FIEF+VetZ2U zU$cS$Yd}nd?6N=quZyk7%w2e~yLQzb^`@evk_eIQlLcjem>=Nn(s*YPLC$>CIX2BK9 zN+tWHVh0;~YrW?!s_OLRX3m^aWfHn6A>sD-w^i(XOqmDsn5J#5x_0_Uy3bUb-t*Gw z5+}~TO<8y1*1pa5Gk@fY=QDf~saTrmc(F#PEtPvII(k{DS@Y!Wm=7IEHsBhK=+{_5}>&CJP?hR&4W-JeWZYs%;7hqc9x`81} z@K}sQ1DDF}e<}@0%v}tdcu&mV|7zB|RgU}Lxxc#YSNO-6_km{mGmmd>8WNxP0R6+@ M>FVdQ&MBb@0F-g4ivR!s literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-right.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-right.png new file mode 100644 index 0000000000000000000000000000000000000000..dad97765353c018072de673a8822b6991a3d4f42 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@ALWBpTECfzTZB6KEs>GpY8*tE_u2*hIkxLu5f2C z=uu(S_qG1FxUug+r3crK|H+K<0$g!_k8@o+DEj9A`aRNj-`#clUw>Hi&i`laFL$Z` ztbfS$%08)h|DW<5P5=LI(5(0`ztEw7LR0->t_z}n?A<*M$~$pAaC;E)fqgksgqIaW zV1e6%zz^*cn)bJd+)-ZeKwr`Qp0YqdJ!k6^TPCi5LS1XB7oVKR#A?4$b4Gu_h5zic zn?Bn=;JQ|SJdEes|0eAj|LvuN51MrxJtBJa{k!DJ|GPtO?e9B2<^QhyC!yUH3=9_T WEtPvII(k{DS?@>&MUMuV0^ke}BKd{CkE5L9q;=+(%Cr$B>A_Z>Jv= zYF6NJ5fyN1IPt$ew|nbiv1raOS2nrJ-t&2s)_M5OiiON|yaERlj&UnWaXe>`?OuAG zLC@$(QA5AZPo4!83{x3(_!EpBQdTklV|6&E-zIu5koSP!?GwJ!_!SB}cv}lGEV~#`BwrA38D_$JD+95ub;R?fzSubAKI9N-E{8Z@s{Y5+^Idz78j8spe z(Mk4&sZz(w=l^6%coJn1%6MgO`=^UFk)cd7?Vj6zCd^xLmOXJzm&wl>_ABpO`7~G* z-rJ-x9B1CaBT&)s;cw{lt*cjkF1zDCWT;%h&U^=NUX*{an^L HB{Ts5ps&2~ literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-space.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-space.png new file mode 100644 index 0000000000000000000000000000000000000000..aa2b684ce3c883791ed70cabf34be6ba835eef87 GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@$d8b*Pp+?U%r37J;P+tbWfnv3Qrfu5Rc=@748fM zJu0m0@1*^6XEqMLrl|Sge?M!DgGR+)dF>nQ;RXNqpNuWp{od;Tf9~*tf7LR}UeCMs zzft?e|BkbNKiNOv`uG3vvIl?bTbQh!xc>EONrW1hi2nKipKqp|0;_?8G3)chPxWl6 zF@Fv%OR#l1_{aZ-$cz6i+Bg0)M;qSwFTF0|@Bb(t*6WI5!r>yyhXf@5IBLDU|19}b h{ciJ5t6Xgu7+P+XZw{Ba{Tk?I22WQ%mvv4FO#q4Co~!@> literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-t.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-t.png new file mode 100644 index 0000000000000000000000000000000000000000..c122913f570243d24d5063438d295518ae89bf36 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}T0G|-o z|F{8A2~e_Mb?rSMi>oBaFZh0azWsXn`ThGD4zHCC0g6_7x;Tb-98aF%$zaf`%%U4mo`qj(uB_XDo5hYZT0j5=NH zL5vYS4f<}PJsPaaR{3R#)8iS#16pGb7VT)#c*8YKC|)F4KWn<;)Nhmb8a$mI(YGf{ cke`9!{T42+(j`WXKu0imy85}Sb4q9e0I5@CKL7v# literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-u.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-u.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc351c144894c6fc0562e792c6d5b3ec7ae16c7 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=h0``72|ujlWVzdwJ!J%f)%TQg8yB z9u-#oyXXG6Gp7eVQ`Fq>zn`_nO{3zYy!MM`?H&EG2jh1%{k=D<$!5)W#|`Lu22WQ%mvv4FO#pNHrF8%R literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-up.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-up.png new file mode 100644 index 0000000000000000000000000000000000000000..d94221b68d22fb333b8da2dd221fcf42f3edd8e8 GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=zr@AKF5pPzq!zkI)aJcGlE6)r%jE1oWnAs)w*E8H0j zdQ@1~`=tGIXEvUDT~YJF|9;jQ2aSrq^4d4p!wdfH|0G$m`@F>8|IFb5|8@B;m->I+ ze^~TO{gG#NKjjNp|Nl=6{_xM2k1l)g&woeLU;7QB&42elK c3Gy>AFveE+CiW}E0sY6|>FVdQ&MBb@06NmPLjV8( literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-v.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-v.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe6d9eb872d7a53c8b7a0dab9ddb2ab2d1699b7 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}50G|-o z|3m~aq4q`EZ&kJzu@}y{P*+Y-`mfZ-`~%Wn0RLuP~x+vi(`n#@wZp^3pN>u z94{2#u(_1QeM13*djYfC0p1ekmbocb+KTY3$%o3^T(yteC z`;zMB%=A<#bgrj*Cqpvpvo{Ak51y1uFm>HU_HCC;e;o+h-r1k=$BFl z7hjvYNRS~`Q;P8dGNYEi>hQF^@;?7I1~PVdm?#BI&Tv_vdU3_S>dnkXHG5Mx9Di^! xq5a_F?~5hmxAt1R?Os{`SBU@p_8Z3f%D*Ok{d{5KbfEVcJYD@<);T3K0RTb5xD)^Y literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-w.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-w.png new file mode 100644 index 0000000000000000000000000000000000000000..c79a453712f67507c0aa63fe42ba396a70e16ecb GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G}@0G|-o z|AYWgAyCOe`RR*+ES{1ezumFpAV`#F4`3-~h0X_xe7Cr^TfVz2&|C!?D7w09#P}tY)iUi&o>$J`-%Bf6l_a4+Ps_9Yerp@`ZuqgA~Gxsraud0 z2}oW(#o6&tlb8O}JfV#XSg!F;Zpar*u4G;+kkxi$_kt%(A11yEUN)K2;d+6CCriNI z_f9GepLm%v#ec055h;vRoDl5tfLYR&#dJb|%Ytl|(BMV9CA|xBybRQ}^n6?do~bE) zFrFM2zn5>rgZ=Tk5uYC;INr`&TFV_5Jo6hWZ9g9QjeZ)|CJQ Og2B_(&t;ucLK6U=`LGxO literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-x.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-x.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf7e5d676ba0ed34b73c469b6d5c9aba06aceee GIT binary patch literal 429 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DS@K*XPUMx7Xi){(XEu|9pnq^Up{#Ffej@x;TbJ9DY0f zu2i!EN1OK65B-(@!*^fOtzM>GV14V!38VWwKMu6rZZ|7Au%2~Fo3oLZk5AF+;*niXr*^(x`mp`u$7eex8*xmrX^8o;KzHJYHBl3d z0+(oBoO7xoNKdoj$+1=3o(xat7sqX72-5mlB^Ai9vb3S@a+x0EZix+At=8}=XX}O6`p^UF8Xk-VaGjjs|FT^dsP|?ee4CS4xbo4{dSMN7AgAr_}|J! jy7Qm?JAZ{yzl{Bp`BzzC1BL6r0AuiU^>bP0l+XkKFon-g literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-y.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-y.png new file mode 100644 index 0000000000000000000000000000000000000000..e8469b0277ef58d3f6cb746d8536b9de05572499 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|emUKs7M+SzC{oH>NS%G|m0G|-o z|3m|z4xrk7T$erqS^OnIe!=yB z9u-#qn^yl8H}5l3B`YP`mZJXQ=mbb_k z9$}SA4>{;@uF696OY-#pjNt}AC(JKk{Rnh|>OPHQaaaDiYQ2?zo_wl)vvlQEB{>F$ YvMI})FQ~qV0s4-?)78&qol`;+04;vDe*gdg literal 0 HcmV?d00001 diff --git a/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-z.png b/packages/narrat/examples/assets/img/ui/button-prompts/keyboard/key-z.png new file mode 100644 index 0000000000000000000000000000000000000000..575a424bf5a8306302af38199e0e6ede793f67ef GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCik#1AIbU z|C0iMnt;khw>EtPvII(k{DR}}=lkoQm$!dEzkdIE{(gq4y{lFM<+ggdIEF+VetUhl z*kJ_@wuH%Q_Y9_eufH|Vs)QrxU|QCXaK8IZj*sWrACvr$-w@Buz{eC2cAwp-YjU-N ztE(0((<&j32_+6n2Np4lF)c7+yTfczzpb3bPIK*_8EoGk$KHLUBM|*xaQXRz*Sdax zaV&bXZ4%?m`0Gjyk_{3M*c4cAFnTbSF*qHl-LKc?Aa`f_HvTtp1`Ui3*ZEmiSS=7b w@S36iZ*ch6FyFt=>ohif6M8fMWJ7S=nhoEa&v2JL0(yYK)78&qol`;+0Kqn(?f?J) literal 0 HcmV?d00001 diff --git a/packages/narrat/src/app.vue b/packages/narrat/src/app.vue index c3c0024e..1117b034 100644 --- a/packages/narrat/src/app.vue +++ b/packages/narrat/src/app.vue @@ -22,6 +22,7 @@ +
@@ -43,6 +44,7 @@ import { preloadAndSetupGame } from '@/application/application-start'; import { useScenes } from './stores/scenes-store'; import GameScene from './components/GameScene.vue'; import '@/data/all-stores'; +import InputsLegend from './components/input-prompt/inputs-legend.vue'; const props = defineProps<{ options: AppOptions; diff --git a/packages/narrat/src/components/game-dialog.vue b/packages/narrat/src/components/game-dialog.vue index 0f07605b..7efc6935 100644 --- a/packages/narrat/src/components/game-dialog.vue +++ b/packages/narrat/src/components/game-dialog.vue @@ -40,12 +40,14 @@ @click="autoPlay" > Auto +
useRenderingStore().layoutMode); const inputListener = computed(() => useInputs().inGameInputListener); diff --git a/packages/narrat/src/components/input-prompt/input-prompt.vue b/packages/narrat/src/components/input-prompt/input-prompt.vue new file mode 100644 index 00000000..6edf26af --- /dev/null +++ b/packages/narrat/src/components/input-prompt/input-prompt.vue @@ -0,0 +1,54 @@ + + + diff --git a/packages/narrat/src/components/input-prompt/inputs-legend.vue b/packages/narrat/src/components/input-prompt/inputs-legend.vue new file mode 100644 index 00000000..d301a5a0 --- /dev/null +++ b/packages/narrat/src/components/input-prompt/inputs-legend.vue @@ -0,0 +1,48 @@ + + + diff --git a/packages/narrat/src/components/menu-buttons.vue b/packages/narrat/src/components/menu-buttons.vue index d9094c51..1642287c 100644 --- a/packages/narrat/src/components/menu-buttons.vue +++ b/packages/narrat/src/components/menu-buttons.vue @@ -8,6 +8,10 @@ class="nrt-button menu-toggle-button" > {{ menuButton.label }} + (null); diff --git a/packages/narrat/src/config/common-config.ts b/packages/narrat/src/config/common-config.ts index ffd76d57..ab538bda 100644 --- a/packages/narrat/src/config/common-config.ts +++ b/packages/narrat/src/config/common-config.ts @@ -161,6 +161,13 @@ export const ScenesConfigSchema = Type.Object({ export type ScenesConfig = Static; +export const InputConfigSchema = Type.Object({ + showPromptsOnKeyboard: Type.Optional(Type.Boolean()), + showPromptsOnGamepad: Type.Optional(Type.Boolean()), + showBottomLegend: Type.Optional(Type.Boolean()), +}); +export type InputConfig = Static; + export const CommonConfigInputSchema = Type.Object({ baseAssetsPath: Type.Optional(Type.String()), baseDataPath: Type.Optional(Type.String()), @@ -184,6 +191,7 @@ export const CommonConfigInputSchema = Type.Object({ menuButtons: Type.Optional(MenuButtonsConfigSchema), debugging: Type.Optional(DebuggingConfigSchema), saves: Type.Optional(SavesConfigSchema), + input: Type.Optional(InputConfigSchema), hotkeys: HotkeysConfigSchema, scenes: Type.Optional(ScenesConfigSchema), }); @@ -213,6 +221,7 @@ export interface CommonConfig { menuButtons: MenuButtonsConfig; debugging: DebuggingConfig; saves: SavesConfig; + input: InputConfig; hotkeys: HotkeysConfig; scenes: ScenesConfig; } @@ -259,6 +268,10 @@ export const defaultCommonConfig: CommonConfig = { mode: 'manual', slots: 10, }, + input: { + showPromptsOnKeyboard: true, + showPromptsOnGamepad: true, + }, hotkeys: {}, scenes: {}, }; diff --git a/packages/narrat/src/dialog-box.vue b/packages/narrat/src/dialog-box.vue index 10447d99..6b275125 100644 --- a/packages/narrat/src/dialog-box.vue +++ b/packages/narrat/src/dialog-box.vue @@ -58,6 +58,7 @@ class="interact-button nrt-button override" > Continue +
@@ -84,6 +85,7 @@ import { InputListener, useInputs } from '@/stores/inputs-store'; import { Interval, Timeout } from '@/utils/time-helpers'; import { playLetterAudio, playDialogLineAudio } from '@/audio/audio-helpers'; import { useVM } from '@/stores/vm-store'; +import InputPrompt from './components/input-prompt/input-prompt.vue'; export interface TextAnimation { text: string; diff --git a/packages/narrat/src/examples/default/config/common.yaml b/packages/narrat/src/examples/default/config/common.yaml index 97c03391..c56a48bd 100644 --- a/packages/narrat/src/examples/default/config/common.yaml +++ b/packages/narrat/src/examples/default/config/common.yaml @@ -61,7 +61,10 @@ saves: text: saving... backgroundImage: 'img/ui/autosave_spinner_background.png' foregroundImage: 'img/ui/autosave_spinner.png' - +input: + showPromptsOnGamepad: true + showPromptsOnKeyboard: true + showBottomLegend: true notifications: timeOnScreen: 2.5 alsoPrintInDialogue: false diff --git a/packages/narrat/src/inputs/Inputs.ts b/packages/narrat/src/inputs/Inputs.ts index 887f8e61..82751c12 100644 --- a/packages/narrat/src/inputs/Inputs.ts +++ b/packages/narrat/src/inputs/Inputs.ts @@ -11,10 +11,18 @@ export type NarratGamepadButton = { state: GamepadButton; previous: GamepadButton; }; + +export interface NarratGamepadAxes { + index: number; + value: number; + previous: number; +} + export type NarratGamepad = { id: string; gamepad: Gamepad; buttons: NarratGamepadButton[]; + axes: NarratGamepadAxes[]; }; export type ButtonEvent = ( @@ -40,14 +48,21 @@ export interface AnalogKeybind { down: string; } -export interface ButtonAction { +export interface BaseAction { id: string; + type: 'button' | 'analog'; + label: string; + keyboardIcon: string; + gamepadIcon: string; + showInLegend: boolean; +} +export interface ButtonAction extends BaseAction { type: 'button'; action: 'press' | 'release'; keybinds: ButtonKeybind[]; } -export interface AnalogAction { +export interface AnalogAction extends BaseAction { id: string; type: 'analog'; keybinds: AnalogKeybind[]; @@ -191,6 +206,13 @@ export class Inputs extends EventTarget { buttons: gamepad.buttons.map((button, index) => { return this.getNarratButtonFromGamepad(button, button, index); }), + axes: gamepad.axes.map((axis, index) => { + return { + index, + value: axis, + previous: axis, + }; + }), }; return narratGamepad; } @@ -210,6 +232,14 @@ export class Inputs extends EventTarget { this.gamepadEvent(); } } + for (const [index, axis] of gamepad.axes.entries()) { + const narratAxis = narratGamepad.axes[index]; + narratAxis.previous = narratAxis.value; + narratAxis.value = axis; + if (narratAxis.previous !== narratAxis.value) { + this.gamepadEvent(); + } + } } public getNarratButtonFromGamepad( diff --git a/packages/narrat/src/menu-buttons/menu-buttons.ts b/packages/narrat/src/menu-buttons/menu-buttons.ts index e666baa5..23d6789a 100644 --- a/packages/narrat/src/menu-buttons/menu-buttons.ts +++ b/packages/narrat/src/menu-buttons/menu-buttons.ts @@ -19,6 +19,7 @@ export function registerDefaultMenuButtons(app: any) { label: 'System', cssClass: 'system-menu', id: 'system', + inputPrompt: 'system', tabs: [ { id: 'system-tab', @@ -33,6 +34,7 @@ export function registerDefaultMenuButtons(app: any) { label: 'Menu', id: 'menu', cssClass: 'menu-menu', + inputPrompt: 'menu', tabs: [ { id: 'skills', diff --git a/packages/narrat/src/stores/inputs-store.ts b/packages/narrat/src/stores/inputs-store.ts index 7eff87ec..6ce7e7ca 100644 --- a/packages/narrat/src/stores/inputs-store.ts +++ b/packages/narrat/src/stores/inputs-store.ts @@ -10,6 +10,7 @@ import { import { gameloop } from '@/utils/gameloop'; import { acceptHMRUpdate, defineStore } from 'pinia'; import { useMenu } from './menu-store'; +import { getCommonConfig } from '@/config'; export interface InputStoreEvents { press?: ButtonEvent; @@ -18,10 +19,29 @@ export interface InputStoreEvents { } const defaultActions: Action[] = [ + { + id: 'movement', + type: 'button', + label: 'Choose', + keyboardIcon: 'img/ui/button-prompts/keyboard/key-arrows.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/dpad.png', + action: 'press', + showInLegend: true, + keybinds: [ + { + keyboardKey: 'ArrowLeft', + gamepadButton: 14, + }, + ], + }, { id: 'left', type: 'button', + label: 'Left', + keyboardIcon: 'img/ui/button-prompts/keyboard/arrow-left.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/dpad-left.png', action: 'press', + showInLegend: false, keybinds: [ { keyboardKey: 'ArrowLeft', @@ -33,6 +53,10 @@ const defaultActions: Action[] = [ id: 'right', type: 'button', action: 'press', + label: 'Right', + keyboardIcon: 'img/ui/button-prompts/keyboard/arrow-right.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/dpad-right.png', + showInLegend: false, keybinds: [ { keyboardKey: 'ArrowRight', @@ -44,6 +68,10 @@ const defaultActions: Action[] = [ id: 'up', type: 'button', action: 'press', + label: 'Up', + keyboardIcon: 'img/ui/button-prompts/keyboard/arrow-up.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/dpad-up.png', + showInLegend: false, keybinds: [ { keyboardKey: 'ArrowUp', @@ -55,6 +83,10 @@ const defaultActions: Action[] = [ id: 'down', type: 'button', action: 'press', + label: 'Down', + keyboardIcon: 'img/ui/button-prompts/keyboard/arrow-down.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/dpad-down.png', + showInLegend: false, keybinds: [ { keyboardKey: 'ArrowDown', @@ -66,9 +98,13 @@ const defaultActions: Action[] = [ id: 'continue', type: 'button', action: 'press', + label: 'Continue', + keyboardIcon: 'img/ui/button-prompts/keyboard/key-space.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/facebutton-down.png', + showInLegend: true, keybinds: [ { - keyboardKey: 'Enter', + keyboardKey: 'Space', gamepadButton: 0, }, ], @@ -77,6 +113,10 @@ const defaultActions: Action[] = [ id: 'cancel', type: 'button', action: 'press', + label: 'Cancel', + keyboardIcon: 'img/ui/button-prompts/keyboard/key-escape.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/facebutton-right.png', + showInLegend: true, keybinds: [ { keyboardKey: 'Escape', @@ -88,6 +128,10 @@ const defaultActions: Action[] = [ id: 'system', type: 'button', action: 'press', + label: 'System Menu', + keyboardIcon: 'img/ui/button-prompts/keyboard/key-n.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/special-right.png', + showInLegend: false, keybinds: [ { keyboardKey: 'n', @@ -99,6 +143,10 @@ const defaultActions: Action[] = [ id: 'menu', type: 'button', action: 'press', + label: 'Game Menu', + keyboardIcon: 'img/ui/button-prompts/keyboard/key-m.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/special-left.png', + showInLegend: false, keybinds: [ { keyboardKey: 'm', @@ -110,6 +158,10 @@ const defaultActions: Action[] = [ id: 'previousTab', type: 'button', action: 'press', + label: 'Previous', + keyboardIcon: 'img/ui/button-prompts/keyboard/key-p.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/shoulder-left.png', + showInLegend: true, keybinds: [ { keyboardKey: 'p', @@ -121,6 +173,10 @@ const defaultActions: Action[] = [ id: 'nextTab', type: 'button', action: 'press', + label: 'Next', + keyboardIcon: 'img/ui/button-prompts/keyboard/key-o.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/shoulder-right.png', + showInLegend: true, keybinds: [ { keyboardKey: 'o', @@ -132,6 +188,10 @@ const defaultActions: Action[] = [ id: 'subPreviousTab', type: 'button', action: 'press', + label: 'Previous Tab', + keyboardIcon: 'img/ui/button-prompts/keyboard/key-i.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/trigger-left.png', + showInLegend: true, keybinds: [ { keyboardKey: 'i', @@ -143,6 +203,10 @@ const defaultActions: Action[] = [ id: 'subNextTab', type: 'button', action: 'press', + label: 'Next Tab', + keyboardIcon: 'img/ui/button-prompts/keyboard/key-u.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/trigger-right.png', + showInLegend: true, keybinds: [ { keyboardKey: 'u', @@ -154,6 +218,10 @@ const defaultActions: Action[] = [ id: 'viewportSelect', type: 'button', action: 'press', + label: 'Interact', + keyboardIcon: 'img/ui/button-prompts/keyboard/key-v.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/facebutton-left.png', + showInLegend: true, keybinds: [ { keyboardKey: 'v', @@ -165,6 +233,10 @@ const defaultActions: Action[] = [ id: 'autoPlay', type: 'button', action: 'press', + label: 'Toggle Autoplay', + keyboardIcon: 'img/ui/button-prompts/keyboard/key-a.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/trigger-left.png', + showInLegend: false, keybinds: [ { keyboardKey: 'a', @@ -176,6 +248,10 @@ const defaultActions: Action[] = [ id: 'skip', type: 'button', action: 'press', + label: 'Skip', + keyboardIcon: 'img/ui/button-prompts/keyboard/key-s.png', + gamepadIcon: 'img/ui/button-prompts/gamepad/trigger-right.png', + showInLegend: false, keybinds: [ { keyboardKey: 's', @@ -204,7 +280,7 @@ export const useInputs = defineStore('inputs', { ({ inputStack: [], baseInputListener: null as any, - inputMode: 'mk' as InputMode, + inputMode: 'km', isTyping: false, inGameInputListener: null, }) as InputsStoreState, @@ -279,6 +355,9 @@ export const useInputs = defineStore('inputs', { // }, // }); }, + getAction(actionId: string) { + return inputs.gameActions[actionId]; + }, triggerListeners( actionKey: string, eventType: keyof InputStoreEvents, @@ -336,6 +415,29 @@ export const useInputs = defineStore('inputs', { listener.actions[actionId] = eventsListener; }, }, + getters: { + showPrompts(state) { + return ( + (state.inputMode === 'gamepad' && + getCommonConfig().input?.showPromptsOnGamepad !== false) || + (state.inputMode === 'km' && + getCommonConfig().input?.showPromptsOnKeyboard !== false) + ); + }, + allListeners(state) { + return state.inputStack + .map((listener) => { + return Object.keys(listener.actions); + }) + .flat() + .filter((v, i, a) => a.indexOf(v) === i); + }, + inputLegend(): string[] { + return this.allListeners.filter((listener) => { + return inputs.gameActions[listener].showInLegend; + }); + }, + }, }); if (import.meta.hot) { diff --git a/packages/narrat/src/stores/menu-store.ts b/packages/narrat/src/stores/menu-store.ts index badf1534..66823a4c 100644 --- a/packages/narrat/src/stores/menu-store.ts +++ b/packages/narrat/src/stores/menu-store.ts @@ -14,12 +14,14 @@ export interface MenuTabState { cssId?: string; cssClass?: string; text: string; + inputPrompt?: string; component: string; } export interface MenuState { id: string; label: string; + inputPrompt?: string; cssId?: string; cssClass?: string; tabs: MenuTabState[];