#include "..\script_component.hpp" /* * Author: joko // Jonas * Cache the shot data for a given weapon/mag/ammo combination. * Will use the config that has the highest priority. * * Arguments: * 0: Weapon <STRING> * 1: Magazine <STRING> * 2: Ammo <STRING> * * Return Value: * Shot Config <ARRAY>: * 0: Angle <Number> * 1: Range <Number> * 2: Damage <Number> * 3: Offset <Number> * * Example: * ["cannon_125mm","Sh_125mm_APFSDS_T_Green","24Rnd_125mm_APFSDS_T_Green"] call ace_overpressure_fnc_getOverPressureValues * * Public: No */ params ["_weapon", "_ammo", "_magazine"]; TRACE_3("Parameter",_weapon,_magazine,_ammo); // Check cache for weapon/ammo/mag combo private _return = GVAR(cacheHash) get _this; if (!isNil "_return") exitWith { TRACE_3("CacheHit",_weapon,_magazine,_ammo); _return }; // get Priority Array from Config private _array = [ getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(priority)), getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(priority)), getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(priority)) ]; (_array call CBA_fnc_findMax) params ["", ["_indexOfMaxPriority", 0, [0]]]; TRACE_2("Priority Array",_array,_indexOfMaxPriority); // create the Config entry Point private _config = [ (configFile >> "CfgWeapons" >> _weapon), (configFile >> "CfgMagazines" >> _magazine), (configFile >> "CfgAmmo" >> _ammo) ] select _indexOfMaxPriority; TRACE_1("ConfigPath",_config); // get the Variables out of the Configs and populate return array with them _return = [ (getNumber (_config >> QGVAR(angle))), (getNumber (_config >> QGVAR(range))) * GVAR(distanceCoefficient), (getNumber (_config >> QGVAR(damage))), (getNumber (_config >> QGVAR(offset))) ]; GVAR(cacheHash) set [_this, _return]; TRACE_2("Return",_this,_return); _return