|
feat(game): WASD-движение, кнопка действия E/A и подпись [E] Имя
Ходьба: WASD/стрелки/крестовина/аналоговый стик + тач-джойстик (приоритет) через готовый PlayerController.moveFree; при нулевом векторе — обычный update (moveFree со стопом рвал бы путь моста). Кнопка действия: interact = KeyE / геймпад A — ближайшая цель в радиусе 1.5 юнита (NPC → click-переход/заперто → интерактив → цветок), резолв через pickInteract (чистый, эпсилон-ничья 0.05 + приоритет kind). Подпись «[E] Имя» над ближайшей целью заменяет per-object подписи; NPC впервые получают подписи. Снапшот: interactHint (+ ключ анти-дрейфа). Гвард wasBusy: клавиша, закрывшая диалог, не ударяет/не переоткрывает разговор в тот же тик (Space/A мульти-биндинг advance+attack/interact). Клик-движение пока живо (удаляется в следующем коммите). Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| apps/game/src/agent/SceneAgentView.ts |
|---|
| apps/game/src/agent/__tests__/snapshot.test.ts |
|---|
| apps/game/src/agent/snapshot.ts |
|---|
| apps/game/src/main.ts |
|---|
| apps/game/src/scenes/LocationScene.ts |
|---|
| apps/game/src/systems/ClickRouting.ts |
|---|
| apps/game/src/systems/InteractHint.ts 0 → 100644 |
|---|
| apps/game/src/systems/LocationHud.ts |
|---|
| apps/game/src/systems/SceneObjects.ts |
|---|
| apps/game/src/systems/__tests__/ClickRouting.test.ts |
|---|