mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
use namespace for cargo filters, fixes problem with save games
This commit is contained in:
parent
e2c7576251
commit
f43b287093
@ -2,6 +2,48 @@
|
|||||||
|
|
||||||
if (!hasInterface) exitWith {};
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
|
// cache config
|
||||||
|
// items in the inventory display can only be distinguished by their lb names and pictures
|
||||||
|
// this can cause collisions (mainly weapons with attachments),
|
||||||
|
// but if the item has the same name and picture it at least shouldn't change the filter anyway
|
||||||
|
// luckily we don't need private items, so dummy and parent classes are out of the picture
|
||||||
|
|
||||||
|
GVAR(ItemKeyNamespace) = [] call CBA_fnc_createNamespace;
|
||||||
|
|
||||||
|
private _fnc_addToCache = {
|
||||||
|
private _displayName = getText (_this >> "displayName");
|
||||||
|
private _picture = getText (_this >> "picture");
|
||||||
|
|
||||||
|
// list box seems to delete the leading backslash
|
||||||
|
if (_picture select [0,1] == "\") then {
|
||||||
|
_picture = _picture select [1];
|
||||||
|
};
|
||||||
|
|
||||||
|
GVAR(ItemKeyNamespace) setVariable [format ["%1:%2", _displayName, _picture], _this];
|
||||||
|
};
|
||||||
|
|
||||||
|
// weapons and items
|
||||||
|
{
|
||||||
|
if (getNumber (_x >> "scope") > 0) then {_x call _fnc_addToCache};
|
||||||
|
false
|
||||||
|
} count (
|
||||||
|
("true" configClasses (configFile >> "CfgWeapons")) +
|
||||||
|
("true" configClasses (configFile >> "CfgGlasses"))
|
||||||
|
);
|
||||||
|
|
||||||
|
// magazines
|
||||||
|
{
|
||||||
|
if (getNumber (_x >> "scope") == 2) then {_x call _fnc_addToCache};
|
||||||
|
false
|
||||||
|
} count ("true" configClasses (configFile >> "CfgMagazines"));
|
||||||
|
|
||||||
|
// backpacks
|
||||||
|
{
|
||||||
|
if (getNumber (_x >> "scope") > 0 && {getNumber (_x >> "isBackpack") == 1}) then {_x call _fnc_addToCache};
|
||||||
|
false
|
||||||
|
} count ("true" configClasses (configFile >> "CfgVehicles"));
|
||||||
|
|
||||||
|
|
||||||
GVAR(customFilters) = [];
|
GVAR(customFilters) = [];
|
||||||
GVAR(selectedFilterIndex) = -1;
|
GVAR(selectedFilterIndex) = -1;
|
||||||
|
|
||||||
|
@ -4,47 +4,4 @@ ADDON = false;
|
|||||||
|
|
||||||
#include "XEH_PREP.hpp"
|
#include "XEH_PREP.hpp"
|
||||||
|
|
||||||
// cache config
|
|
||||||
// items in the inventory display can only be distinguished by their lb names and pictures
|
|
||||||
// this can cause collisions (mainly weapons with attachments),
|
|
||||||
// but if the item has the same name and picture it at least shouldn't change the filter anyway
|
|
||||||
// luckily we don't need private items, so dummy and parent classes are out of the picture
|
|
||||||
|
|
||||||
if !(uiNamespace getVariable [QGVAR(configCached), false]) then {
|
|
||||||
private _fnc_addToCache = {
|
|
||||||
private _displayName = getText (_this >> "displayName");
|
|
||||||
private _picture = getText (_this >> "picture");
|
|
||||||
|
|
||||||
// list box seems to delete the leading backslash
|
|
||||||
if (_picture select [0,1] == "\") then {
|
|
||||||
_picture = _picture select [1];
|
|
||||||
};
|
|
||||||
|
|
||||||
uiNamespace setVariable [format [QGVAR(ItemKey:%1:%2), _displayName, _picture], _this];
|
|
||||||
};
|
|
||||||
|
|
||||||
// weapons and items
|
|
||||||
{
|
|
||||||
if (getNumber (_x >> "scope") > 0) then {_x call _fnc_addToCache};
|
|
||||||
false
|
|
||||||
} count (
|
|
||||||
("true" configClasses (configFile >> "CfgWeapons")) +
|
|
||||||
("true" configClasses (configFile >> "CfgGlasses"))
|
|
||||||
);
|
|
||||||
|
|
||||||
// magazines
|
|
||||||
{
|
|
||||||
if (getNumber (_x >> "scope") == 2) then {_x call _fnc_addToCache};
|
|
||||||
false
|
|
||||||
} count ("true" configClasses (configFile >> "CfgMagazines"));
|
|
||||||
|
|
||||||
// backpacks
|
|
||||||
{
|
|
||||||
if (getNumber (_x >> "scope") > 0 && {getNumber (_x >> "isBackpack") == 1}) then {_x call _fnc_addToCache};
|
|
||||||
false
|
|
||||||
} count ("true" configClasses (configFile >> "CfgVehicles"));
|
|
||||||
|
|
||||||
uiNamespace setVariable [QGVAR(configCached), true];
|
|
||||||
};
|
|
||||||
|
|
||||||
ADDON = true;
|
ADDON = true;
|
||||||
|
@ -23,12 +23,9 @@ if (_filterFunction isEqualType {}) then {
|
|||||||
private _i = 0;
|
private _i = 0;
|
||||||
|
|
||||||
while {_i < lbSize _itemList} do {
|
while {_i < lbSize _itemList} do {
|
||||||
private _config = uiNamespace getVariable [
|
private _config = GVAR(ItemKeyNamespace) getVariable format ["%1:%2", _itemList lbText _i, _itemList lbPicture _i];
|
||||||
format [QGVAR(ItemKey:%1:%2), _itemList lbText _i, _itemList lbPicture _i],
|
|
||||||
configNull
|
|
||||||
];
|
|
||||||
|
|
||||||
if (!isNull _config && {!(_config call _filterFunction)}) then {
|
if (!isNil "_config" && {!(_config call _filterFunction)}) then {
|
||||||
_itemList lbDelete _i;
|
_itemList lbDelete _i;
|
||||||
|
|
||||||
// in case the filter function returns nil. Otherwise could lock up the game.
|
// in case the filter function returns nil. Otherwise could lock up the game.
|
||||||
|
Loading…
Reference in New Issue
Block a user