mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
ac29287542
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
174 lines
6.3 KiB
Plaintext
174 lines
6.3 KiB
Plaintext
#include "script_component.hpp"
|
|
#include "defines.hpp"
|
|
|
|
GVAR(currentBox) = objNull;
|
|
|
|
GVAR(EH_ID) = 0;
|
|
GVAR(lastSearchTextLeft) = "";
|
|
GVAR(lastSearchTextRight) = "";
|
|
GVAR(lastSearchTextLoadouts) = "";
|
|
GVAR(lastSortLeft) = "";
|
|
GVAR(lastSortRight) = "";
|
|
GVAR(lastSortDirectionLeft) = DESCENDING;
|
|
GVAR(lastSortDirectionRight) = DESCENDING;
|
|
|
|
[QGVAR(initBox), LINKFUNC(initBox)] call CBA_fnc_addEventHandler;
|
|
[QGVAR(removeBox), LINKFUNC(removeBox)] call CBA_fnc_addEventHandler;
|
|
[QGVAR(addDefaultLoadout), LINKFUNC(addDefaultLoadout)] call CBA_fnc_addEventHandler;
|
|
[QGVAR(removeDefaultLoadout), LINKFUNC(removeDefaultLoadout)] call CBA_fnc_addEventHandler;
|
|
[QGVAR(renameDefaultLoadout), LINKFUNC(renameDefaultLoadout)] call CBA_fnc_addEventHandler;
|
|
|
|
[QGVAR(broadcastFace), {
|
|
params ["_unit", "_face"];
|
|
_unit setFace _face;
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
[QGVAR(broadcastVoice), {
|
|
params ["_unit", "_voice"];
|
|
_unit setSpeaker _voice;
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
[QGVAR(loadoutUnshared), {
|
|
params ["_contentPanelCtrl" , "_playerName", "_loadoutName"];
|
|
|
|
// If player is in arsenal in the shared tab and a loadout is unshared at the same time
|
|
if (!isNil QGVAR(currentLoadoutsTab) && {GVAR(currentLoadoutsTab) == IDC_buttonSharedLoadouts}) then {
|
|
private _dataToCheck = _playerName + _loadoutName;
|
|
|
|
for "_lbIndex" from 0 to (lnbSize _contentPanelCtrl select 0) - 1 do {
|
|
if ((_contentPanelCtrl lnbData [_lbIndex, 1]) == _dataToCheck) exitWith {
|
|
_contentPanelCtrl lnbDeleteRow _lbIndex;
|
|
};
|
|
};
|
|
} else {
|
|
if (profileName == _playerName && {!(isNil QGVAR(currentLoadoutsTab) && {GVAR(currentLoadoutsTab) == IDC_buttonMyLoadouts})}) then {
|
|
for "_lbIndex" from 0 to (lnbSize _contentPanelCtrl select 0) - 1 do {
|
|
if ((_contentPanelCtrl lnbText [_lbIndex, 1]) == _loadoutName) exitWith {
|
|
_contentPanelCtrl lnbSetPicture [[_lbIndex, 0], QPATHTOF(data\iconPublicBlank.paa)];
|
|
_contentPanelCtrl lnbSetValue [[_lbIndex, 0], 0];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
[QGVAR(loadoutShared), {
|
|
params ["_contentPanelCtrl", "_loadoutArgs"];
|
|
_loadoutArgs params ["_playerName", "_loadoutName", "_loadoutData"];
|
|
|
|
// If player is in arsenal in the shared tab and a loadout is shared at the same time
|
|
if (!isNil QGVAR(currentLoadoutsTab) && {GVAR(currentLoadoutsTab) == IDC_buttonSharedLoadouts}) then {
|
|
private _curSelData = _contentPanelCtrl lnbData [lnbCurSelRow _contentPanelCtrl, 1];
|
|
|
|
([_loadoutData] call FUNC(verifyLoadout)) params ["_extendedLoadout", "_nullItemsAmount", "_unavailableItemsAmount"];
|
|
_extendedLoadout params ["_loadout"];
|
|
|
|
private _newRow = _contentPanelCtrl lnbAddRow [_playerName, _loadoutName];
|
|
private _cfgWeapons = configFile >> "CfgWeapons";
|
|
|
|
ADD_LOADOUTS_LIST_PICTURES
|
|
|
|
_contentPanelCtrl lnbSetData [[_newRow, 1], _playerName + _loadoutName];
|
|
|
|
// Set color of row, depending if items are unavailable/missing
|
|
if (_nullItemsAmount > 0) then {
|
|
_contentPanelCtrl lnbSetColor [[_newRow, 1], [1, 0, 0, 0.8]];
|
|
} else {
|
|
if (_unavailableItemsAmount > 0) then {
|
|
_contentPanelCtrl lnbSetColor [[_newRow, 1], [1, 1, 1, 0.25]];
|
|
};
|
|
};
|
|
|
|
// Sort loadouts alphabetically
|
|
_contentPanelCtrl lnbSort [1, false];
|
|
|
|
// Select previously selected loadout
|
|
for "_lbIndex" from 0 to (lnbSize _contentPanelCtrl select 0) - 1 do {
|
|
if ((_contentPanelCtrl lnbText [_lbIndex, 1]) == _curSelData) exitWith {
|
|
_contentPanelCtrl lnbSetCurSelRow _lbIndex
|
|
};
|
|
};
|
|
};
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
["CBA_loadoutSet", {
|
|
params ["_unit", "_loadout", "_extendedInfo"];
|
|
|
|
// Set face
|
|
private _face = _extendedInfo getOrDefault [QGVAR(face), ""];
|
|
|
|
if (_face != "") then {
|
|
if (isMultiplayer) then {
|
|
private _id = [QGVAR(broadcastFace), [_unit, _face], QGVAR(centerFace_) + netId _unit] call CBA_fnc_globalEventJIP;
|
|
[_id, _unit] call CBA_fnc_removeGlobalEventJIP;
|
|
} else {
|
|
_unit setFace _face;
|
|
};
|
|
};
|
|
|
|
// Set voice
|
|
private _voice = _extendedInfo getOrDefault [QGVAR(voice), ""];
|
|
|
|
if (_voice != "") then {
|
|
if (isMultiplayer) then {
|
|
private _id = [QGVAR(broadcastVoice), [_unit, _voice], QGVAR(centerVoice_) + netId _unit] call CBA_fnc_globalEventJIP;
|
|
[_id, _unit] call CBA_fnc_removeGlobalEventJIP;
|
|
} else {
|
|
_unit setSpeaker _voice;
|
|
};
|
|
};
|
|
|
|
// Set insignia
|
|
private _insignia = _extendedInfo getOrDefault [QGVAR(insignia), ""];
|
|
|
|
if (_insignia != "") then {
|
|
_unit setVariable ["BIS_fnc_setUnitInsignia_class", nil];
|
|
[_unit, _insignia] call BIS_fnc_setUnitInsignia;
|
|
};
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
["CBA_loadoutGet", {
|
|
params ["_unit", "_loadout", "_extendedInfo"];
|
|
|
|
// Set face if enabled
|
|
if (GVAR(loadoutsSaveFace)) then {
|
|
_extendedInfo set [QGVAR(face), face _unit];
|
|
};
|
|
|
|
// Set voice if enabled
|
|
if (GVAR(loadoutsSaveVoice)) then {
|
|
_extendedInfo set [QGVAR(voice), speaker _unit];
|
|
};
|
|
|
|
// Set insignia if enabled
|
|
if (GVAR(loadoutsSaveInsignia)) then {
|
|
private _insignia = _unit call BIS_fnc_getUnitInsignia;
|
|
|
|
if (_insignia != "") then {
|
|
_extendedInfo set [QGVAR(insignia), _insignia];
|
|
};
|
|
};
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
// Compatibility for RHS attachment system. Also used by NIArms.
|
|
// Will only work for ACE_player, different arsenal centers will be ignored. RHS limitation.
|
|
if (!isNil "rhs_fnc_accGripod") then {
|
|
[QEGVAR(arsenal,weaponItemChanged), {
|
|
params ["_weapon", "_item", "_itemIndex"];
|
|
if (EGVAR(arsenal,center) != ACE_player) exitWith {};
|
|
|
|
switch (_itemIndex) do {
|
|
case ITEM_INDEX_SIDE: {
|
|
call rhs_fnc_anpeq15_rail;
|
|
};
|
|
case ITEM_INDEX_BIPOD: {
|
|
// Need this call to make sure RHS's functions are set
|
|
call rhs_fnc_accGripod;
|
|
if (getText (configFile >> "CfgWeapons" >> _item >> "rhs_grip_type") == "") then {
|
|
call rhs_grip_deinitialize;
|
|
};
|
|
};
|
|
};
|
|
}] call CBA_fnc_addEventHandler;
|
|
};
|