DragonNest/GameCommon/DnActorStateChecker.cpp

71 lines
3.5 KiB
C++
Raw Normal View History

2024-12-20 16:56:44 +08:00
<EFBFBD><EFBFBD>#include "StdAfx.h"
#include "DnActorStateChecker.h"
#include "DnActor.h"
#ifndef USE_BOOST_MEMPOOL
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#endif
#endif
CDnActorStateChecker::CDnActorStateChecker( DnActorHandle hActor,
CDnActorState::ActorStateEnum eRequiredState, int iOperator ) : IDnSkillUsableChecker( hActor ),
m_iOperator( iOperator ),
m_eRequiredState( eRequiredState )
{
_ASSERT( 0 <= m_iOperator && m_iOperator < OP_COUNT && "<00>ǻ<EFBFBD><1C> <00>Ű<EFBFBD><C5B0><EFBFBD> <00><><EFBFBD>" );
m_iType = STATE_CHECKER;
}
CDnActorStateChecker::~CDnActorStateChecker(void)
{
}
bool CDnActorStateChecker::CanUse( void )
{
bool bResult = false;
if( m_hHasActor )
{
// DnActorState::StateEnum X<EFBFBD> <EFBFBD> <EFBFBD>ƌ<EFBFBD><EFBFBD><EFBFBD>@<EFBFBD> D<EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>i<EFBFBD>t<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>ij]<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
switch( m_iOperator )
{
case OP_EQUAL:
bResult = ( m_hHasActor->GetState() == m_eRequiredState );
break;
case OP_NOT_EQUAL:
bResult = ( m_hHasActor->GetState() != m_eRequiredState );
#ifdef _GAMESERVER
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¬<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> < <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ƈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> <EFBFBD>¬<EFBFBD>D<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>t<EFBFBD> <EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD> x<EFBFBD>$<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>h<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>(<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> t<EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> ٳ0<EFBFBD><EFBFBD> <EFBFBD>Ҵ<EFBFBD><EFBFBD>ɔ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>p<EFBFBD> |<EFBFBD><EFBFBD><EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>L<EFBFBD> |<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>i<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> t<EFBFBD>0<EFBFBD> L<EFBFBD>8<EFBFBD><EFBFBD><EFBFBD> |<EFBFBD>P<EFBFBD>ij]<EFBFBD> \<EFBFBD><EFBFBD><EFBFBD>.
if((m_eRequiredState == CDnActorState::ActorStateEnum::Attack) && (bResult == false) )
bResult = true;
#endif
break;
case OP_AND:
bResult = ( m_hHasActor->GetState() & m_eRequiredState ) ? true : false;
break;
case OP_NOT_AND:
bResult = !( m_hHasActor->GetState() & m_eRequiredState ) ? true : false;
break;
}
}
return bResult;
}
IDnSkillUsableChecker* CDnActorStateChecker::Clone()
{
CDnActorStateChecker* pNewChecker = new CDnActorStateChecker(m_hHasActor, m_eRequiredState, m_iOperator);
return pNewChecker;
}