DragonNest/GameCommon/DnImpactBlowProcessor.cpp

76 lines
1.9 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
#include "StdAfx.h"
#include "DnImpactBlowProcessor.h"
#include "DnClericMentalChargeBlow.h"
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#endif
CDnImpactBlowProcessor::CDnImpactBlowProcessor( DnActorHandle hActor ) : IDnSkillProcessor( hActor ),
m_pState( new CDnState ),
m_iNumChargeBlow( 0 )
{
}
CDnImpactBlowProcessor::~CDnImpactBlowProcessor(void)
{
SAFE_DELETE( m_pState );
}
void CDnImpactBlowProcessor::OnBegin( LOCAL_TIME LocalTime, float fDelta, DnSkillHandle hParentSkill )
{
vector<DnBlowHandle> vlChargeBlow;
int iNumAppliedStateBlow = m_hHasActor->GetNumAppliedStateBlow();
for( int iBlow = 0; iBlow < iNumAppliedStateBlow; ++iBlow )
{
DnBlowHandle hBlow = m_hHasActor->GetAppliedStateBlow(iBlow);
if( STATE_BLOW::BLOW_072 == hBlow->GetBlowIndex() )
vlChargeBlow.push_back( hBlow );
}
// <20><><EFBFBD>ݷ<EFBFBD> <20><><EFBFBD><EFBFBD>
if( false == vlChargeBlow.empty() )
{
int iNumChargeBlow = (int)vlChargeBlow.size();
float fValue = 1.0f;
for( int iBlow = 0; iBlow < iNumChargeBlow; ++iBlow )
{
DnBlowHandle hBlow = vlChargeBlow.at( iBlow );
fValue = fValue + fValue*hBlow->GetFloatValue();
}
m_pState->SetAttackPMinRatio( fValue );
m_pState->SetAttackPMaxRatio( fValue );
m_pState->CalcValueType();
m_hHasActor->AddBlowState( m_pState );
m_iNumChargeBlow = (int)vlChargeBlow.size();
}
}
void CDnImpactBlowProcessor::Process( LOCAL_TIME LocalTime, float fDelta )
{
}
void CDnImpactBlowProcessor::OnEnd( LOCAL_TIME LocalTime, float fDelta )
{
// <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>ο<EFBFBD> <20><>ų<EFBFBD><C5B3> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD> <20><>
// <20><><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC>/<2F><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>ɵ<EFBFBD>..
// TODO: <20><><EFBFBD><EFBFBD> <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE> <20>ʿ<EFBFBD><CABF>ϴ<EFBFBD>.
for( int iChargeBlow = 0; iChargeBlow < m_iNumChargeBlow; ++iChargeBlow )
{
m_hHasActor->RemoveStateBlowByBlowDefineIndex( STATE_BLOW::BLOW_072 );
}
m_hHasActor->DelBlowState( m_pState );
m_hHasActor->RefreshState();
}