# Client CAD Usage Guide The client CAD addon provides the map and dispatch UI for groups, active tasks, task assignment, dispatch orders, support requests, and task acknowledge/decline workflows. ## Open CAD UI ```sqf call forge_client_cad_fnc_openUI; ``` The CAD UI opens `RscMapUI` and loads separate browser controls for: - top bar - bottom bar - side panel - dispatcher board The native Arma map remains part of the same display. ## Repository and Bridge `forge_client_cad_fnc_initRepository` caches the hydrated CAD payload, selected mode, dispatch view, session data, groups, tasks, requests, assignments, and server-provided generated task types. `forge_client_cad_fnc_initUIBridge` owns: - ready state for side panel, top bar, and dispatcher board - operations vs dispatch mode - board vs map dispatch view - hydrate requests - task assignment, acknowledge, and decline requests - dispatch order create/close requests - support request submit/close requests - group status, role, and profile requests - map focus actions ## Map Focus Behavior CAD list entries can drive the native map position without duplicating map logic in the browser UI. In operations mode, assigned or accepted task cards, roster member cards, and support request cards send focus events. In dispatch map mode, group, contract, and support request cards use the same focus path. Task and support request focus uses the stored record position. Roster member focus uses the member position included in the hydrated group roster. ## Browser Events | Event | Client behavior | | --- | --- | | `cad::topbar::ready` | Mark top bar ready and push top bar state. | | `cad::ready` | Mark side panel ready and request hydrate. | | `cad::dispatcher::ready` | Mark dispatcher board ready and push hydrate data. | | `cad::mode::set` | Switch between operations and dispatch mode. | | `cad::dispatchView::set` | Switch dispatch board/map view. | | `cad::refresh` | Request fresh CAD hydrate data. | | `cad::generatedTask::request` | Request a server-generated mission task from the selected generator type. | | `cad::tasks::assign` | Assign a task to a group. | | `cad::tasks::acknowledge` | Acknowledge assigned task. | | `cad::tasks::decline` | Decline assigned task. | | `cad::dispatchOrder::create` | Create dispatch order. | | `cad::dispatchOrder::close` | Close dispatch order. | | `cad::supportRequest::submit` | Submit support request. | | `cad::supportRequest::close` | Close support request. | | `cad::groups::status` | Update group status. | | `cad::groups::role` | Update group role. | | `cad::groups::profile` | Update status and role together. | | `cad::groups::focus` | Center map on a group. | | `cad::members::focus` | Center map on a group member. | | `cad::tasks::focus` | Center map on a task. | | `cad::requests::focus` | Center map on a support request. | | `map::zoomIn` | Zoom native map in. | | `map::zoomOut` | Zoom native map out. | | `map::search` | Placeholder status update. | | `map::close` | Dispose bridge state and close the display. | ## Response Events The bridge pushes: | Event | Purpose | | --- | --- | | `cad::hydrate` | Full hydrated CAD payload to the side panel. | | `cad::assignment::response` | Task assignment/acknowledge/decline result. | | `cad::group::response` | Group status/role/profile result. | | `cad::request::response` | Support request result. | Dispatcher board controls also receive direct `ExecJS` status and hydrate calls. ## Task Compatibility CAD task visibility depends on server-side task catalog entries. Tasks created through Eden Forge task modules or `forge_server_task_fnc_startTask` are the normal CAD-compatible task sources because they register task catalog data. Direct handler or task-function calls only work with CAD when the task catalog entry already exists. The dispatcher-generated task dropdown is hydrated from the server `generatedTaskTypes` payload. The UI has a built-in fallback list for loading or older payload compatibility, but any hydrate payload that includes `generatedTaskTypes` replaces that fallback. An empty hydrated list disables the request control. For the built-in provider, this is how `forge_server_task_enableGenerator = false` is surfaced client-side. Custom mission generators can publish tasks into CAD by using the server task catalog or by registering a task provider that supplies `generatedTaskTypes` and handles generated task requests. See [Custom Mission Generators](./CUSTOM_MISSION_GENERATORS.md). ## Authorization Notes Only dispatcher sessions can enter dispatch mode. If the hydrated session is not a dispatcher, the bridge forces the UI back to operations mode. ## Related Guides - [CAD Usage Guide](./CAD_USAGE_GUIDE.md) - [Task Usage Guide](./TASK_USAGE_GUIDE.md) - [Custom Mission Generators](./CUSTOM_MISSION_GENERATORS.md) - [Client Common Usage Guide](./CLIENT_COMMON_USAGE_GUIDE.md)