Functions to perform arithmetic ops on sets (#4514)

* Functions to perform arithmetic ops on a set

* fix spelling
This commit is contained in:
PabstMirror 2016-10-06 03:18:14 -05:00 committed by commy2
parent 2e147b37f0
commit dfa09d3161
3 changed files with 110 additions and 0 deletions

View File

@ -7,6 +7,8 @@ PREP(addToInventory);
PREP(assignedItemFix); PREP(assignedItemFix);
PREP(assignObjectsInList); PREP(assignObjectsInList);
PREP(ambientBrightness); PREP(ambientBrightness);
PREP(arithmeticGetResult);
PREP(arithmeticSetSource);
PREP(ASLToPosition); PREP(ASLToPosition);
PREP(binarizeNumber); PREP(binarizeNumber);
PREP(blurScreen); PREP(blurScreen);

View File

@ -0,0 +1,69 @@
/*
* Author: PabstMirror
* Gets arithmetic result from a set.
*
* Arguments:
* 0: Namespace <OBJECT><LOCATION><MISSIONNAMESPACE>
* 1: Number Set ID <STRING>
* 2: Operation (sum, product, min, max, avg) <STRING>
*
* Return Value:
* <NUMBER>
*
* Example:
* [ace_player, "ace_aimCoefficents", "product"] call ace_common_fnc_arithmeticGetResult
* [missionNameSpace, "ace_hearing", "min"] call ace_common_fnc_arithmeticGetResult
*
* Public: Yes
*/
// #define DEBUG_MODE_FULL
#include "script_component.hpp"
params ["_namespace", "_setID", "_op"];
TRACE_3("params",_namespace,_setID,_op);
private _data = (_namespace getVariable _setID) param [2, []];
switch (_op) do {
case ("sum"): {
private _result = 0;
{
_result = _result + (call _x);
nil
} count _data;
_result // return
};
case ("product"): {
private _result = 1;
{
_result = _result * (call _x);
nil
} count _data;
_result // return
};
case ("min"): {
private _result = 1e99;
{
_result = _result min (call _x);
nil
} count _data;
_result // return
};
case ("max"): {
private _result = -1e99;
{
_result = _result max (call _x);
nil
} count _data;
_result // return
};
case ("avg"): {
private _result = 0;
{
_result = _result + (call _x);
nil
} count _data;
_result / (count _data); // return
};
default {3735928559};
};

View File

@ -0,0 +1,39 @@
/*
* Author: PabstMirror
* Adds or removes a source to an arithmetic set.
*
* Arguments:
* 0: Namespace <OBJECT><LOCATION><MISSIONNAMESPACE>
* 1: Number Set ID <STRING>
* 2: Source <STRING>
* 3: Code that returns a number (can access var _namespace) [use {} to remove] <CODE>
*
* Return Value:
* Nothing
*
* Example:
* [missionNameSpace, "ace_hearing", "myMission", {0.5}] call ace_common_fnc_arithmeticSetSource
* [ace_player, "ace_aimCoefficents", "ace_medical", {linearConversion [0,1,(_namespace getVariable "ace_medical_pain",1,0.2,true]}] call ace_common_fnc_arithmeticSetSource
*
* Public: Yes
*/
// #define DEBUG_MODE_FULL
#include "script_component.hpp"
params ["_namespace", "_setID", "_source", "_variable"];
TRACE_4("params",_namespace,_setID,_source,_variable);
private _hash = _namespace getVariable _setID;
if (isNil "_hash") then {
_hash = [] call CBA_fnc_hashCreate;
_namespace setVariable [_setID, _hash];
};
if (_variable isEqualTo {}) then {
TRACE_1("removing",_source);
[_hash, _source] call CBA_fnc_hashRem;
} else {
TRACE_2("adding",_source,_variable);
[_hash, _source, _variable] call CBA_fnc_hashSet;
};
nil