|
engine(ui): каркас меню-сцен — menuInput, MenuSceneBase, disabled-пункты
- Чистая readMenuInput (MenuActionMap/MenuNavEvent): порядок cancel → move → (adjust XOR confirm) → extra; left/right подавляют confirm (Enter в настройках не даёт двойной шаг). - MenuSceneBase: build() из enter(), хуки onMove/onAdjust/onConfirm/ onCancel/onAction — заменяет скопированную в 4 сценах игры навигацию. - MenuList.MenuItem.disabled + ListCursor с предикатом выбираемости: курсор пропускает недоступные пункты, активация/клик игнорируются. - Тесты: menuInput (5), listCursor +3 (505 всего); доки ui-and-dialogue.md («Меню-сцены», осознанный отказ от updateBelow). Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| docs/engine/ui-and-dialogue.md |
|---|
| packages/engine/src/index.ts |
|---|
| packages/engine/src/ui/Button.ts |
|---|
| packages/engine/src/ui/MenuList.ts |
|---|
| packages/engine/src/ui/MenuSceneBase.ts 0 → 100644 |
|---|
| packages/engine/src/ui/__tests__/listCursor.test.ts |
|---|
| packages/engine/src/ui/__tests__/menuInput.test.ts 0 → 100644 |
|---|
| packages/engine/src/ui/listCursor.ts |
|---|
| packages/engine/src/ui/menuInput.ts 0 → 100644 |
|---|