diff --git a/arma/client/addons/garage/functions/fnc_initVGClass.sqf b/arma/client/addons/garage/functions/fnc_initVGClass.sqf index 3264afa..248758c 100644 --- a/arma/client/addons/garage/functions/fnc_initVGClass.sqf +++ b/arma/client/addons/garage/functions/fnc_initVGClass.sqf @@ -25,6 +25,8 @@ GVAR(VGarageClass) = createHashMapObject [[ ["#type", "IVGarageClass"], ["#create", { + GVAR(isPreLoaded) = false; + _self set ["uid", (getPlayerUID player)]; _self set ["vGarage", createHashMap]; _self set ["isLoaded", false]; diff --git a/arma/client/addons/garage/functions/fnc_openVG.sqf b/arma/client/addons/garage/functions/fnc_openVG.sqf index f02af30..ddc3d6b 100644 --- a/arma/client/addons/garage/functions/fnc_openVG.sqf +++ b/arma/client/addons/garage/functions/fnc_openVG.sqf @@ -26,66 +26,70 @@ private _locations = (missionConfigFile >> "FORGE_CfgGarages" >> "locations") ca 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,NotificationClass) call ["create", _params]; }; -BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", FORGE_VehSpawnPos, [], 0, "NONE"]; -BIS_fnc_garage_centerType = getText (configFile >> "CfgVehicles" >> "B_Quadbike_01_F" >> "model"); - -[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); - ["Open", true] call BFUNC(garage);