54 lines
2.4 KiB
Markdown
54 lines
2.4 KiB
Markdown
# 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 rig’s **`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)
|