#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 && "À߸øµÈ ¿¬»êÀÚ ´ëÀÔ" ); m_iType = STATE_CHECKER; } CDnActorStateChecker::~CDnActorStateChecker(void) { } bool CDnActorStateChecker::CanUse( void ) { bool bResult = false; if( m_hHasActor ) { // DnActorState::StateEnum ÀÇ °¢ ¿ä¼ÒµéÀº ºñÆ® Á¶ÇÕÀÌ °¡´ÉÇϵµ·Ï ¼±¾ðµÇ¾î ÀÖ´Ù. 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 // °ø°Ý½ºÅ³ »ç¿ëÈÄ < °ø°ÝÁß¿¡¼­´Â »ç¿ëºÒ°¡´ÉÇÑ ½ºÅ³À» ¿¬´Þ¾Æ ¹Ù·Î »ç¿ëÇÏ¸é ¿©±â¿¡ °É·Á¼­ ¼­¹ö¿¡¼­´Â ¸ø½á¼­ ½ÇÆÐ°¡ µÉ¼ö°¡ ÀÖ´Ù. // ¼­¹ö ÇÁ·¹ÀÓ°ú Ŭ¶ó ÇÁ·¹ÀÓ°úÀÇ ¹Ì¹¦ÇÑ µ¿±â°¡ Ʋ¾îÁö´Â°æ¿ìÀε¥ ÀÏ´ÜÀº °ø°ÝÁßÀ϶§ ¶ó´Â »óȲÀº ÀæÀº °æ¿ì À̱⠶§¹®¿¡ »©µÎµµ·Ï ÇÑ´Ù. 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; }