- 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.
54 lines
2.0 KiB
Markdown
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`.
|