forge/docs/CLIENT_CAD_USAGE_GUIDE.md
2026-05-26 22:22:13 -05:00

4.5 KiB

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

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, which is how forge_server_task_enableGenerator = false is surfaced client-side.

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.