#include "..\script_component.hpp" /* * File: fnc_initLockerClass.sqf * Author: IDSolutions * Date: 2025-12-17 * Last Update: 2026-01-28 * Public: No * * Description: * Initializes the Locker class for managing player locker items. * Provides methods for syncing, saving, and applying locker items to the player's locker. * * Arguments: * None * * Return Value: * Locker class object [HASHMAP OBJECT] * * Example: * [] call forge_client_locker_fnc_initLockerClass */ #pragma hemtt ignore_variables ["_self"] GVAR(LockerClass) = createHashMapObject [[ ["#type", "ILockerClass"], ["#create", { _self set ["uid", (getPlayerUID player)]; _self set ["locker", createHashMap]; _self set ["isLoaded", false]; _self set ["lastSave", time]; }], ["init", { private _uid = _self get "uid"; private _locker = _self get "locker"; [SRPC(locker,requestInitLocker), [_uid, _locker]] call CFUNC(serverEvent); systemChat format ["Locker loaded for %1", (name player)]; diag_log "[FORGE:Client:Locker] Locker Class Initialized!"; }], ["save", { private _uid = _self get "uid"; [SRPC(locker,requestSaveLocker), [_uid]] call CFUNC(serverEvent); _self set ["lastSave", time]; }], ["sync", { params [["_data", createHashMap, [createHashMap]]]; private _locker = _self get "locker"; private _isLoaded = _self get "isLoaded"; if (_data isEqualTo createHashMap) exitWith { diag_log "[FORGE:Client:Locker] Empty data received for sync, skipping."; }; { _locker set [_x, _y]; } forEach _data; _self set ["locker", _locker]; if !(_isLoaded) then { _self set ["isLoaded", true]; }; diag_log "[FORGE:Client:Locker] Sync completed"; }], ["get", { params [["_key", "", [""]], ["_default", nil, [[], "", 0, false, createHashMap]]]; private _locker = _self get "locker"; _locker getOrDefault [_key, _default]; }] ]]; GVAR(LockerClass)