#include "..\script_component.hpp" /* * File: fnc_openVG.sqf * Author: IDSolutions * Date: 2025-12-16 * Last Update: 2026-01-30 * Public: No * * Description: * Opens the Virtual Garage. * * Arguments: * None * * Return Value: * None * * Example: * call forge_client_garage_fnc_openVG */ private _locations = (missionConfigFile >> "FORGE_CfgGarages" >> "locations") call BFUNC(getCfgData); { FORGE_VehSpawnPos = (_x select 1) getPos [5, (_x select 2)]; true; } count _locations; BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", FORGE_VehSpawnPos, [], 0, "NONE"]; BIS_fnc_garage_centerType = getText (configFile >> "CfgVehicles" >> "B_Quadbike_01_F" >> "model"); if !(GVAR(isPreLoaded)) then { [missionNamespace, "garageOpened", { params ["_display", "_toggleSpace"]; missionNamespace setVariable ["BIS_fnc_garage_data", [ GVAR(Cars), GVAR(Armor), GVAR(Helis), GVAR(Planes), GVAR(Naval), GVAR(Other) ]]; { lbClear (_display displayCtrl (960 + _forEachIndex)); } forEach BIS_fnc_garage_data; _display displayAddEventHandler ["KeyDown", "_this select 3"]; { (_display displayCtrl _x) ctrlShow false } forEach [44151, 44150, 44146, 44147, 44148, 44149, 44346, 44347, 978]; ["ListAdd", [_display]] call BFUNC(garage); }] call BFUNC(addScriptedEventHandler); [missionNamespace, "garageClosed", { private _nearestObjects = BIS_fnc_garage_center nearEntities [["Car","Tank","Air","Ship"], 15]; if (!isNil "_nearestObjects") then { private _obj = _nearestObjects select 0; private _veh = typeOf _obj; private _textures = getObjectTextures _obj; private _animationNames = animationNames _obj; { deleteVehicle _x } forEach _nearestObjects; private _createVehicle = createVehicle [_veh, FORGE_VehSpawnPos, [], 0, "CAN_COLLIDE"]; if (_textures isNotEqualTo []) then { private _count = 0; { _createVehicle setObjectTextureGlobal [_count, _x]; _count = _count + 1; } forEach _textures; }; if (_animationNames isNotEqualTo []) then { private _animationPhase = []; for "_i" from 0 to count _animationNames -1 do { _animationPhase pushBack [_animationNames select _i, _obj animationPhase (_animationNames select _i)]; { _createVehicle animate _x; } forEach _animationPhase; }; }; }; }] call BFUNC(addScriptedEventHandler); GVAR(isPreLoaded) = true; }; private _nearVehicles = FORGE_VehSpawnPos nearEntities [["Car", "Tank", "Air", "Ship"], 5]; if (_nearVehicles isNotEqualTo []) exitWith { private _params = ["warning", "Virtual Garage", "Vehicle spawn position is blocked. Please move the vehicle before accessing the garage.", 3000]; EGVAR(notifications,NotificationService) call ["create", _params]; }; ["Open", true] call BFUNC(garage);