//------------------------------------------------------------------------ int CInventory::GetCountOfUniqueId(uint8 uniqueId) const { //Skip uniqueId 0 if(!uniqueId) return 0; IItemSystem *pItemSystem = gEnv->pGame->GetIGameFramework()->GetIItemSystem(); int count = 0; TInventoryCIt end = m_stats.slots.end(); for (TInventoryCIt it = m_stats.slots.begin(); it != end; ++it) { IItem *pItem = pItemSystem->GetItem(*it); if (pItem) { uint8 id = pItemSystem->GetItemUniqueId(pItem->GetEntity()->GetClass()->GetName()); if (id==uniqueId) count++; } } TInventoryVectorEx::const_iterator endEx = m_stats.accessorySlots.end(); for (TInventoryVectorEx::const_iterator cit = m_stats.accessorySlots.begin(); cit!=endEx; ++cit) { uint8 id = pItemSystem->GetItemUniqueId((*cit)->GetName()); if (id==uniqueId) count++; } return count; }
bool CJaw::OutOfAmmo(bool allFireModes) const { CActor* pOwner = GetOwnerActor(); IInventory* pOwnerInventory = pOwner ? pOwner->GetInventory() : 0; if (!pOwnerInventory) return true; IEntityClass* pJawClass = GetEntity()->GetClass(); IItemSystem* pItemSystem = gEnv->pGame->GetIGameFramework()->GetIItemSystem(); int jawUniqueId = pItemSystem->GetItemUniqueId(pJawClass->GetName()); int currentNumJaws = pOwnerInventory->GetCountOfUniqueId(jawUniqueId); return currentNumJaws == 0; }