コード例 #1
0
ファイル: Inventory.cpp プロジェクト: OLR-xray/XRay-NEW
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;
}