neon-sprawl/docs/decomposition/modules/E6_M2_ConsentAndRiskUxSigna...

54 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# E6.M2 — ConsentAndRiskUxSignals
## Summary
| Field | Value |
|--------|--------|
| **Module ID** | E6.M2 |
| **Epic** | [Epic 6 — PvP Security](../epics/epic_06_pvp_security.md) |
| **Stage target** | Prototype |
| **Status** | Planned (see [dependency register](module_dependency_register.md)) |
## Purpose
Entry warnings, in-zone risk UI, and clear PvP state communication using eligibility from [E6.M1](E6_M1_PvPEligibilityAndFlagState.md) and camera/readability context from [E1.M2](E1_M2_IsometricCameraController.md).
## E1.M2 camera adjacency (NEO-18)
When implementing zone-risk HUD and related **client** presentation, treat [E1.M2](E1_M2_IsometricCameraController.md) as the framing source:
- **May read** the follow rigs **`camera_state`** snapshot (`client/scripts/camera_state.gd`) — field meanings and refresh cadence: [Consumer contract](E1_M2_IsometricCameraController.md#consumer-contract-neo-18).
- **Not duplicated in `CameraState` today:** occlusion on/off, bound zoom/occlusion resources, `presentation_yaw_deg`, `pitch_elevation_deg` — read **`IsometricFollowCamera`** exports (`client/scripts/isometric_follow_camera.gd`) when needed.
- **If `CameraState.yaw` becomes non-zero** (orbit enabled mid-project per E1.M2 rotation policy), screen-space layouts that assumed a fixed diagonal may need a compass / telegraph pass; keep **gameplay-adjacent** semantics **world-anchored** where possible.
- **Authority:** [Client vs server — E1.M2](client_server_authority.md#e1m2-isometriccameracontroller) — the server must **not** use client-reported camera pose for gameplay checks (targeting, LOS, zone rules).
## Responsibilities
- Show `RiskPrompt` on low-sec entry; drive `ZoneRiskState` / `PvPIndicatorState` in HUD.
## Key contracts
| Contract | Role |
|----------|------|
| `RiskPrompt` | Consent dialog payload and outcomes. |
| `ZoneRiskState` | Display model for current zone risk. |
| `PvPIndicatorState` | Persistent indicator semantics. |
## Module dependencies
- **E6.M1** — PvPEligibilityAndFlagState.
- **E1.M2** — IsometricCameraController.
## Dependents (by design)
- Client UX only; server remains authoritative via E6.M1 / E4.M4.
## Related implementation slices
Epic 6 **Slice 2**`risk_prompt_shown`, accepted/declined.
## Source anchors
- Master plan: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Epic 6.
- [Module dependency register](module_dependency_register.md)