feat: Implement virtual garage system including class initialization and UI for managing player vehicle unlocks.

This commit is contained in:
Jacob Schmidt 2026-01-30 21:18:00 -06:00
parent c06d9f534a
commit 2b895b7d1a
2 changed files with 62 additions and 56 deletions

View File

@ -25,6 +25,8 @@
GVAR(VGarageClass) = createHashMapObject [[ GVAR(VGarageClass) = createHashMapObject [[
["#type", "IVGarageClass"], ["#type", "IVGarageClass"],
["#create", { ["#create", {
GVAR(isPreLoaded) = false;
_self set ["uid", (getPlayerUID player)]; _self set ["uid", (getPlayerUID player)];
_self set ["vGarage", createHashMap]; _self set ["vGarage", createHashMap];
_self set ["isLoaded", false]; _self set ["isLoaded", false];

View File

@ -26,16 +26,11 @@ private _locations = (missionConfigFile >> "FORGE_CfgGarages" >> "locations") ca
true; true;
} count _locations; } count _locations;
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_center = createVehicle ["Land_HelipadEmpty_F", FORGE_VehSpawnPos, [], 0, "NONE"];
BIS_fnc_garage_centerType = getText (configFile >> "CfgVehicles" >> "B_Quadbike_01_F" >> "model"); BIS_fnc_garage_centerType = getText (configFile >> "CfgVehicles" >> "B_Quadbike_01_F" >> "model");
[missionNamespace, "garageOpened", { if !(GVAR(isPreLoaded)) then {
[missionNamespace, "garageOpened", {
params ["_display", "_toggleSpace"]; params ["_display", "_toggleSpace"];
missionNamespace setVariable ["BIS_fnc_garage_data", [ missionNamespace setVariable ["BIS_fnc_garage_data", [
@ -55,9 +50,9 @@ BIS_fnc_garage_centerType = getText (configFile >> "CfgVehicles" >> "B_Quadbike_
{ (_display displayCtrl _x) ctrlShow false } forEach [44151, 44150, 44146, 44147, 44148, 44149, 44346, 44347, 978]; { (_display displayCtrl _x) ctrlShow false } forEach [44151, 44150, 44146, 44147, 44148, 44149, 44346, 44347, 978];
["ListAdd", [_display]] call BFUNC(garage); ["ListAdd", [_display]] call BFUNC(garage);
}] call BFUNC(addScriptedEventHandler); }] call BFUNC(addScriptedEventHandler);
[missionNamespace, "garageClosed", { [missionNamespace, "garageClosed", {
private _nearestObjects = BIS_fnc_garage_center nearEntities [["Car","Tank","Air","Ship"], 15]; private _nearestObjects = BIS_fnc_garage_center nearEntities [["Car","Tank","Air","Ship"], 15];
if (!isNil "_nearestObjects") then { if (!isNil "_nearestObjects") then {
@ -86,6 +81,15 @@ BIS_fnc_garage_centerType = getText (configFile >> "CfgVehicles" >> "B_Quadbike_
}; };
}; };
}; };
}] call BFUNC(addScriptedEventHandler); }] 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];
};
["Open", true] call BFUNC(garage); ["Open", true] call BFUNC(garage);