Skip to content

Client UI HUD And Menus

rayswaynl edited this page Jun 4, 2026 · 26 revisions

Client UI, HUD And Menus

This is the quick-reference gateway for client UI work. Start with the player UI workflow map when you need a "what can the player click?" tour. The canonical implementation map is Client UI systems atlas; update that atlas for detailed dialog tables, title resources, controller loops, marker/action UI and UI risk analysis.

First Stops

Need Start here Source anchors Canonical detail
Main Warfare menu routing Client/GUI/GUI_Menu.sqf Rsc/Dialogs.hpp:1019-1022, GUI_Menu.sqf:33-43, :162-179, :191-199 Client UI systems atlas Main Menu Router
Buy units / factories Client/GUI/GUI_Menu_BuyUnits.sqf -> Client/Functions/Client_BuildUnit.sqf Rsc/Dialogs.hpp:1445-1447, GUI_Menu_BuyUnits.sqf:89-156 Factory and purchase systems atlas
Gear, service and EASA GUI_BuyGearMenu.sqf, GUI_Menu_Service.sqf, GUI_Menu_EASA.sqf Rsc/Dialogs.hpp:530-532, :2870-2872, :3209-3211 Gear/loadout/EASA atlas
Upgrades and economy menu GUI_UpgradeMenu.sqf, GUI_Menu_Economy.sqf Rsc/Dialogs.hpp:4-6, :3287-3289, GUI_UpgradeMenu.sqf:137-171 Gameplay systems atlas and Economy
RHUD / FPS HUD / title resources Client/Client_UpdateRHUD.sqf, Rsc/Titles.hpp Rsc/Titles.hpp:25, :44, :164-173, :532-540, Client_UpdateRHUD.sqf:3-7, :89-92, :183-190 Client UI systems atlas Title And HUD Resource Map
Respawn selector and markers GUI_RespawnMenu.sqf, client marker FSMs GUI_RespawnMenu.sqf:31, :100, :193, Client_UI_Respawn_Selector.sqf:19-31 Client UI systems atlas Map And Marker UI
UI JIP/headless scope initJIPCompatible.sqf, Init_Client.sqf, Client_UpdateRHUD.sqf initJIPCompatible.sqf:70-76, :224-238, Init_Client.sqf:730-734, Client_UpdateRHUD.sqf:87-95 Client UI systems atlas JIP And Headless-Client Verdict

UI Safety Rules

  • UI code is usually client-local, but UI actions can still mutate server-visible state through PVF or direct publicVariable paths.
  • Treat any UI change that touches score, funds, supply, structures, upgrades, support, loadouts, HQ state or vehicle creation as a networking/economy change too.
  • Do not assume dialog IDs are unique: RscMenu_EASA and RscMenu_Economy share idd = 23000, and RscOverlay / OptionsAvailable both use idd = 10200.
  • Economy menu startup writes to 23004/23005/23006, but the audited RscMenu_Economy control block does not declare those IDs; smoke disabled-state behavior before reusing this menu as a commander-control template.
  • Economy map-sell also has a stale-click risk: GUI_Menu_Economy.sqf:10 does not reset mouseButtonUp, but :101-106 consumes it for map sell. Reset the latch if touching Economy map controls.
  • EASA should close or recover on unsupported/stale vehicles: GUI_Menu_EASA.sqf:3-4 exits early when the current vehicle type is not in WFBE_EASA_Vehicles, while the dialog may remain open from a stale service-menu context.
  • Do not reuse currentCutDisplay for unrelated title resources: current source lets OptionsAvailable/RHUD/action icons and EndOfGameStats share that key, so endgame display work needs the UI IDD collision repair handle split as well as IDD cleanup.
  • Keep polling menu loops and marker/HUD loops light; reuse cached display handles and existing update flags.
  • Headless clients do not run the UI init path; "HC" calls inside updateclient.sqf are high-command player UI controls, not headless-client rendering.
  • Late-join UI support exists, but do not call it fully clean without feature smoke: several UI waits depend on synchronized variables with no timeout.

Known UI Findings

Finding Meaning Canonical page
DR-14 Player unit purchase is client-authoritative; no RequestBuyUnit PVF exists. Factory and purchase systems atlas
DR-16 Structure sale is client-authoritative; this is an economy/server-authority finding, not a gear/template finding. Deep-review findings
DR-17 RscMenu_EASA and RscMenu_Economy both use idd = 23000. UI IDD collision repair
DR-24 Stale RscMenu_Upgrade points at missing Client/GUI/GUI_Menu_Upgrade.sqf; the same old block also references missing Client\Images\wf_*.paa upgrade icons. Live upgrades use WFBE_UpgradeMenu. Abandoned feature revival, Client UI systems atlas
DR-25a/b RscOverlay / OptionsAvailable share title idd = 10200, and RscClickableText.soundPush[] is malformed. UI IDD collision repair, Client UI systems atlas
DR-28 Gear, EASA and service spend/effect paths are client-authoritative. Gear/loadout/EASA atlas
Duplicate IDDs/display handles EASA/Economy share 23000; overlay/title resources share 10200; OptionsAvailable and EndOfGameStats both use currentCutDisplay. Client UI systems atlas, UI IDD collision repair
Economy dialog missing controls GUI_Menu_Economy.sqf:7-8 targets 23004/23005/23006, absent from audited RscMenu_Economy controls. Client UI systems atlas
Economy map-sell stale mouse latch GUI_Menu_Economy.sqf:10 does not reset mouseButtonUp; :101-106 consumes it for map sell. Client UI systems atlas, Player UI workflow map
EASA unsupported-vehicle fail-open GUI_Menu_EASA.sqf:3-4 exits on unsupported current vehicle without closing the dialog. Gear/loadout/EASA atlas
Command task partial Commander task controls are visible, but the SetTask send path is commented out. Client UI systems atlas
Main-menu GPS zoom orphan route GUI_Menu.sqf still handles MenuAction == 17/18, but the current WF_Menu controls expose actions 1-13, 16 and 19 only. Client UI systems atlas
Help dialog unload mismatch RscMenu_Help sets dialog_HelpPanel on load but clears cti_dialog_ui_onlinehelpmenu on unload, and GUI_Menu_Help.sqf has no unload case. Client UI systems atlas, Player UI workflow map

UI Risk Index

Use this as the fast route before touching UI:

Risk Go to
Duplicate dialog/title IDs and title display handles UI IDD collision repair
Service affordability and action-time guards Service menu affordability guards
Command task controls / dormant task system Client UI systems atlas
Gear/EASA/template/cargo partials Gear/loadout/EASA atlas, Gear template profile filter, Vehicle cargo equip loop bounds
Stale legacy dialogs Abandoned feature revival, Feature status

Continue Reading

Previous: Town AI vehicle safety | Next: Player UI workflow map

Main map: Home | Fast path: Quickstart | Agent file: agent-context.json

Sidebar

Clone this wiki locally