bool CItemContainer::IsItemInTrade() { // recursively get the item that is at "top" level. CItemContainer * pObj = (dynamic_cast <CItemContainer*>(this)); //const CObjBase* pObj = pItem->GetContainer(); if ( !pObj ) return false; else if (pObj->IsType( IT_EQ_TRADE_WINDOW )) return true; CItemContainer * pObj2 = (dynamic_cast <CItemContainer*>(this->GetContainer())); return pObj2->IsItemInTrade(); }
int CContainer::ContentConsume( RESOURCE_ID_BASE rid, int amount, bool fTest, DWORD dwArg ) { ADDTOCALLSTACK("CContainer::ContentConsume"); // ARGS: // dwArg = a hack for ores. // RETURN: // 0 = all consumed ok. // # = number left to be consumed. (still required) if ( rid.GetResIndex() == 0 ) return( amount ); // from skills menus. CItem * pItemNext; for ( CItem* pItem=GetContentHead(); pItem!=NULL; pItem=pItemNext) { pItemNext = pItem->GetNext(); if ( pItem->IsResourceMatch( rid, dwArg )) { amount -= pItem->ConsumeAmount( amount, fTest ); if ( amount <= 0 ) break; } CItemContainer * pCont = dynamic_cast <CItemContainer*> (pItem); if ( pCont != NULL ) // this is a sub-container. { if ( rid == RESOURCE_ID(RES_TYPEDEF,IT_GOLD)) { if ( pCont->IsType(IT_CONTAINER_LOCKED)) continue; } else { if ( ! pCont->IsSearchable()) continue; } amount = pCont->ContentConsume( rid, amount, fTest, dwArg ); if ( amount <= 0 ) break; } } return( amount ); }