本文整理汇总了C++中CItem::GetParent方法的典型用法代码示例。如果您正苦于以下问题:C++ CItem::GetParent方法的具体用法?C++ CItem::GetParent怎么用?C++ CItem::GetParent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CItem
的用法示例。
在下文中一共展示了CItem::GetParent方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnViewShowunknown
void CDirstatDoc::OnViewShowunknown()
{
CArray<CItem *, CItem *> drives;
GetDriveItems(drives);
if(m_showUnknown)
{
for(int i = 0; i < drives.GetSize(); i++)
{
CItem *unknown = drives[i]->FindUnknownItem();
ASSERT(unknown != NULL);
// FIXME: Multi-select
if(GetSelection(0) == unknown)
{
SetSelection(unknown->GetParent());
}
if(GetZoomItem() == unknown)
{
m_zoomItem = unknown->GetParent();
}
drives[i]->RemoveUnknownItem();
}
m_showUnknown = false;
}
else
{
for(int i = 0; i < drives.GetSize(); i++)
{
drives[i]->CreateUnknownItem();
}
m_showUnknown = true;
}
if(drives.GetSize() > 0)
{
SetWorkingItem(GetRootItem());
}
UpdateAllViews(NULL);
}
示例2: OnViewShowfreespace
void CDirstatDoc::OnViewShowfreespace()
{
CArray<CItem *, CItem *> drives;
GetDriveItems(drives);
if(m_showFreeSpace)
{
for(int i = 0; i < drives.GetSize(); i++)
{
CItem *free = drives[i]->FindFreeSpaceItem();
ASSERT(free != NULL);
// FIXME: Multi-select
if(GetSelection(0) == free)
{
SetSelection(free->GetParent());
}
if(GetZoomItem() == free)
{
m_zoomItem = free->GetParent();
}
drives[i]->RemoveFreeSpaceItem();
}
m_showFreeSpace = false;
}
else
{
for(int i = 0; i < drives.GetSize(); i++)
{
drives[i]->CreateFreeSpaceItem();
}
m_showFreeSpace = true;
}
if(drives.GetSize() > 0)
{
SetWorkingItem(GetRootItem());
}
UpdateAllViews(NULL);
}
示例3: OnRemoveOb
void CContainer::OnRemoveOb( CGObListRec* pObRec ) // Override this = called when removed from list.
{
ADDTOCALLSTACK("CContainer::OnRemoveOb");
// remove this object from the container list.
// Overload the RemoveAt for general lists to come here.
CItem * pItem = STATIC_CAST <CItem*>(pObRec);
ASSERT(pItem);
CGObList::OnRemoveOb( pItem );
ASSERT( pItem->GetParent() == NULL );
pItem->SetContainerFlags(UID_O_DISCONNECT); // It is no place for the moment.
OnWeightChange( -pItem->GetWeight());
}
示例4: OnTreemapZoomin
void CDirstatDoc::OnTreemapZoomin()
{
// FIXME: Multi-select
CItem *p = GetSelection(0);
CItem *z = NULL;
while(p != GetZoomItem())
{
z = p;
p = p->GetParent();
}
ASSERT(z != NULL);
SetZoomItem(z);
}
示例5: r_WriteContent
void CContainer::r_WriteContent( CScript & s ) const
{
ADDTOCALLSTACK("CContainer::r_WriteContent");
ASSERT(dynamic_cast<const CGObList *>(this) != NULL);
// Write out all the items in me.
CItem* pItemNext;
for ( CItem* pItem = GetContentHead(); pItem != NULL; pItem = pItemNext)
{
pItemNext = pItem->GetNext();
ASSERT( pItem->GetParent() == this );
pItem->r_WriteSafe(s);
}
}
示例6: ContentNotifyDelete
void CContainer::ContentNotifyDelete()
{
ADDTOCALLSTACK("CContainer::ContentNotifyDelete");
if ( IsTrigUsed(TRIGGER_DESTROY) ) // no point entering this loop if the trigger is disabled
return;
// trigger @Destroy on contained items
CItem *pItemNext = NULL;
for (CItem *pItem = GetContentHead(); pItem != NULL; pItem = pItemNext)
{
pItemNext = pItem->GetNext();
if ( pItem->NotifyDelete() == false )
{
// item shouldn't be destroyed and so cannot remain in this container,
// drop it to the ground if it hasn't been moved already
if (pItem->GetParent() == this)
pItem->MoveToCheck( pItem->GetTopLevelObj()->GetTopPoint() );
}
}
}
示例7: SetPropertyNum
void CCPropsItemChar::SetPropertyNum(int iPropIndex, PropertyValNum_t iVal, CObjBase* pLinkedObj, RESDISPLAY_VERSION iLimitToExpansion, bool fDeleteZero)
{
ADDTOCALLSTACK("CCPropsItemChar::SetPropertyNum");
ASSERT(!IsPropertyStr(iPropIndex));
ASSERT((iLimitToExpansion >= RDS_PRET2A) && (iLimitToExpansion < RDS_QTY));
if ((fDeleteZero && (iVal == 0)) || (_iPropertyExpansion[iPropIndex] > iLimitToExpansion))
{
if (0 == _mPropsNum.erase(iPropIndex))
return; // I didn't have this property, so avoid further processing.
}
else
_mPropsNum[iPropIndex] = iVal;
if (!pLinkedObj)
return;
// Do stuff to the pLinkedObj
switch (iPropIndex)
{
case PROPITCH_WEIGHTREDUCTION:
{
CItem *pItemLink = static_cast<CItem*>(pLinkedObj);
int oldweight = pItemLink->GetWeight();
CContainer * pCont = dynamic_cast <CContainer*> (pItemLink->GetParent());
if (pCont)
{
ASSERT(pItemLink->IsItemEquipped() || pItemLink->IsItemInContainer());
pCont->OnWeightChange(pItemLink->GetWeight() - oldweight);
pLinkedObj->UpdatePropertyFlag();
}
break;
}
//default:
// pLinkedObj->UpdatePropertyFlag();
// break;
}
}
示例8: Cmd_SecureTrade
bool CClient::Cmd_SecureTrade( CChar *pChar, CItem *pItem )
{
ADDTOCALLSTACK("CClient::Cmd_SecureTrade");
// Begin secure trading with a char. (Make the initial offer)
if ( !pChar || pChar == m_pChar )
return false;
// Make sure both clients can see each other, because trade window is an container
// and containers can be opened only after the object is already loaded on screen
if ( !m_pChar->CanSee(pChar) || !pChar->CanSee(m_pChar) )
return false;
if ( pItem && (IsTrigUsed(TRIGGER_DROPON_CHAR) || IsTrigUsed(TRIGGER_ITEMDROPON_CHAR)) )
{
CScriptTriggerArgs Args(pChar);
if ( pItem->OnTrigger(ITRIG_DROPON_CHAR, m_pChar, &Args) == TRIGRET_RET_TRUE )
return false;
}
if ( pChar->m_pNPC ) // NPC's can't use trade windows
return pItem ? pChar->NPC_OnItemGive(m_pChar, pItem) : false;
if ( !pChar->m_pClient ) // and also offline players
return false;
if ( pChar->GetDefNum("REFUSETRADES") )
{
SysMessagef(g_Cfg.GetDefaultMsg(DEFMSG_MSG_TRADE_REFUSE), pChar->GetName());
return false;
}
// Check if the trade window is already open
for ( CItem *pItemCont = m_pChar->GetContentHead(); pItemCont != NULL; pItemCont = pItemCont->GetNext() )
{
if ( !pItemCont->IsType(IT_EQ_TRADE_WINDOW) )
continue;
CItem *pItemPartner = pItemCont->m_uidLink.ItemFind();
if ( !pItemPartner )
continue;
CChar *pCharPartner = dynamic_cast<CChar *>(pItemPartner->GetParent());
if ( pCharPartner != pChar )
continue;
if ( pItem )
{
if ( IsTrigUsed(TRIGGER_DROPON_TRADE) )
{
CScriptTriggerArgs Args1(pChar);
if ( pItem->OnTrigger(ITRIG_DROPON_TRADE, this, &Args1) == TRIGRET_RET_TRUE )
return false;
}
CItemContainer *pCont = dynamic_cast<CItemContainer *>(pItemCont);
if ( pCont )
pCont->ContentAdd(pItem);
}
return true;
}
// Open new trade window
if ( IsTrigUsed(TRIGGER_TRADECREATE) )
{
CScriptTriggerArgs Args(pItem);
if ( (m_pChar->OnTrigger(CTRIG_TradeCreate, pChar, &Args) == TRIGRET_RET_TRUE) || (pChar->OnTrigger(CTRIG_TradeCreate, m_pChar, &Args) == TRIGRET_RET_TRUE) )
return false;
}
if ( IsTrigUsed(TRIGGER_DROPON_TRADE) && pItem )
{
CScriptTriggerArgs Args1(pChar);
if ( pItem->OnTrigger(ITRIG_DROPON_TRADE, this, &Args1) == TRIGRET_RET_TRUE )
return false;
}
CItem *pItem1 = CItem::CreateBase(ITEMID_Bulletin1);
if ( !pItem1 )
return false;
CItemContainer *pCont1 = static_cast<CItemContainer *>(pItem1);
if ( !pCont1 )
{
DEBUG_ERR(("Item 0%x must be a container type to enable player trading.\n", ITEMID_Bulletin1));
pItem1->Delete();
return false;
}
CItemContainer *pCont2 = static_cast<CItemContainer *>(CItem::CreateBase(ITEMID_Bulletin1));
ASSERT(pCont2);
pCont1->SetName("Trade Window");
pCont1->SetType(IT_EQ_TRADE_WINDOW);
pCont1->m_itEqTradeWindow.m_iWaitTime = 0;
pCont1->m_itEqTradeWindow.m_bCheck = 0;
pCont1->m_uidLink = pCont2->GetUID();
m_pChar->LayerAdd(pCont1, LAYER_SPECIAL);
pCont2->SetName("Trade Window");
pCont2->SetType(IT_EQ_TRADE_WINDOW);
pCont2->m_itEqTradeWindow.m_iWaitTime = 0;
pCont2->m_itEqTradeWindow.m_bCheck = 0;
//.........这里部分代码省略.........
示例9: ASSERT
CItem *CDirstatDoc::GetSelectionParent()
{
ASSERT(m_selectedItems.GetCount() > 0);
CItem *item = m_selectedItems[0];
return item->GetParent();
}