DragonNest/GameCommon/DnMovableChecker.cpp
2024-12-20 16:56:44 +08:00

71 lines
No EOL
3 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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