71 lines
No EOL
3 KiB
C++
71 lines
No EOL
3 KiB
C++
#include "StdAfx.h"
|
||
#include "DnMovableChecker.h"
|
||
#include "DnActor.h"
|
||
|
||
#ifndef USE_BOOST_MEMPOOL
|
||
#ifdef _DEBUG
|
||
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
|
||
#endif
|
||
#endif
|
||
|
||
#ifndef _GAMESERVER
|
||
bool CDnMovableChecker::s_bUseSignalSkillCheck = false;
|
||
bool CDnMovableChecker::s_PrimUseSignalSkillCheck = false;
|
||
LOCAL_TIME CDnMovableChecker::s_EndTime = 0;
|
||
#endif
|
||
|
||
CDnMovableChecker::CDnMovableChecker( DnActorHandle hActor ) : IDnSkillUsableChecker( hActor )
|
||
{
|
||
m_iType = MOVABLE_CHECKER;
|
||
}
|
||
|
||
CDnMovableChecker::~CDnMovableChecker(void)
|
||
{
|
||
}
|
||
|
||
|
||
#ifndef _GAMESERVER
|
||
void CDnMovableChecker::SetUseSignalSkillCheck( bool bUseSignalSkillCheck, LOCAL_TIME SignalEndTime )
|
||
{
|
||
s_bUseSignalSkillCheck = bUseSignalSkillCheck;
|
||
s_EndTime = SignalEndTime;
|
||
}
|
||
#endif
|
||
|
||
|
||
bool CDnMovableChecker::CanUse( void )
|
||
{
|
||
bool bResult = false;
|
||
|
||
if( m_hHasActor )
|
||
{
|
||
#ifndef _GAMESERVER
|
||
if (s_PrimUseSignalSkillCheck)
|
||
return true;
|
||
|
||
if( s_bUseSignalSkillCheck )
|
||
return true;
|
||
#else
|
||
if( m_hHasActor && m_hHasActor->IsUseSignalSkillCheck() && m_hHasActor->IsAllowedSkillCheck(0) )
|
||
return true;
|
||
#endif
|
||
|
||
if( !m_hHasActor->IsProcessSkill() && (m_hHasActor->GetStateEffect() & CDnActorState::Cant_Move) == CDnActorState::Cant_Move )
|
||
{
|
||
bResult = true;
|
||
}
|
||
else if( m_hHasActor->IsMovable() )
|
||
{
|
||
bResult = true;
|
||
}
|
||
}
|
||
|
||
return bResult;
|
||
}
|
||
|
||
IDnSkillUsableChecker* CDnMovableChecker::Clone()
|
||
{
|
||
CDnMovableChecker* pNewChecker = new CDnMovableChecker(m_hHasActor);
|
||
|
||
return pNewChecker;
|
||
} |