#include "..\script_component.hpp" /* * File: fnc_initVGClass.sqf * Author: IDSolutions * Date: 2025-12-16 * Last Update: 2026-01-31 * Public: No * * Description: * Initializes the Virtual Garage class for managing player garage unlocks. * Provides methods for syncing, saving, and applying virtual items to BIS Garage. * * Arguments: * None * * Return Value: * vGarage class object [HASHMAP OBJECT] * * Example: * call forge_client_garage_fnc_initVGClass; */ #pragma hemtt ignore_variables ["_self"] GVAR(VGarageClass) = createHashMapObject [[ ["#type", "IVGarageClass"], ["#create", { GVAR(isPreLoaded) = false; _self set ["uid", (getPlayerUID player)]; _self set ["vGarage", createHashMap]; _self set ["isLoaded", false]; _self set ["lastSave", time]; }], ["init", { private _uid = _self get "uid"; private _vGarage = _self get "vGarage"; [SRPC(garage,requestInitVG), [_uid, _vGarage]] call CFUNC(serverEvent); systemChat format ["VGarage loaded for %1", (name player)]; diag_log "[FORGE:Client:VGarage] VGarage Class Initialized!"; }], ["save", { private _uid = _self get "uid"; [SRPC(garage,requestSaveVG), [_uid]] call CFUNC(serverEvent); _self set ["lastSave", time]; }], ["sync", { params [["_data", createHashMap, [createHashMap]], ["_jip", false, [false]]]; private _vGarage = _self get "vGarage"; private _isLoaded = _self get "isLoaded"; { _vGarage set [_x, _y]; if (_jip) then { switch (_x) do { case "cars": { _self call ["apply", ["cars"]]; }; case "armor": { _self call ["apply", ["armor"]]; }; case "helis": { _self call ["apply", ["helis"]]; }; case "planes": { _self call ["apply", ["planes"]]; }; case "naval": { _self call ["apply", ["naval"]]; }; case "other": { _self call ["apply", ["other"]]; }; default {}; }; }; } forEach _data; _self set ["vGarage", _vGarage]; if !(_isLoaded) then { _self set ["isLoaded", true]; }; diag_log "[FORGE:Client:VGarage] Sync completed"; }], ["get", { params [["_key", "", [""]], ["_default", nil, [[], "", 0, false, createHashMap]]]; private _vGarage = _self get "vGarage"; _vGarage getOrDefault [_key, _default]; }], ["apply", { params [["_key", "", [""]]]; private _vehicles = _self call ["get", [_key, []]]; private _array = switch (_key) do { case "cars": { GVAR(Cars) }; case "armor": { GVAR(Armor) }; case "helis": { GVAR(Helis) }; case "planes": { GVAR(Planes) }; case "naval": { GVAR(Naval) }; case "other": { GVAR(Other) }; default { [] }; }; { _array append [getText (configFile >> "CfgVehicles" >> _x >> "model"), [configFile >> "CfgVehicles" >> _x]]; } forEach _vehicles; }] ]]; GVAR(VGarageClass)