# Client Garage Usage Guide The client garage addon provides player vehicle storage UI, vehicle store/retrieve actions, vehicle context building, and the virtual garage view. ## Open Garage UI ```sqf call forge_client_garage_fnc_openUI; ``` The garage UI opens `RscGarage`, loads `ui/_site/index.html`, and routes browser events through `forge_client_garage_fnc_handleUIEvents`. ## Open Virtual Garage ```sqf call forge_client_garage_fnc_openVG; ``` The virtual garage uses mission-configured `FORGE_CfgGarages` locations to set the spawn/preview position, opens the BIS garage interface, and restricts the available vehicle lists from the virtual garage repository. ## Client Services | Service | Purpose | | --- | --- | | `GarageRepository` | Player garage view state. | | `VGRepository` | Virtual garage unlock view state. | | `GarageHelperService` | Vehicle names, hit points, and payload helpers. | | `GarageContextService` | Nearby/current vehicle context. | | `GaragePayloadService` | Browser hydrate payload construction. | | `GarageActionService` | Store/retrieve request handling. | | `GarageUIBridge` | Browser ready, hydrate, and sync delivery. | ## Browser Events | Event | Client behavior | | --- | --- | | `garage::ready` | Mark browser ready and send `garage::hydrate`. | | `garage::refresh` | Send current garage payload as `garage::sync`. | | `garage::vehicle::retrieve::request` | Forward retrieve request through the action service. | | `garage::vehicle::store::request` | Forward store request through the action service. | | `garage::close` | Dispose bridge screen state and close the display. | ## Browser Response Events | Event | Purpose | | --- | --- | | `garage::hydrate` | Initial vehicle and session payload. | | `garage::sync` | Refreshed vehicle payload. | Server action responses are handled by the action service and notification flow. ## Mission Setup Garage interactions are normally surfaced through the actor menu when nearby objects have garage variables such as: ```sqf _object setVariable ["isGarage", true, true]; _object setVariable ["garageType", "cars", true]; ``` Virtual garage access also requires configured garage locations in mission config so the preview/spawn position can be resolved. ## Authoritative State The client gathers vehicle context and sends store/retrieve requests. Stored vehicle state, validation, spawning, removal, and persistence are owned by the server garage addon and extension. ## Related Guides - [Garage Usage Guide](./GARAGE_USAGE_GUIDE.md) - [Client Actor Usage Guide](./CLIENT_ACTOR_USAGE_GUIDE.md) - [Client Notifications Usage Guide](./CLIENT_NOTIFICATIONS_USAGE_GUIDE.md)