Plan focus cone, head ring, and radial action menu; defer host sign-in

Document the next playable pass: WASD/look stop fighting action keys, cone
focus with a billboarded head ring, doughnut HUD opened by LMB or Space
(click or A/D then Space to confirm, Esc/RMB cancel). Emergency stays on R.
Wand leaves W. NPC rigs stay procedural but get a face/hair/neck. Host
REQUIRE_SIGNIN_VIEW follow-up deferred.
This commit is contained in:
zwitschi committed 2026-10-31 15:00:11 +01:00
1 parent b704a8ed61
commit 5662baa14d
3 files changed
+193

No files matched your search

+55
View File
@@ -1,5 +1,54 @@
# TODO
## Player control, focus ring, and radial action menu
Design is in `PLAN.md` → "Player Control, Focus, and Action Menu (next pass)". Distribution
follow-up (host `REQUIRE_SIGNIN_VIEW`) is deferred.
### Locomotion
- [ ] Stop stealing WASD: wand off `W` (use wheel + optional `C`); allow/deny `A`/`D` only while
inspect/wand is open; polite direction off `Q` as a required bind.
- [ ] Accel/decel on walk; gravity only when airborne; `floor_snap_length` for the steps.
- [ ] Mouse look only while captured and no modal UI is open. Freeze walk+look while the radial
(and inspect/wand opened from it) is up. Recapture on close.
- [ ] `Esc` closes the top modal first; with nothing open it still toggles mouse capture.
### Focus and head ring
- [ ] Replace the 8 m hairline ray as the primary picker with a focus cone (range ~10 m, head
inside a ~90 px / 10° circle around the crosshair; closest to center wins; occluded heads
skipped). Keep `Tab` as the 12 m cycle.
- [ ] Small grace so walk-bob does not drop focus.
- [ ] Billboarded ring on the focused avatar `Head`; gold idle, brighter while the radial is open;
one at a time. Optional `display_name` under the ring. No internal type name in the world.
### Radial HUD
- [ ] New `src/game/ui/action_radial.gd` doughnut: open on LMB or `Space` when someone is focused.
Opening click does not pick a slice. Slices (top, clockwise, de-escalation first): raise
hand, point, head shake, polite direction, inspect, wand (grey if no wand), warning, block,
radio assist. Emergency stays on `R` only.
- [ ] Highlight by mouse angle, or `A`/`D` / arrows. Click slice or `Space` confirms. `Esc` / RMB
closes with no action and no recorder event.
- [ ] Inspect / wand / radio slices close the wheel then open the existing panels. Freeze until
that panel closes.
- [ ] Number keys `1`–`6` may remain as closed-menu shortcuts; they must not fire while the wheel
is open.
### NPC display
- [ ] Procedural rig: neck, shoes, hair cap from seed, two eye spheres so the head has a front.
Keep props, height variation, walk bob, notice-head-turn. Collision capsule matches height.
Named `Head` node stays the attach point.
### Input, copy, tests
- [ ] Update `project.godot` input map (`action_menu`, `confirm`, `cancel` includes RMB, wand on
`C`). Update `hud.controls` and the README table + smoke checklist.
- [ ] Headless tests `src/test/tests/test_focus_and_radial.gd`: cone picks the centered head;
highlight wrap; cancel writes no recorder event; `W` does not open wand.
## Distribution follow-up (findings + host config)
Verified via API+host credentials (2026-10-31):
@@ -34,3 +83,9 @@ performance hardening only.
- [ ] Profile the crowd: ensure textured materials and props hold target frame rate around a
busy entrance.
- [ ] Add LOD or culling for distant NPCs/props if the crowd grows.
## Generated Asset Integration
- [ ] Regenerate the AI asset set at role-specific aspect ratios and dimensions.
- [ ] Audit, process, and wire every generated asset into the game runtime.
- [ ] Add screenshot auditing and refresh the README screenshot gallery.