DragonNest/GameCommon/DnActorStateChecker.cpp

71 lines
1.8 KiB
C++
Raw Permalink Normal View History

#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;
}