forge/arma/server/addons/cad/README.md
Jacob Schmidt c176837a2c Verify and fix module documentation accuracy
- Add missing forge_server_actor runtime dependency to phone module (critical)
- Clarify that garage and locker are event bus listeners, not emitters
- Document economy runtime-only dependencies (bank, org)
- Add TaskStore public API documentation (27 methods organized by category)
- Update task module event emissions and hooks documentation

All documentation now aligns with actual implementation verified against codebase.
2026-05-15 20:46:19 -05:00

54 lines
2.0 KiB
Markdown

# Forge Server CAD
## Overview
The CAD addon coordinates dispatch-facing operational state: groups,
assignments, dispatch orders, support requests, task assignment, permissions,
hydrate payloads, and recent activity.
CAD state is extension-backed but intentionally transient. It is scoped to the
active server or mission lifecycle and starts fresh after restart.
## Dependencies
- `forge_server_main`
- `forge_server_common`
- `forge_server_actor`
- `forge_server_org`
- `forge_server_task`
- `forge_server_extension` at runtime for CAD extension calls
- `forge_client_cad` and `forge_client_notifications` for response RPCs
## Main Components
- `fnc_initCadStore.sqf` coordinates repositories and request handling.
- `fnc_initActivityRepository.sqf` records recent CAD activity.
- `fnc_initAssignmentRepository.sqf` manages task assignments and dispatch
orders.
- `fnc_initGroupRepository.sqf` manages group membership, role, and status.
- `fnc_initPermissionService.sqf` resolves dispatch permissions.
- `fnc_initPersistenceService.sqf` bridges SQF state to extension hot CAD
storage.
- `fnc_initRequestRepository.sqf` manages support requests.
## Event Surface
The addon listens to and emits events through the event bus:
**Listens to:**
- Task lifecycle events (`task.started`, `task.completed`, `task.failed`)
- Task reward events to sync assignments
- Client notification/sync request events
**Emits:**
- `cad.assignment.assigned` - task assigned to group
- `cad.assignment.created` - new assignment created
- `cad.assignment.acknowledged` - assignment acknowledged
- `cad.assignment.declined` - assignment declined
- `cad.assignment.closed` - assignment completed
- `cad.request.submitted` - support request submitted
- `cad.request.closed` - support request resolved
- `cad.group.updated` - group status updated
Successful mutations may invalidate CAD state globally so clients refresh their views.
## Notes
CAD hydrate payloads include active task catalog entries from `TaskStore` and
organization context from `ActorStore`.