DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ GetEntitiesByCategory() [1/2]

array< Entity > CachedEquipmentStorageBase::GetEntitiesByCategory ( CachedEquipmentStorageQuery query)
inlineprotected

List of entities matching the CachedEquipmentStorageQuery query.

Аргументы
queryQuery filter settings

См. определение в файле CachedEquipmentStorageBase.c строка 69

70 {
71 TIntArray categoriesAll = m_ItemsCacheByCategory.GetKeyArray();
72 TIntArray matchedCategories = new TIntArray();
73
74 foreach (int category: categoriesAll)
75 {
76 if (category & query.m_Category)
77 matchedCategories.Insert(category);
78 }
79
80 array<Entity> entities = new array<Entity>();
81
82 if (matchedCategories.Count() > 0)
83 {
84 foreach (int matchedCategory : matchedCategories)
85 {
86 foreach (CachedEquipmentItemAttribute itemAttributes : m_ItemsCacheByCategory[matchedCategory])
87 {
88 bool placementMatched = false;
89 bool parentPlacementMatched = false;
90 bool inventoryDepthMatched = false;
91
92 if (itemAttributes.m_InventoryPlacement == query.m_Placement || query.m_Placement == ECachedEquipmentPlacement.ANY)
93 placementMatched = true;
94
95 if (query.m_ParentPlacement.Count() == 0 || query.m_ParentPlacement.Find(itemAttributes.m_ParentInventoryPlacement) > INDEX_NOT_FOUND)
96 parentPlacementMatched = true;
97
98 if (itemAttributes.m_InventoryDepth <= query.m_MaximumDepth || query.m_MaximumDepth == -1)
99 inventoryDepthMatched = true;
100
101 if (placementMatched && parentPlacementMatched && inventoryDepthMatched)
102 entities.Insert(itemAttributes.m_Entity);
103 }
104 }
105 }
106
107 return entities;
108 }
ECachedEquipmentPlacement
Определения ECachedEquipmentPlacement.c:2
ref map< ECachedEquipmentItemCategory, ref array< ref CachedEquipmentItemAttribute > > m_ItemsCacheByCategory
Определения CachedEquipmentStorageBase.c:52
ECachedEquipmentItemCategory m_Category
Определения CachedEquipmentStorageBase.c:5
ref TIntArray m_ParentPlacement
Определения CachedEquipmentStorageBase.c:4
ECachedEquipmentPlacement m_Placement
Определения CachedEquipmentStorageBase.c:6
const int INDEX_NOT_FOUND
Определения gameplay.c:13
array< int > TIntArray
Определения EnScript.c:733

Перекрестные ссылки INDEX_NOT_FOUND, CachedEquipmentStorageQuery::m_Category, m_ItemsCacheByCategory, CachedEquipmentStorageQuery::m_MaximumDepth, CachedEquipmentStorageQuery::m_ParentPlacement и CachedEquipmentStorageQuery::m_Placement.

Используется в GetEntitiesByCategory().