Arsenal - Always show muzzle velocity even if not configured for AB (#9457)

This commit is contained in:
PabstMirror 2023-10-04 13:21:07 -05:00 committed by GitHub
parent 8143cdc1da
commit 98e189bfb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 52 additions and 40 deletions

View File

@ -13,36 +13,43 @@
* Public: No * Public: No
*/ */
params ["", "_config"]; params ["", "_configMagazine"];
if (EGVAR(arsenal,currentLeftPanel) == 2002) then { if (EGVAR(arsenal,currentLeftPanel) == 2002) then {
private _primaryMag = primaryWeaponMagazine EGVAR(arsenal,center); private _primaryMag = primaryWeaponMagazine EGVAR(arsenal,center);
[primaryWeapon EGVAR(arsenal,center), _primaryMag param [0, ""]]
[primaryWeapon EGVAR(arsenal,center), configName _config]
} else { } else {
private _primaryMag = handgunMagazine EGVAR(arsenal,center); private _primaryMag = handgunMagazine EGVAR(arsenal,center);
[handgunWeapon EGVAR(arsenal,center), _primaryMag param [0, ""]]
[handgunWeapon EGVAR(arsenal,center), configName _config]
} params ["_weapon", "_magazine"]; } params ["_weapon", "_magazine"];
if (_magazine isEqualTo "") then { // we might be looking at random mags not related to our weapon
localize "str_empty"; private _magIsForCurrentWeapon = (configName _configMagazine == _magazine) && {_weapon != ""};
} else { private _configWeapon = configNull;
private _weaponCfg = configFile >> "CfgWeapons" >> _weapon;
private _ammoCfg = (configFile >> "CfgAmmo" >> (getText (configFile >> "CfgMagazines" >> _magazine >> "ammo")));
private _barrelLength = getNumber (_weaponCfg >> "ACE_barrelLength");
private _muzzleVelocityTable = getArray (_ammoCfg >> "ACE_muzzleVelocities");
private _barrelLengthTable = getArray (_ammoCfg >> "ACE_barrelLengths");
if (_barrelLength != 0 && {count _muzzleVelocityTable > 0} && {count _barrelLengthTable > 0}) then { private _muzzleVelocity = getNumber (_configMagazine >> "initSpeed");
private _muzzleVelocity = if (["ace_advanced_ballistics"] call EFUNC(common,isModLoaded)) then { private _initSpeedCoef = 0;
[_barrelLength, _muzzleVelocityTable, _barrelLengthTable, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift); if (_magIsForCurrentWeapon) then {
} else { _configWeapon = configFile >> "CfgWeapons" >> _weapon;
getNumber (_config >> "initSpeed") _initSpeedCoef = getNumber (_configWeapon >> "initSpeed");
}; };
if (_initSpeedCoef < 0) then {
_muzzleVelocity = _muzzleVelocity * -_initSpeedCoef;
};
if (_initSpeedCoef > 0) then {
_muzzleVelocity = _initSpeedCoef;
};
format ["%1 m/s (%2 ft/s)", _muzzleVelocity toFixed 0, (_muzzleVelocity * 3.28084) toFixed 0] private _abAdjustText = "";
} else { if (_magIsForCurrentWeapon && {["ace_advanced_ballistics"] call EFUNC(common,isModLoaded)}) then {
localize "str_empty"; private _configAmmo = (configFile >> "CfgAmmo" >> (getText (_configMagazine >> "ammo")));
private _barrelLength = getNumber (_configWeapon >> "ACE_barrelLength");
private _muzzleVelocityTable = getArray (_configAmmo >> "ACE_muzzleVelocities");
private _barrelLengthTable = getArray (_configAmmo >> "ACE_barrelLengths");
private _abShift = [_barrelLength, _muzzleVelocityTable, _barrelLengthTable, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift);
if (_abShift != 0) then {
_abAdjustText = " [AB]",
_muzzleVelocity = _abShift;
}; };
}; };
format ["%1 m/s (%2 ft/s)%3", _muzzleVelocity toFixed 0, (_muzzleVelocity * 3.28084) toFixed 0, _abAdjustText]

View File

@ -13,35 +13,40 @@
* Public: No * Public: No
*/ */
params ["", "_config"]; params ["", "_configWeapon"];
if (EGVAR(arsenal,currentLeftPanel) == 2002) then { if (EGVAR(arsenal,currentLeftPanel) == 2002) then {
private _primaryMag = primaryWeaponMagazine EGVAR(arsenal,center); private _primaryMag = primaryWeaponMagazine EGVAR(arsenal,center);
[primaryWeapon EGVAR(arsenal,center), _primaryMag param [0, ""]] [primaryWeapon EGVAR(arsenal,center), _primaryMag param [0, ""]]
} else { } else {
private _primaryMag = handgunMagazine EGVAR(arsenal,center); private _primaryMag = handgunMagazine EGVAR(arsenal,center);
[handgunWeapon EGVAR(arsenal,center), _primaryMag param [0, ""]] [handgunWeapon EGVAR(arsenal,center), _primaryMag param [0, ""]]
} params ["_weapon", "_magazine"]; } params ["_weapon", "_magazine"];
if (_magazine isEqualTo "") then { if (_magazine isEqualTo "") then {
localize "str_empty"; localize "str_empty";
} else { } else {
private _ammoCfg = (configFile >> "CfgAmmo" >> (getText (configFile >> "CfgMagazines" >> _magazine >> "ammo"))); private _configMagazine = configFile >> "CfgMagazines" >> _magazine;
private _barrelLength = getNumber (_config >> "ACE_barrelLength"); private _muzzleVelocity = getNumber (_configMagazine >> "initSpeed");
private _muzzleVelocityTable = getArray (_ammoCfg >> "ACE_muzzleVelocities"); private _initSpeedCoef = getNumber (_configWeapon >> "initSpeed");
private _barrelLengthTable = getArray (_ammoCfg >> "ACE_barrelLengths"); if (_initSpeedCoef < 0) then {
_muzzleVelocity = _muzzleVelocity * -_initSpeedCoef;
if (_barrelLength != 0 && {count _muzzleVelocityTable > 0} && {count _barrelLengthTable > 0}) then { };
private _muzzleVelocity = if (["ace_advanced_ballistics"] call EFUNC(common,isModLoaded)) then { if (_initSpeedCoef > 0) then {
[_barrelLength, _muzzleVelocityTable, _barrelLengthTable, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift); _muzzleVelocity = _initSpeedCoef;
} else {
getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed")
}; };
format ["%1 m/s (%2 ft/s)", _muzzleVelocity toFixed 0, (_muzzleVelocity * 3.28084) toFixed 0] private _abAdjustText = "";
} else { if (["ace_advanced_ballistics"] call EFUNC(common,isModLoaded)) then {
localize "str_empty"; private _configAmmo = (configFile >> "CfgAmmo" >> (getText (_configMagazine >> "ammo")));
private _barrelLength = getNumber (_configWeapon >> "ACE_barrelLength");
private _muzzleVelocityTable = getArray (_configAmmo >> "ACE_muzzleVelocities");
private _barrelLengthTable = getArray (_configAmmo >> "ACE_barrelLengths");
private _abShift = [_barrelLength, _muzzleVelocityTable, _barrelLengthTable, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift);
if (_abShift != 0) then {
_abAdjustText = " [AB]",
_muzzleVelocity = _abShift;
}; };
};
format ["%1 m/s (%2 ft/s)%3", _muzzleVelocity toFixed 0, (_muzzleVelocity * 3.28084) toFixed 0, _abAdjustText]
}; };