本文整理汇总了C++中CItemContainer::ContentConsume方法的典型用法代码示例。如果您正苦于以下问题:C++ CItemContainer::ContentConsume方法的具体用法?C++ CItemContainer::ContentConsume怎么用?C++ CItemContainer::ContentConsume使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CItemContainer
的用法示例。
在下文中一共展示了CItemContainer::ContentConsume方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ContentConsume
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 );
}
示例2: Use_Train_ArcheryButte
//.........这里部分代码省略.........
}
if ( fSetup )
{
if ( Skill_GetActive() == NPCACT_TRAINING )
return true;
UpdateAnimate(ANIM_ATTACK_WEAPON);
m_Act_TargPrv = m_uidWeapon;
m_Act_Targ = pButte->GetUID();
Skill_Start(NPCACT_TRAINING);
return true;
}
CVarDefCont *pCont = pWeapon->GetDefKey("AMMOCONT",true);
if ( m_pPlayer && AmmoID )
{
int iFound = 1;
if ( pCont )
{
//check for UID
CGrayUID uidCont = static_cast<DWORD>(pCont->GetValNum());
CItemContainer *pNewCont = dynamic_cast<CItemContainer*>(uidCont.ItemFind());
if ( !pNewCont ) //if no UID, check for ITEMID_TYPE
{
t_Str = pCont->GetValStr();
RESOURCE_ID_BASE rContid = static_cast<RESOURCE_ID_BASE>(g_Cfg.ResourceGetID(RES_ITEMDEF, t_Str));
ITEMID_TYPE ContID = static_cast<ITEMID_TYPE>(rContid.GetResIndex());
if ( ContID )
pNewCont = dynamic_cast<CItemContainer*>(ContentFind(rContid));
}
if ( pNewCont )
iFound = pNewCont->ContentConsume(RESOURCE_ID(RES_ITEMDEF, AmmoID));
else
iFound = ContentConsume(RESOURCE_ID(RES_ITEMDEF, AmmoID));
}
else
iFound = ContentConsume(RESOURCE_ID(RES_ITEMDEF, AmmoID));
if ( iFound )
{
SysMessageDefault(DEFMSG_ITEMUSE_ARCHB_NOAMMO);
return(true);
}
}
// OK...go ahead and fire at the target
// Check the skill
bool fSuccess = Skill_UseQuick(skill, Calc_GetRandLLVal(40));
// determine animation parameters
CVarDefCont *pVarAnim = pWeapon->GetDefKey("AMMOANIM", true);
CVarDefCont *pVarAnimColor = pWeapon->GetDefKey("AMMOANIMHUE", true);
CVarDefCont *pVarAnimRender = pWeapon->GetDefKey("AMMOANIMRENDER", true);
ITEMID_TYPE AmmoAnim;
DWORD AmmoHue;
DWORD AmmoRender;
if ( pVarAnim )
{
t_Str = pVarAnim->GetValStr();
rid = static_cast<RESOURCE_ID_BASE>(g_Cfg.ResourceGetID(RES_ITEMDEF, t_Str));
AmmoAnim = static_cast<ITEMID_TYPE>(rid.GetResIndex());
}
else
AmmoAnim = static_cast<ITEMID_TYPE>(pWeaponDef->m_ttWeaponBow.m_idAmmoX.GetResIndex());