bool CInventory::Belt(PIItem pIItem) { if(!CanPutInBelt(pIItem)) return false; //вещь была в слоте bool in_slot = InSlot(pIItem); if(in_slot) { if(m_iActiveSlot == pIItem->GetSlot()) Activate(NO_ACTIVE_SLOT); m_slots[pIItem->GetSlot()].m_pIItem = NULL; } m_belt.insert(m_belt.end(), pIItem); if(!in_slot) { TIItemContainer::iterator it = std::find(m_ruck.begin(), m_ruck.end(), pIItem); if(m_ruck.end() != it) m_ruck.erase(it); } CalcTotalWeight(); InvalidateState (); EItemPlace p = pIItem->m_eItemPlace; pIItem->m_eItemPlace = eItemPlaceBelt; m_pOwner->OnItemBelt(pIItem, p); pIItem->OnMoveToBelt(); if(in_slot) pIItem->object().processing_deactivate(); pIItem->object().processing_activate(); return true; }