Add session shell and close world presentation follow-ups
Session shell - Startup venue menu (src/game/ui/start_menu.gd): keyboard + mouse, replaces the live-shift boot and V as the player-facing venue path (V stays a debug bind). - Pause overlay on Esc (src/game/ui/pause_overlay.gd): resume, restart shift, settings, quit to menu. - Settings panel (src/game/ui/settings_panel.gd): mouse look sensitivity and HUD font scale, persisted via Save into user://settings.json and loaded on boot. - Shift review "Run another shift" now returns to the venue menu. - New smoke: src/test/smoke_session_shell.gd (menu -> shift -> pause -> settings -> menu), passes headless and windowed. World and presentation - Skyline backdrop restored with a transparent asset and an alpha-scissor unshaded material; fixes the opaque black slab from the earlier attempt and the unimported texture path. - Steps and landing are a StaticBody3D with per-tread colliders, so the guard and NPCs walk up instead of clipping through. - Marquee Label3D scaled up (72 -> 160) so STEP LINE reads from the sidewalk. - Focus torus and name tag enlarged for 2-3 m readability. - Routine traffic despawns after an idle lifetime (NpcAvatar.ephemeral), so the 16-NPC cap no longer fills with standers; authored events stay for the shift. Docs and tests - PLAN.md test/CI section corrected to the custom headless runner and Gitea Actions. - README controls table, smoke checklist, test count, and status lists refreshed. - TODO/DONE/MEMORY updated; completed sections moved to DONE.md. - Headless suite 77 -> 88 passing (settings round-trip, step colliders, skyline alpha, session-shell UI behavior, traffic lifetime).
This commit is contained in:
1 parent
f11b441c07
commit
be429cab29
20 files changed
+989
-90
No files matched your search
@@ -16,15 +16,15 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
## Handoff (read this first)
|
||||
|
||||
- Repo: `/run/media/system/DATA/Documents/06-games/security-game`. Godot: `~/.local/bin/godot` (4.3.stable).
|
||||
Tests: `godot --headless --path . --script res://src/test/test_runner.gd` → **77/77**.
|
||||
Tests: `godot --headless --path . --script res://src/test/test_runner.gd` → **88/88**.
|
||||
Session shell smoke: `godot --headless --path . --script res://src/test/smoke_session_shell.gd` → exit 0.
|
||||
Windowed control smoke: `godot --path . --script res://src/test/smoke_focus_radial.gd` → exit 0.
|
||||
- `main` is **7 commits ahead of origin**, all committed locally, **not pushed**. The newest commit
|
||||
is the control pass + boot/spawn fixes (access loadout, focus cone, action wheel, named input
|
||||
actions, NPC rig, camera/building fixes, scheduler rate, NPC cap, screenshots, docs).
|
||||
- Nothing is left uncommitted. Ask before pushing if you did not author the earlier commits.
|
||||
- Next work, in order: (1) session shell in `TODO.md`; (2) world follow-ups listed at the top of
|
||||
`TODO.md` (guard floats ~0.5 m, step colliders, skyline asset, marquee size); (3) push / release
|
||||
when the user asks.
|
||||
- `main` is ahead of origin, all committed locally, **not pushed**. The working tree additionally
|
||||
holds the session-shell + world-follow-up batch (start menu, pause overlay, settings persistence,
|
||||
step colliders, skyline alpha, marquee/ring scale, traffic despawn, README/PLAN/TODO refresh).
|
||||
- Next work, in order: (1) remaining PLAN verbs in `TODO.md` (eye contact, recognize decision,
|
||||
warning body-cam flag, blocking station, request reason); (2) crowd presentation (rubberneck +
|
||||
evacuation); (3) `git add -A` + commit, push / release when the user asks.
|
||||
- Do not re-open `override_access`. Do not bind wand to `W`. Do not remove the radio easter egg.
|
||||
|
||||
## Current State
|
||||
@@ -46,7 +46,24 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
spawns in front of the door facing the street; building volume moved to z ∈ [-8,-4] so the door,
|
||||
awning, and marquee are visible; step treads rise toward the door; `ShiftCoordinator` pulls the
|
||||
event scheduler once per simulated second (was every physics frame → >1200 NPCs in seconds);
|
||||
`GameManager.MAX_LIVE_NPCS = 16` caps live avatars; skyline backdrop removed (opaque black asset).
|
||||
`GameManager.MAX_LIVE_NPCS = 16` caps live avatars.
|
||||
- **Session shell (2026-10-31, uncommitted):** the game now boots into `StartMenu`
|
||||
(`src/game/ui/start_menu.gd`, layer 20) instead of a live shift. `GameManager._on_venue_selected()`
|
||||
builds the scenario and calls `_start_shift()`; `_shift_running` gates input and `_refresh_freeze()`.
|
||||
Esc with nothing open now pauses (`PauseOverlay`, layer 18) → resume / restart / settings /
|
||||
quit-to-menu. `SettingsPanel` (layer 22) writes `look_sensitivity` + `hud_font_scale` through
|
||||
`Save.save_settings()` → `user://settings.json`; `Save.load_settings()` merges over
|
||||
`Save.DEFAULT_SETTINGS` on boot and `GameManager._apply_settings()` pushes them into the guard/HUD.
|
||||
Shift review "Run another shift" now calls `_show_start_menu()` (not a silent restart). `V` stays a
|
||||
debug venue bind. Smoke: `src/test/smoke_session_shell.gd` (menu → shift → pause → settings → menu).
|
||||
- **World follow-ups closed (2026-10-31):** skyline backdrop restored with `T_SKYLINE`
|
||||
(`assets/textures/skyline.png`, regenerated RGBA with a transparent sky) and an
|
||||
`TRANSPARENCY_ALPHA_SCISSOR` unshaded material (`_skyline_mat`); steps + landing are a
|
||||
`StaticBody3D` with per-tread `BoxShape3D` colliders; marquee `font_size` 160 / outline 24; focus
|
||||
torus 0.26–0.34 + name tag 48px; `NpcAvatar.ephemeral`/`lifetime_s` despawns routine traffic
|
||||
(authored events stay). Guard spawn height verified on the landing (guard_y=0.84).
|
||||
- **Asset gotcha:** `assets/textures/game_ready/` is *not* imported (no `.import`). Use the
|
||||
imported `assets/textures/skyline.png` path. Untracked duplicate folder should not be referenced.
|
||||
- Host sign-in follow-up remains deferred. PLAN.md + ADRs 0007–0010 still describe the intended UX.
|
||||
- **Release v0.2.1 is LIVE** (2026-10-31): CI run 1110 built the NSIS installer + AppImage
|
||||
and published — installers/AppImage are on the releases page. Releasing = bump version → tag → push.
|
||||
|
||||
Reference in new issue
Block a user