190 lines
4.8 KiB
C++
190 lines
4.8 KiB
C++
|
|
#include "StdAfx.h"
|
|||
|
|
#include "DnPileAddEffectBlow.h"
|
|||
|
|
#include "DnTableDB.h"
|
|||
|
|
#include "EtActionSignal.h"
|
|||
|
|
|
|||
|
|
#ifdef _DEBUG
|
|||
|
|
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
<EFBFBD>ش<EFBFBD> ȿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ƚ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŭ(<EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <EFBFBD><EFBFBD>ø<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ư<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
<EFBFBD><EFBFBD>ø <EFBFBD>ɶ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
Ư<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ų <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>̵<EFBFBD> <EFBFBD><EFBFBD>Ŵ.
|
|||
|
|
*/
|
|||
|
|
CDnPileAddEffectBlow::CDnPileAddEffectBlow( DnActorHandle hActor, const char* szValue ) : CDnBlow( hActor )
|
|||
|
|
{
|
|||
|
|
m_StateBlow.emBlowIndex = STATE_BLOW::BLOW_249;
|
|||
|
|
|
|||
|
|
SetValue( szValue );
|
|||
|
|
m_fValue = 0.0f;
|
|||
|
|
|
|||
|
|
m_szTargetAction = szValue;
|
|||
|
|
m_pActionElement = NULL;
|
|||
|
|
m_fFrame = 0.0f;
|
|||
|
|
m_ActionDurationTime = 0;
|
|||
|
|
|
|||
|
|
m_bActivatedBlow = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CDnPileAddEffectBlow::~CDnPileAddEffectBlow(void)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDnPileAddEffectBlow::OnBegin( LOCAL_TIME LocalTime, float fDelta )
|
|||
|
|
{
|
|||
|
|
__super::OnBegin(LocalTime, fDelta);
|
|||
|
|
|
|||
|
|
OutputDebug( "%s\n", __FUNCTION__ );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CDnPileAddEffectBlow::Process( LOCAL_TIME LocalTime, float fDelta )
|
|||
|
|
{
|
|||
|
|
__super::Process( LocalTime, fDelta );
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CDnPileAddEffectBlow::OnEnd( LOCAL_TIME LocalTime, float fDelta )
|
|||
|
|
{
|
|||
|
|
__super::OnEnd(LocalTime, fDelta);
|
|||
|
|
|
|||
|
|
m_hActor->RemoveStateBlowSignal(this->GetMySmartPtr());
|
|||
|
|
|
|||
|
|
OutputDebug( "%s\n", __FUNCTION__);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDnPileAddEffectBlow::OnDuplicate( const STATE_BLOW& StateBlowInfo )
|
|||
|
|
{
|
|||
|
|
// <20>ð<EFBFBD><C3B0><EFBFBD> <20>Ѿ<EFBFBD><D1BE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC>
|
|||
|
|
m_StateBlow.fDurationTime = StateBlowInfo.fDurationTime;
|
|||
|
|
|
|||
|
|
//<2F>ߺ<EFBFBD><DFBA>ɶ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ų<EFBFBD><C5B2>..
|
|||
|
|
#ifndef _GAMESERVER
|
|||
|
|
std::string szAction = "Idle_";
|
|||
|
|
char buffer[65];
|
|||
|
|
_itoa_s(m_iDuplicateCount, buffer, 65, 10 );
|
|||
|
|
szAction += buffer;
|
|||
|
|
|
|||
|
|
if (m_hEtcObjectEffect)
|
|||
|
|
m_hEtcObjectEffect->SetActionQueue(szAction.c_str());
|
|||
|
|
#endif // _GAMESERVER
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߺ<EFBFBD> ī<><C4AB>Ʈ<EFBFBD><C6AE> <20>Ǹ<EFBFBD>
|
|||
|
|
DNTableFileFormat* pSkillTable = NULL;
|
|||
|
|
int iDuplicateCount = 0;
|
|||
|
|
pSkillTable = GetDNTable( CDnTableDB::TSKILL );
|
|||
|
|
if (pSkillTable)
|
|||
|
|
iDuplicateCount = pSkillTable->GetFieldFromLablePtr( m_ParentSkillInfo.iSkillID, "_EffectAmassCount" )->GetInteger();
|
|||
|
|
|
|||
|
|
if (iDuplicateCount != 0 && iDuplicateCount == m_iDuplicateCount)
|
|||
|
|
{
|
|||
|
|
//<2F><>ø ī<><C4AB>Ʈ <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> <20>ϸ<EFBFBD> Ȱ<><C8B0>ȭ <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
SetActivateBlow(true);
|
|||
|
|
|
|||
|
|
m_hActor->AddStateBlowSignal(this->GetMySmartPtr());
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDnPileAddEffectBlow::OnSetParentSkillInfo()
|
|||
|
|
{
|
|||
|
|
if (m_ParentSkillInfo.hSkillUser)
|
|||
|
|
{
|
|||
|
|
m_pActionElement = m_ParentSkillInfo.hSkillUser->GetElement( m_szTargetAction.c_str() );
|
|||
|
|
|
|||
|
|
m_ActionDurationTime = 0;
|
|||
|
|
|
|||
|
|
if (m_pActionElement)
|
|||
|
|
{
|
|||
|
|
m_ActionDurationTime = m_pActionElement->dwLength;
|
|||
|
|
m_vlpSignalList = m_pActionElement->pVecSignalList;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDnPileAddEffectBlow::SignalProcess( LOCAL_TIME LocalTime, float fDelta )
|
|||
|
|
{
|
|||
|
|
if (IsEnd() == true)
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
//#ifdef _GAMESERVER
|
|||
|
|
if( m_ParentSkillInfo.hSkillUser &&
|
|||
|
|
m_hActor )
|
|||
|
|
{
|
|||
|
|
if( m_pActionElement )
|
|||
|
|
{
|
|||
|
|
float fFPS = 60.0f;
|
|||
|
|
float fPrevFrame = m_fFrame - 1.0f;
|
|||
|
|
|
|||
|
|
if( m_pActionElement->dwLength < (DWORD)m_fFrame )
|
|||
|
|
{
|
|||
|
|
m_fFrame = 1.0f;
|
|||
|
|
fPrevFrame = -0.1f;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..<2E><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><>??
|
|||
|
|
SetState(STATE_BLOW::STATE_END);
|
|||
|
|
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ͷ<EFBFBD> <20>ٲ㼭 <20>ñ׳ε<D7B3><CEB5><EFBFBD><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŵ.
|
|||
|
|
MatrixEx OriginalCross = *(m_ParentSkillInfo.hSkillUser->GetMatEx());
|
|||
|
|
MatrixEx ChargerActorCross = *(m_hActor->GetMatEx());
|
|||
|
|
*(m_ParentSkillInfo.hSkillUser->GetMatEx()) = ChargerActorCross;
|
|||
|
|
|
|||
|
|
#ifdef _GAMESERVER
|
|||
|
|
m_ParentSkillInfo.hSkillUser->PushForceHitElement( m_ParentSkillInfo.eSkillElement );
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
CEtActionSignal *pSignal = NULL;
|
|||
|
|
|
|||
|
|
#if defined(PRE_FIX_55378)
|
|||
|
|
m_ParentSkillInfo.hSkillUser->SetChargerAction(m_szTargetAction.c_str());
|
|||
|
|
#endif // PRE_FIX_55378
|
|||
|
|
|
|||
|
|
for( DWORD i=0; i < m_vlpSignalList.size(); i++ )
|
|||
|
|
{
|
|||
|
|
pSignal = m_vlpSignalList[i];
|
|||
|
|
if( pSignal->CheckSignal( fPrevFrame, m_fFrame ) == true )
|
|||
|
|
{
|
|||
|
|
LOCAL_TIME StartTime = LocalTime - (LOCAL_TIME)( 1000.f / fFPS * ( m_fFrame - pSignal->GetStartFrame() ) );
|
|||
|
|
LOCAL_TIME EndTime = LocalTime + (LOCAL_TIME)( 1000.f / fFPS * ( pSignal->GetEndFrame() - m_fFrame ) );
|
|||
|
|
|
|||
|
|
m_ParentSkillInfo.hSkillUser->OnSignal( (SignalTypeEnum)pSignal->GetSignalIndex(), pSignal->GetData(), LocalTime,
|
|||
|
|
StartTime, EndTime, pSignal->GetSignalListArrayIndex() );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if defined(PRE_FIX_55378)
|
|||
|
|
m_ParentSkillInfo.hSkillUser->SetChargerAction(NULL);
|
|||
|
|
#endif // PRE_FIX_55378
|
|||
|
|
|
|||
|
|
*(m_ParentSkillInfo.hSkillUser->GetMatEx()) = OriginalCross;
|
|||
|
|
|
|||
|
|
#ifdef _GAMESERVER
|
|||
|
|
m_ParentSkillInfo.hSkillUser->PopForceHitElement();
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
m_fFrame += (fDelta * fFPS);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
#if defined(PRE_ADD_PREFIX_SYSTE_RENEW)
|
|||
|
|
void CDnPileAddEffectBlow::AddStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue)
|
|||
|
|
{
|
|||
|
|
char szBuff[128] = {0, };
|
|||
|
|
|
|||
|
|
szNewValue = szOrigValue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDnPileAddEffectBlow::RemoveStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue)
|
|||
|
|
{
|
|||
|
|
char szBuff[128] = {0, };
|
|||
|
|
|
|||
|
|
szNewValue = szOrigValue;
|
|||
|
|
}
|
|||
|
|
#endif // PRE_ADD_PREFIX_SYSTE_RENEW
|