2024-12-21 10:04:04 +08:00
|
|
|
|
#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 && "<EFBFBD>߸<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>" );
|
|
|
|
|
|
m_iType = STATE_CHECKER;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CDnActorStateChecker::~CDnActorStateChecker(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool CDnActorStateChecker::CanUse( void )
|
|
|
|
|
|
{
|
|
|
|
|
|
bool bResult = false;
|
|
|
|
|
|
|
|
|
|
|
|
if( m_hHasActor )
|
|
|
|
|
|
{
|
|
|
|
|
|
// DnActorState::StateEnum <20><> <20><> <20><><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD> <20><>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20>ִ<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
|
|
|
|
|
|
// <20><><EFBFBD>ݽ<EFBFBD>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> < <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD><D2B0><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD> <20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD> <20>ɷ<EFBFBD><C9B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ἥ <20><><EFBFBD>а<EFBFBD> <20>ɼ<EFBFBD><C9BC><EFBFBD> <20>ִ<EFBFBD>.
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD> Ŭ<><C5AC> <20><><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD> <20><><EFBFBD>Ⱑ Ʋ<><C6B2><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD><C2B0><EFBFBD><EFBFBD>ε<EFBFBD> <20>ϴ<EFBFBD><CFB4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>̱<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD><CEB5><EFBFBD> <20>Ѵ<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;
|
|
|
|
|
|
}
|