DragonNest/GameCommon/DnAddStateBySkillGroupBlow.cpp
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

106 lines
No EOL
2.6 KiB
C++

#include "Stdafx.h"
#include "DnAddStateBySkillGroupBlow.h"
#if !defined( USE_BOOST_MEMPOOL )
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#endif
#endif // #if !defined( USE_BOOST_MEMPOOL )
CDnAddStateBySkillGroupBlow::CDnAddStateBySkillGroupBlow( DnActorHandle hActor, const char* szValue ) : CDnBlow( hActor )
{
m_StateBlow.emBlowIndex = STATE_BLOW::BLOW_276;
SetValue( szValue );
m_fValue = 0.0f;
#ifdef _GAMESERVER
m_bStateEffectApplied = false;
m_nServerBlowID = 0;
m_nStateBlowIndex = 0;
std::string szOriginalValue = szValue;
std::vector<std::string> vecTokens;
TokenizeA( szOriginalValue, vecTokens, "_" );
if( vecTokens.size() > 0 )
{
std::vector<std::string> vecStateBlowTokens;
TokenizeA( vecTokens[0], vecStateBlowTokens, "/" );
for( DWORD i=0; i<vecStateBlowTokens.size(); i++ )
m_vecAvailableSkillIndex.push_back( atoi(vecStateBlowTokens[i].c_str()) );
if( vecTokens.size() > 0 ) m_nStateBlowIndex = atoi( vecStateBlowTokens[0].c_str() );
if( vecTokens.size() > 1 ) m_szAdditionalBlowParam = vecStateBlowTokens[1];
}
if( vecTokens.size() > 1 )
{
std::vector<std::string> vecSkillIndexTokens;
TokenizeA( vecTokens[1], vecSkillIndexTokens, "," );
for( DWORD i=0; i<vecSkillIndexTokens.size(); i++ )
m_vecAvailableSkillIndex.push_back( atoi(vecSkillIndexTokens[i].c_str()) );
}
#endif
}
CDnAddStateBySkillGroupBlow::~CDnAddStateBySkillGroupBlow(void)
{
}
void CDnAddStateBySkillGroupBlow::OnBegin( LOCAL_TIME LocalTime, float fDelta )
{
__super::OnBegin(LocalTime, fDelta);
}
void CDnAddStateBySkillGroupBlow::Process( LOCAL_TIME LocalTime, float fDelta )
{
__super::Process( LocalTime, fDelta );
}
void CDnAddStateBySkillGroupBlow::OnEnd( LOCAL_TIME LocalTime, float fDelta )
{
__super::OnEnd(LocalTime, fDelta);
#ifdef _GAMESERVER
RemoveAdditionalStateBlow();
#endif
}
#ifdef _GAMESERVER
void CDnAddStateBySkillGroupBlow::ApplyAddtionalStateBlowFromSkill( int nSkillIndex )
{
if( !m_hActor ) return;
if( std::find(m_vecAvailableSkillIndex.begin() , m_vecAvailableSkillIndex.end(), nSkillIndex ) != m_vecAvailableSkillIndex.end() )
{
if( m_bStateEffectApplied == false )
{
m_nServerBlowID = m_hActor->CmdAddStateEffect(
GetParentSkillInfo(),
(STATE_BLOW::emBLOW_INDEX)m_nStateBlowIndex,
(int)(GetDurationTime() * 1000),
m_szAdditionalBlowParam.c_str() );
m_bStateEffectApplied = true;
}
}
}
void CDnAddStateBySkillGroupBlow::RemoveAdditionalStateBlow()
{
if( !m_hActor ) return;
if( m_bStateEffectApplied == true )
{
m_hActor->CmdRemoveStateEffectFromID( m_nServerBlowID );
m_nServerBlowID = 0;
m_bStateEffectApplied = false;
}
}
#endif