forge/arma/server/addons/locker/functions/fnc_initLocker.sqf

86 lines
3.0 KiB
Plaintext

#include "..\script_component.hpp"
/*
* File: fnc_initLocker.sqf
* Author: IDSolutions
* Date: 2025-12-17
* Last Update: 2026-01-28
* Public: No
*
* Description:
* Initializes all lockers defined in the mission configuration.
*
* Arguments:
* None
*
* Return Value:
* None
*
* Example:
* [] call forge_server_locker_fnc_initLocker
*/
// TODO: Refactor to read from placed objects and their variables instead of missionConfig entries.
private _mC = "FORGE_CfgLockers";
private _lockers = "true" configClasses (missionConfigFile >> "FORGE_CfgLockers" >> "lockers");
{
private _configName = configName(_x);
private _className = (missionConfigFile >> _mC >> "lockers" >> _configName >> "className") call BFUNC(getCfgData);
private _pos = (missionConfigFile >> _mC >> "lockers" >> _configName >> "pos") call BFUNC(getCfgData);
private _dir = (missionConfigFile >> _mC >> "lockers" >> _configName >> "dir") call BFUNC(getCfgData);
private _locker = createVehicle [_className, [0, 0, 0]];
// private _prefix = "FORGE_Locker";
// private _varName = format ["%1_%2", _prefix, _forEachIndex];
_locker setPosATL _pos;
_locker setDir _dir;
_locker allowDamage false;
_locker setVariable ["isLocker", true, true];
clearBackpackCargoGlobal _locker;
clearItemCargoGlobal _locker;
clearMagazineCargoGlobal _locker;
clearWeaponCargoGlobal _locker;
// private _pLocker = vehicle _locker;
// _pLocker setVehicleVarName _varName;
// missionNamespace setVariable [_varName, _pLocker, true];
// _locker addEventHandler ["ContainerOpened", {
// params ["_container", "_unit"];
// private _uid = getPlayerUID _unit;
// private _pLocker = GVAR(LockerRegistry) get _uid;
// diag_log text format ["[FORGE] (locker) INFO: Container opened, refreshing inventory: %1 w/ %2", _container, _pLocker];
// // Clear existing cargo
// clearBackpackCargo _container;
// clearItemCargo _container;
// clearMagazineCargo _container;
// clearWeaponCargo _container;
// // Repopulate with current locker items
// {
// private _amount = _y get "amount";
// private _category = _y get "category";
// private _className = _y get "classname";
// switch (_category) do {
// case "backpack": { _container addBackpackCargo [_className, _amount]; };
// case "item": { _container addItemCargo [_className, _amount]; };
// case "magazine": { _container addMagazineCargo [_className, _amount]; };
// case "weapon": { _container addWeaponCargo [_className, _amount]; };
// default { _container addItemCargo [_className, _amount]; };
// };
// } forEach _pLocker;
// diag_log text format ["[FORGE] (locker) INFO: Inventory refreshed"];
// }];
diag_log format ["[FORGE:Server:Locker] ClassName: %1 Pos: %2 Dir: %3", _className, _pos, _dir];
} forEach _lockers;