mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Arsenal/Compat RHS - Improve support for RHS attachments (#9386)
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
This commit is contained in:
parent
6029e75aea
commit
ac29287542
@ -149,3 +149,25 @@ GVAR(lastSortDirectionRight) = DESCENDING;
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] 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;
|
||||||
|
};
|
||||||
|
@ -22,6 +22,14 @@
|
|||||||
// Favorites
|
// Favorites
|
||||||
#define FAVORITES_COLOR (GVAR(favoritesColor) + [1])
|
#define FAVORITES_COLOR (GVAR(favoritesColor) + [1])
|
||||||
|
|
||||||
|
// Attachments
|
||||||
|
#define ITEM_INDEX_MUZZLE 0
|
||||||
|
#define ITEM_INDEX_SIDE 1
|
||||||
|
#define ITEM_INDEX_OPTIC 2
|
||||||
|
#define ITEM_INDEX_BIPOD 3
|
||||||
|
#define ITEM_INDEX_MAGAZINE 4
|
||||||
|
#define ITEM_INDEX_MAGAZINE_SECONDARY 5
|
||||||
|
|
||||||
// IDCs
|
// IDCs
|
||||||
#define IDD_ace_arsenal 1127001
|
#define IDD_ace_arsenal 1127001
|
||||||
#define IDC_mouseArea 0
|
#define IDC_mouseArea 0
|
||||||
|
@ -57,6 +57,9 @@ switch (_currentItemsIndex) do {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Call event for compatibility
|
||||||
|
[QGVAR(weaponItemChanged), [primaryWeapon GVAR(center), _item, _itemIndex]] call CBA_fnc_localEvent;
|
||||||
|
|
||||||
// Update currentItems
|
// Update currentItems
|
||||||
(getUnitLoadout GVAR(center) select IDX_LOADOUT_PRIMARY_WEAPON) params ["", "_muzzle", "_flashlight", "_optics", "_primaryMagazine", "_secondaryMagazine", "_bipod"];
|
(getUnitLoadout GVAR(center) select IDX_LOADOUT_PRIMARY_WEAPON) params ["", "_muzzle", "_flashlight", "_optics", "_primaryMagazine", "_secondaryMagazine", "_bipod"];
|
||||||
GVAR(currentItems) set [IDX_CURR_PRIMARY_WEAPON_ITEMS, [_muzzle, _flashlight, _optics, _bipod, _primaryMagazine param [0, ""], _secondaryMagazine param [0, ""]]];
|
GVAR(currentItems) set [IDX_CURR_PRIMARY_WEAPON_ITEMS, [_muzzle, _flashlight, _optics, _bipod, _primaryMagazine param [0, ""], _secondaryMagazine param [0, ""]]];
|
||||||
@ -102,6 +105,9 @@ switch (_currentItemsIndex) do {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Call event for compatibility
|
||||||
|
[QGVAR(weaponItemChanged), [secondaryWeapon GVAR(center), _item, _itemIndex]] call CBA_fnc_localEvent;
|
||||||
|
|
||||||
// Update currentItems
|
// Update currentItems
|
||||||
if !(_isDisposable && {_itemIndex >= 4}) then {
|
if !(_isDisposable && {_itemIndex >= 4}) then {
|
||||||
(getUnitLoadout GVAR(center) select IDX_LOADOUT_SECONDARY_WEAPON) params ["", "_muzzle", "_flashlight", "_optics", "_primaryMagazine", "_secondaryMagazine", "_bipod"];
|
(getUnitLoadout GVAR(center) select IDX_LOADOUT_SECONDARY_WEAPON) params ["", "_muzzle", "_flashlight", "_optics", "_primaryMagazine", "_secondaryMagazine", "_bipod"];
|
||||||
@ -141,6 +147,9 @@ switch (_currentItemsIndex) do {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Call event for compatibility
|
||||||
|
[QGVAR(weaponItemChanged), [handgunWeapon GVAR(center), _item, _itemIndex]] call CBA_fnc_localEvent;
|
||||||
|
|
||||||
// Update currentItems
|
// Update currentItems
|
||||||
(getUnitLoadout GVAR(center) select IDX_LOADOUT_HANDGUN_WEAPON) params ["", "_muzzle", "_flashlight", "_optics", "_primaryMagazine", "_secondaryMagazine", "_bipod"];
|
(getUnitLoadout GVAR(center) select IDX_LOADOUT_HANDGUN_WEAPON) params ["", "_muzzle", "_flashlight", "_optics", "_primaryMagazine", "_secondaryMagazine", "_bipod"];
|
||||||
GVAR(currentItems) set [IDX_CURR_HANDGUN_WEAPON_ITEMS, [_muzzle, _flashlight, _optics, _bipod, _primaryMagazine param [0, ""], _secondaryMagazine param [0, ""]]];
|
GVAR(currentItems) set [IDX_CURR_HANDGUN_WEAPON_ITEMS, [_muzzle, _flashlight, _optics, _bipod, _primaryMagazine param [0, ""], _secondaryMagazine param [0, ""]]];
|
||||||
@ -178,6 +187,9 @@ switch (_currentItemsIndex) do {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Call event for compatibility
|
||||||
|
[QGVAR(weaponItemChanged), [binocular GVAR(center), _item, _itemIndex]] call CBA_fnc_localEvent;
|
||||||
|
|
||||||
// Update currentItems
|
// Update currentItems
|
||||||
(getUnitLoadout GVAR(center) select IDX_LOADOUT_BINO) params ["", "_muzzle", "_flashlight", "_optics", "_primaryMagazine", "_secondaryMagazine", "_bipod"];
|
(getUnitLoadout GVAR(center) select IDX_LOADOUT_BINO) params ["", "_muzzle", "_flashlight", "_optics", "_primaryMagazine", "_secondaryMagazine", "_bipod"];
|
||||||
GVAR(currentItems) set [IDX_CURR_BINO_ITEMS, [_muzzle, _flashlight, _optics, _bipod, _primaryMagazine param [0, ""], _secondaryMagazine param [0, ""]]];
|
GVAR(currentItems) set [IDX_CURR_BINO_ITEMS, [_muzzle, _flashlight, _optics, _bipod, _primaryMagazine param [0, ""], _secondaryMagazine param [0, ""]]];
|
||||||
|
@ -280,3 +280,13 @@ uiNamespace setVariable [QGVAR(putCache), _putList];
|
|||||||
uiNamespace setVariable [QGVAR(magazineMiscItems), _magazineMiscItems];
|
uiNamespace setVariable [QGVAR(magazineMiscItems), _magazineMiscItems];
|
||||||
uiNamespace setVariable [QGVAR(CBAdisposableLaunchers), _launchers];
|
uiNamespace setVariable [QGVAR(CBAdisposableLaunchers), _launchers];
|
||||||
uiNamespace setVariable [QGVAR(configItemsTools), _toolList];
|
uiNamespace setVariable [QGVAR(configItemsTools), _toolList];
|
||||||
|
|
||||||
|
// Compatibility: Override baseWeapon for RHS optics
|
||||||
|
// No good way to do this via script for other attachments, needs manual compat
|
||||||
|
private _baseWeaponCache = uiNamespace getVariable QGVAR(baseWeaponNameCache);
|
||||||
|
{
|
||||||
|
private _baseAttachment = configName (_cfgWeapons >> getText (_x >> "rhs_optic_base"));
|
||||||
|
if (_baseAttachment != "") then {
|
||||||
|
_baseWeaponCache set [toLower configName _x, _baseAttachment];
|
||||||
|
};
|
||||||
|
} forEach ("getText (_x >> 'rhs_optic_base') != ''" configClasses _cfgWeapons);
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
class CfgWeapons {
|
||||||
|
// Last update: RHSAFRF 0.5.6
|
||||||
|
class rhs_acc_perst3;
|
||||||
|
class rhs_acc_perst3_2dp: rhs_acc_perst3 {
|
||||||
|
baseWeapon = "rhs_acc_perst3_2dp";
|
||||||
|
};
|
||||||
|
};
|
18
addons/compat_rhs_afrf3/compat_rhs_afrf3_arsenal/config.cpp
Normal file
18
addons/compat_rhs_afrf3/compat_rhs_afrf3_arsenal/config.cpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
class CfgPatches {
|
||||||
|
class SUBADDON {
|
||||||
|
addonRootClass = QUOTE(COMPONENT);
|
||||||
|
units[] = {};
|
||||||
|
weapons[] = {};
|
||||||
|
requiredVersion = REQUIRED_VERSION;
|
||||||
|
requiredAddons[] = {
|
||||||
|
"rhs_main_loadorder",
|
||||||
|
"ace_arsenal"
|
||||||
|
};
|
||||||
|
skipWhenMissingDependencies = 1;
|
||||||
|
VERSION_CONFIG;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
//#include "CfgWeapons.hpp"
|
@ -0,0 +1,3 @@
|
|||||||
|
#define SUBCOMPONENT arsenal
|
||||||
|
#define SUBCOMPONENT_BEAUTIFIED Arsenal
|
||||||
|
#include "..\script_component.hpp"
|
@ -0,0 +1,50 @@
|
|||||||
|
class CfgWeapons {
|
||||||
|
// Last update: RHSUSAF 0.5.6
|
||||||
|
class acc_pointer_IR;
|
||||||
|
class rhsusf_acc_anpeq15: acc_pointer_IR {
|
||||||
|
baseWeapon = "rhsusf_acc_anpeq15";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_anpeq15_bk: rhsusf_acc_anpeq15 {
|
||||||
|
baseWeapon = "rhsusf_acc_anpeq15_bk";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_anpeq15_light;
|
||||||
|
class rhsusf_acc_anpeq15_bk_light: rhsusf_acc_anpeq15_light {
|
||||||
|
baseWeapon = "rhsusf_acc_anpeq15_bk";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_anpeq15_wmx: rhsusf_acc_anpeq15 {
|
||||||
|
baseWeapon = "rhsusf_acc_anpeq15_wmx";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_anpeq15_wmx_light: rhsusf_acc_anpeq15_light {
|
||||||
|
baseWeapon = "rhsusf_acc_anpeq15_wmx";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_M952V: rhsusf_acc_anpeq15_light {
|
||||||
|
baseWeapon = "rhsusf_acc_M952V";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_wmx: rhsusf_acc_M952V {
|
||||||
|
baseWeapon = "rhsusf_acc_wmx";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_wmx_bk: rhsusf_acc_M952V {
|
||||||
|
baseWeapon = "rhsusf_acc_wmx_bk";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_anpeq15A: acc_pointer_IR {
|
||||||
|
baseWeapon = "rhsusf_acc_anpeq15A";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_anpeq15side: acc_pointer_IR {
|
||||||
|
baseWeapon = "rhsusf_acc_anpeq15side";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_anpeq15side_bk: rhsusf_acc_anpeq15side {
|
||||||
|
baseWeapon = "rhsusf_acc_anpeq15side_bk";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_anpeq16a: rhsusf_acc_anpeq15 {
|
||||||
|
baseWeapon = "rhsusf_acc_anpeq16a";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_anpeq16a_light: rhsusf_acc_anpeq15_light {
|
||||||
|
baseWeapon = "rhsusf_acc_anpeq16a";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_anpeq16a_top: rhsusf_acc_anpeq16a {
|
||||||
|
baseWeapon = "rhsusf_acc_anpeq16a_top";
|
||||||
|
};
|
||||||
|
class rhsusf_acc_anpeq16a_light_top: rhsusf_acc_anpeq16a_light {
|
||||||
|
baseWeapon = "rhsusf_acc_anpeq16a_top";
|
||||||
|
};
|
||||||
|
};
|
18
addons/compat_rhs_usf3/compat_rhs_usf3_arsenal/config.cpp
Normal file
18
addons/compat_rhs_usf3/compat_rhs_usf3_arsenal/config.cpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
class CfgPatches {
|
||||||
|
class SUBADDON {
|
||||||
|
addonRootClass = QUOTE(COMPONENT);
|
||||||
|
units[] = {};
|
||||||
|
weapons[] = {};
|
||||||
|
requiredVersion = REQUIRED_VERSION;
|
||||||
|
requiredAddons[] = {
|
||||||
|
"rhsusf_main_loadorder",
|
||||||
|
"ace_arsenal"
|
||||||
|
};
|
||||||
|
skipWhenMissingDependencies = 1;
|
||||||
|
VERSION_CONFIG;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "CfgWeapons.hpp"
|
@ -0,0 +1,3 @@
|
|||||||
|
#define SUBCOMPONENT arsenal
|
||||||
|
#define SUBCOMPONENT_BEAUTIFIED Arsenal
|
||||||
|
#include "..\script_component.hpp"
|
@ -501,6 +501,7 @@ All are local.
|
|||||||
| ace_arsenal_loadoutsDisplayClosed | None | 3.12.3 |
|
| ace_arsenal_loadoutsDisplayClosed | None | 3.12.3 |
|
||||||
| ace_arsenal_loadoutsTabChanged | loadouts screen display (DISPLAY), tab control (CONTROL) | 3.12.3 |
|
| ace_arsenal_loadoutsTabChanged | loadouts screen display (DISPLAY), tab control (CONTROL) | 3.12.3 |
|
||||||
| ace_arsenal_loadoutsListFilled | loadouts screen display (DISPLAY), tab control (CONTROL) | 3.12.3 |
|
| ace_arsenal_loadoutsListFilled | loadouts screen display (DISPLAY), tab control (CONTROL) | 3.12.3 |
|
||||||
|
| ace_arsenal_weaponItemChanged | weapon classname (STRING), item classname (STRING), item index (NUMBER, 0-5: muzzle, side, optic, bipod, magazine, underbarrel) | 3.16.0 |
|
||||||
|
|
||||||
## 9. Custom sub item categories
|
## 9. Custom sub item categories
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user