Split cache and EH to functions

This commit is contained in:
jonpas 2016-07-23 15:52:20 +02:00
parent c5edc00ee9
commit 9b4f565cc5
5 changed files with 93 additions and 53 deletions

View File

@ -1,6 +1,8 @@
PREP(addCustomTag);
PREP(addTagActions);
PREP(applyCustomTag);
PREP(checkTaggable);
PREP(compileConfigTags);
PREP(createTag);
PREP(tag);
PREP(tagRandom);

View File

@ -40,59 +40,11 @@ for "_index" from 0 to (_countOptions - 1) do {
};
if (hasInterface) then {
// Cache tags
{
private _failure = false;
private _class = configName _x;
// Compile and cache config tags
call FUNC(compileConfigTags);
private _displayName = getText (_x >> "displayName");
if (_displayName == "") then {
ACE_LOGERROR_1("Failed compiling ACE_Tags for tag: %1 - missing displayName",_class);
_failure = true;
};
private _requiredItem = toLower (getText (_x >> "requiredItem"));
if (_requiredItem == "") then {
ACE_LOGERROR_1("Failed compiling ACE_Tags for tag: %1 - missing requiredItem",_class);
_failure = true;
} else {
if (!isClass (configFile >> "CfgWeapons" >> _requiredItem)) then {
ACE_LOGERROR_2("Failed compiling ACE_Tags for tag: %1 - requiredItem %2 does not exist",_class,_requiredItem);
_failure = true;
};
};
private _textures = getArray (_x >> "textures");
if (_textures isEqualTo []) then {
ACE_LOGERROR_1("Failed compiling ACE_Tags for tag: %1 - missing textures",_class);
_failure = true;
};
private _icon = getText (_x >> "icon");
if (!_failure) then {
GVAR(cachedTags) pushBack [_class, _displayName, _requiredItem, _textures, _icon];
if !(_requiredItem in GVAR(cachedRequiredItems)) then {
GVAR(cachedRequiredItems) pushBack _requiredItem;
};
};
} forEach ("true" configClasses (configFile >> "ACE_Tags"));
// Scripted tag adding
[QGVAR(addCustomTag), {
params ["_identifier", "_displayName", "_requiredItem"];
// Add only if tag not already added (compare identifiers)
if (GVAR(cachedTags) select {_x select 0 == _identifier} isEqualTo []) then {
GVAR(cachedTags) pushBack _this;
if !(_requiredItem in GVAR(cachedRequiredItems)) then {
GVAR(cachedRequiredItems) pushBack _requiredItem;
};
TRACE_1("Added custom script tag",_this);
} else {
ACE_LOGINFO_2("Tag with selected identifier already exists: %1 (%2)",_identifier,_displayName)
};
}] call CBA_fnc_addEventHandler;
// Scripted tag adding EH
[QGVAR(applyCustomTag), FUNC(applyCustomTag)] call CBA_fnc_addEventHandler;
};
if (!isServer) exitWith {};

View File

@ -51,4 +51,4 @@ _identifier = [_identifier] call EFUNC(common,stringRemoveWhiteSpace);
_requiredItem = toLower _requiredItem;
// Add
[QGVAR(addCustomTag), [_identifier, _displayName, _requiredItem, _textures, _icon]] call CBA_fnc_globalEventJIP;
[QGVAR(applyCustomTag), [_identifier, _displayName, _requiredItem, _textures, _icon]] call CBA_fnc_globalEventJIP;

View File

@ -0,0 +1,33 @@
/*
* Author: Jonpas
* Applies custom tag to the cache.
*
* Arguments:
* 0: Unique Identifier <STRING>
* 1: Display Name <STRING>
* 2: Required Item <STRING>
* 3: Textures Paths <ARRAY>
* 4: Icon Path <STRING> (default: "")
*
* Return Value:
* None
*
* Example:
* ["ace_victoryRed", "Victory Red", "ACE_SpraypaintRed", ["path\to\texture1.paa", "path\to\texture2.paa"], "path\to\icon.paa"] call ace_tagging_fnc_addCustomTagLocal
*
* Public: No
*/
#include "script_component.hpp"
params ["_identifier", "_displayName", "_requiredItem"];
// Add only if tag not already added (compare identifiers)
if (GVAR(cachedTags) select {_x select 0 == _identifier} isEqualTo []) then {
GVAR(cachedTags) pushBack _this;
if !(_requiredItem in GVAR(cachedRequiredItems)) then {
GVAR(cachedRequiredItems) pushBack _requiredItem;
};
TRACE_1("Added custom script tag",_this);
} else {
ACE_LOGINFO_2("Tag with selected identifier already exists: %1 (%2)",_identifier,_displayName)
};

View File

@ -0,0 +1,53 @@
/*
* Author: Jonpas
* Compiles and caches tags from ACE_Tags config.
*
* Arguments:
* None
*
* Return Value:
* None
*
* Example:
* [] call ace_tagging_fnc_compileConfigTags
*
* Public: No
*/
#include "script_component.hpp"
{
private _failure = false;
private _class = configName _x;
private _displayName = getText (_x >> "displayName");
if (_displayName == "") then {
ACE_LOGERROR_1("Failed compiling ACE_Tags for tag: %1 - missing displayName",_class);
_failure = true;
};
private _requiredItem = toLower (getText (_x >> "requiredItem"));
if (_requiredItem == "") then {
ACE_LOGERROR_1("Failed compiling ACE_Tags for tag: %1 - missing requiredItem",_class);
_failure = true;
} else {
if (!isClass (configFile >> "CfgWeapons" >> _requiredItem)) then {
ACE_LOGERROR_2("Failed compiling ACE_Tags for tag: %1 - requiredItem %2 does not exist",_class,_requiredItem);
_failure = true;
};
};
private _textures = getArray (_x >> "textures");
if (_textures isEqualTo []) then {
ACE_LOGERROR_1("Failed compiling ACE_Tags for tag: %1 - missing textures",_class);
_failure = true;
};
private _icon = getText (_x >> "icon");
if (!_failure) then {
GVAR(cachedTags) pushBack [_class, _displayName, _requiredItem, _textures, _icon];
if !(_requiredItem in GVAR(cachedRequiredItems)) then {
GVAR(cachedRequiredItems) pushBack _requiredItem;
};
};
} forEach ("true" configClasses (configFile >> "ACE_Tags"));