DragonNest/GameCommon/DnPropCondiNeedItem.cpp

63 lines
1.5 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
#include "StdAfx.h"
#include "DnPropCondiNeedItem.h"
#include "DnWorldActProp.h"
#include "DnPlayerActor.h"
#include "DnItemTask.h"
#include "DNUserItem.h"
#include "DNUserSession.h"
#include "DnItem.h"
CDnPropCondiNeedItem::CDnPropCondiNeedItem( DnPropHandle hEntity ) : CDnPropCondition( hEntity ),
m_iNeedItemID( 0 ),
m_iNumNeedItem( 0 ),
m_bRemoveNeedItem( false )
{
m_iType = NEED_ITEM;
}
CDnPropCondiNeedItem::~CDnPropCondiNeedItem(void)
{
}
bool CDnPropCondiNeedItem::IsSatisfy( void )
{
bool bResult = false;
if( !m_hEntity )
return false;
CDnWorldActProp* pActProp = static_cast<CDnWorldActProp*>(m_hEntity.GetPointer());
if( NULL == pActProp )
{
#ifdef ENABLE_PROP_CONDITION_LOG
OutputDebug( "[?? Prop FSM Condition Log] CDnPropCondiNeedItem::IsSatisfy - Entity Prop is NULL!\n" );
#endif
return false;
}
if( m_hAccessActor && m_hAccessActor->IsPlayerActor() )
{
if( 0 < m_iNeedItemID )
{
CDnItemTask* pItemTask = m_hEntity->GetGameRoom()->GetItemTask();
int iHasItemCount = pItemTask->ScanItemFromID( m_hAccessActor, m_iNeedItemID, NULL );
if( m_iNumNeedItem <= iHasItemCount )
{
bResult = true;
// <20>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ؾ<EFBFBD><D8BE>Ѵٸ<D1B4> üũ.
if( true == m_bRemoveNeedItem )
{
static_cast<CDnPlayerActor*>(m_hAccessActor.GetPointer())->GetUserSession()->GetItem()->DeleteInventoryByItemID( m_iNeedItemID, m_iNumNeedItem, DBDNWorldDef::UseItem::Use );
}
}
}
else
bResult = true; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
}
return bResult;
}