222 lines
No EOL
6.6 KiB
C++
222 lines
No EOL
6.6 KiB
C++
#include "StdAfx.h"
|
||
#include "DnFrameStopBlow.h"
|
||
|
||
#ifdef _GAMESERVER
|
||
// #include "DnGameRoom.h"
|
||
// #include "DnGameDataManager.h"
|
||
// #include "DnUserSession.h"
|
||
#include "DnStateBlow.h"
|
||
#else
|
||
#include "DnEtcObject.h"
|
||
#include "DnLocalPlayerActor.h"
|
||
#include "DnInterface.h"
|
||
#include "navigationmesh.h"
|
||
#include "InputWrapper.h"
|
||
#endif
|
||
|
||
#ifdef _DEBUG
|
||
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
|
||
#endif
|
||
|
||
const LOCAL_TIME SHAKE_TIME = 3000;
|
||
|
||
CDnFrameStopBlow::CDnFrameStopBlow(DnActorHandle hActor, const char *szValue) : CDnBlow(hActor)
|
||
#if defined(PRE_FIX_53274)
|
||
#ifndef _GAMESERVER
|
||
,m_ComboCalc( CDnComboCalculator::CIRCULAR_CHECK )
|
||
#endif
|
||
#endif // PRE_FIX_53274
|
||
{
|
||
m_StateBlow.emBlowIndex = STATE_BLOW::BLOW_146;
|
||
|
||
#if defined(PRE_FIX_53274)
|
||
SetValue(szValue);
|
||
m_fValue = (szValue == NULL ? 0.0f : (float)atof(szValue));
|
||
|
||
m_bPlayerCharacter = false;
|
||
|
||
#ifndef _GAMESERVER
|
||
if (m_fValue != 0)
|
||
{
|
||
std::vector<BYTE> vlKeysToCheck;
|
||
vlKeysToCheck.push_back( g_WrappingKeyData[IW_MOVELEFT] );
|
||
vlKeysToCheck.push_back( g_WrappingKeyData[IW_MOVERIGHT] );
|
||
vlKeysToCheck.push_back( g_WrappingKeyData[IW_MOVELEFT] );
|
||
vlKeysToCheck.push_back( g_WrappingKeyData[IW_MOVERIGHT] );
|
||
vlKeysToCheck.push_back( g_WrappingKeyData[IW_MOVELEFT] );
|
||
vlKeysToCheck.push_back( g_WrappingKeyData[IW_MOVERIGHT] );
|
||
|
||
m_ComboCalc.SetKeysToCheck( vlKeysToCheck );
|
||
|
||
vlKeysToCheck.clear();
|
||
vlKeysToCheck.push_back( IW_MOVELEFT ); vlKeysToCheck.push_back( IW_MOVELEFT ); vlKeysToCheck.push_back( IW_MOVELEFT );
|
||
vlKeysToCheck.push_back( IW_MOVERIGHT ); vlKeysToCheck.push_back( IW_MOVERIGHT ); vlKeysToCheck.push_back( IW_MOVERIGHT );
|
||
vlKeysToCheck.push_back( IW_MOVEBACK ); vlKeysToCheck.push_back( IW_MOVEBACK ); vlKeysToCheck.push_back( IW_MOVEBACK );
|
||
vlKeysToCheck.push_back( IW_MOVEFRONT ); vlKeysToCheck.push_back( IW_MOVEFRONT ); vlKeysToCheck.push_back( IW_MOVEFRONT );
|
||
|
||
m_ComboCalc.SetPadsToCheck( vlKeysToCheck, 3.0f );
|
||
|
||
m_bPlayerCharacter = dynamic_cast<CDnLocalPlayerActor*>(m_hActor.GetPointer()) ? true : false;
|
||
}
|
||
#endif // _GAMESERVER
|
||
#endif // PRE_FIX_53274
|
||
}
|
||
|
||
CDnFrameStopBlow::~CDnFrameStopBlow(void)
|
||
{
|
||
}
|
||
|
||
void CDnFrameStopBlow::OnBegin( LOCAL_TIME LocalTime, float fDelta )
|
||
{
|
||
//// <20><><EFBFBD>ٷ<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD> <20><><EFBFBD>ǵ<EFBFBD> <20><><EFBFBD>½<EFBFBD>Ű<EFBFBD><C5B0> <20><><EFBFBD><EFBFBD> <20><>Ŵ.
|
||
//m_hActor->ResetPlaySpeed();
|
||
//m_hActor->SetPlaySpeed( 1000000, 0.0f );
|
||
|
||
m_hActor->AddedFrameStop();
|
||
|
||
// #29627 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ϱ<EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> hit state <20><> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD> hit state <20>߰<EFBFBD>.
|
||
if( m_hActor->IsPlayerActor() ) // <20>÷<EFBFBD><C3B7>̾<EFBFBD><CCBE><EFBFBD> <20><><EFBFBD>츸.
|
||
{
|
||
if( false == m_hActor->IsHit() )
|
||
{
|
||
int nState = m_hActor->GetState();
|
||
nState |= CDnActorState::ActorStateEnum::Hit;
|
||
m_hActor->SetState( (CDnActorState::ActorStateEnum)nState );
|
||
}
|
||
}
|
||
//////////////////////////////////////////////////////////////////////////
|
||
|
||
#if defined(PRE_FIX_53274)
|
||
#ifndef _GAMESERVER
|
||
// <20>÷<EFBFBD><C3B7>̾ <20>ɷ<EFBFBD><C9B7><EFBFBD> <20><><EFBFBD>쿡 <20><>ư <20><>Ÿ UI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if( m_fValue != 0.0f && m_bPlayerCharacter )
|
||
{
|
||
#if defined(PRE_FIX_57706)
|
||
if (m_hActor->GetStickAniDlgRefCount() == 0)
|
||
{
|
||
GetInterface().ShowStickAniDialog( true );
|
||
}
|
||
|
||
m_hActor->AddStickAniDlgRefCount();
|
||
#else
|
||
GetInterface().ShowStickAniDialog( true );
|
||
#endif // PRE_FIX_57706
|
||
}
|
||
#endif // _GAMESERVER
|
||
#endif // PRE_FIX_53274
|
||
|
||
OutputDebug( "CDnFrameStopBlow::OnBegin, Value:%f \n", m_fValue );
|
||
}
|
||
|
||
#if defined(PRE_FIX_53274)
|
||
void CDnFrameStopBlow::Process( LOCAL_TIME LocalTime, float fDelta )
|
||
{
|
||
__super::Process(LocalTime, fDelta);
|
||
|
||
#ifndef _GAMESERVER
|
||
if (m_fValue != 0.0f)
|
||
{
|
||
if( CDnLocalPlayerActor::s_hLocalActor == m_hActor )
|
||
{
|
||
// TODO: <20>¿<EFBFBD> <20>Է<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20>ٿ<EFBFBD><D9BF><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>...
|
||
int iNumComboCount = 0;
|
||
bool bComboSatisfy = m_ComboCalc.Process( LocalTime, fDelta, &iNumComboCount );
|
||
|
||
for( int i = 0; i < iNumComboCount; ++i )
|
||
m_StateBlow.fDurationTime -= 1.0f;
|
||
|
||
if( bComboSatisfy )
|
||
{
|
||
OutputDebug( "[<5B><><EFBFBD><EFBFBD>Ż<EFBFBD><C5BB>] %d ȸ <20><EFBFBD> <20><><EFBFBD><EFBFBD>, <20>ð<EFBFBD> %2.2f <20><> <20>پ<EFBFBD><D9BE><EFBFBD> \n", iNumComboCount, m_StateBlow.fDurationTime );
|
||
}
|
||
}
|
||
|
||
// <20>ڱ<EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ż<><C5BB><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> üũ<C3BC>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD><EFBFBD>ٰ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||
if( CDnLocalPlayerActor::s_hLocalActor == m_hActor )
|
||
{
|
||
if( m_StateBlow.fDurationTime < 0.2f )
|
||
{
|
||
// <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD>ش<EFBFBD>.
|
||
#if defined(PRE_FIX_57706)
|
||
//Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE> <20><>.. <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>༭ <20><>Ŷ <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD><C7B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
|
||
//<2F><> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ŵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD>. <20>ð<EFBFBD><C3B0><EFBFBD> <20><> <20>Ǽ<EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ǰų<C7B0>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20>Ƽ<DEBE> <20><><EFBFBD><EFBFBD> <20>ǵ<EFBFBD><C7B5><EFBFBD> <20>Ѵ<EFBFBD>.
|
||
CDnLocalPlayerActor* pLocalPlayerActor = static_cast<CDnLocalPlayerActor*>(m_hActor.GetPointer());
|
||
if (pLocalPlayerActor)
|
||
pLocalPlayerActor->CmdRemoveStateEffectByServerBlowID(GetServerBlowID());
|
||
#else
|
||
m_hActor->CmdRemoveStateEffect( m_StateBlow.emBlowIndex, true );
|
||
#endif // PRE_FIX_57706
|
||
}
|
||
}
|
||
}
|
||
#endif // _GAMESERVER
|
||
}
|
||
#endif // PRE_FIX_53274
|
||
|
||
void CDnFrameStopBlow::OnEnd( LOCAL_TIME LocalTime, float fDelta )
|
||
{
|
||
//m_hActor->ResetPlaySpeed();
|
||
|
||
m_hActor->RemovedFrameStop();
|
||
|
||
#if defined(PRE_FIX_53274)
|
||
#ifndef _GAMESERVER
|
||
// <20>÷<EFBFBD><C3B7>̾ <20>ɷ<EFBFBD><C9B7><EFBFBD> <20><><EFBFBD>쿡 <20><>ư <20><>Ÿ UI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if( dynamic_cast<CDnLocalPlayerActor*>(m_hActor.GetPointer()) )
|
||
{
|
||
#if defined(PRE_FIX_57706)
|
||
m_hActor->RemoveStickAniDlgRefCount();
|
||
|
||
if (m_hActor->GetStickAniDlgRefCount() == 0)
|
||
{
|
||
GetInterface().ShowStickAniDialog( false );
|
||
}
|
||
#else
|
||
GetInterface().ShowStickAniDialog( false );
|
||
#endif // PRE_FIX_57706
|
||
}
|
||
#endif // _GAMESERVER
|
||
#endif // PRE_FIX_53274
|
||
|
||
#if defined(_GAMESERVER)
|
||
if (m_fValue != 0.0f)
|
||
{
|
||
//<2F><><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<>Ƽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ϵ<EFBFBD><CFB5><EFBFBD> <20>Ѵ<EFBFBD>.
|
||
CDnStateBlow* pStateBlow = m_hActor->GetStateBlow();
|
||
int nStateCount = pStateBlow ? pStateBlow->GetNumStateBlow() : 0;
|
||
for( int iBlow = 0; iBlow < nStateCount; ++iBlow )
|
||
{
|
||
DnBlowHandle hExistingBlow = pStateBlow->GetStateBlow( iBlow );
|
||
CDnSkill::SkillInfo* pSkillInfo = const_cast<CDnSkill::SkillInfo*>(hExistingBlow->GetParentSkillInfo());
|
||
|
||
//<2F><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD><CFB0><EFBFBD>..
|
||
if (pSkillInfo &&
|
||
pSkillInfo->iSkillID == m_ParentSkillInfo.iSkillID &&
|
||
pSkillInfo->hSkillUser &&
|
||
pSkillInfo->hSkillUser == m_ParentSkillInfo.hSkillUser)
|
||
{
|
||
hExistingBlow->SetState(STATE_BLOW::STATE_END);
|
||
m_hActor->CmdRemoveStateEffectFromID(hExistingBlow->GetBlowID());
|
||
}
|
||
}
|
||
}
|
||
#endif // _GAMESERVER
|
||
|
||
OutputDebug( "CDnFrameStopBlow::OnEnd\n" );
|
||
}
|
||
|
||
#if defined(PRE_ADD_PREFIX_SYSTE_RENEW)
|
||
void CDnFrameStopBlow::AddStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue)
|
||
{
|
||
char szBuff[128] = {0, };
|
||
|
||
szNewValue = szOrigValue;
|
||
}
|
||
|
||
void CDnFrameStopBlow::RemoveStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue)
|
||
{
|
||
char szBuff[128] = {0, };
|
||
|
||
szNewValue = szOrigValue;
|
||
}
|
||
#endif // PRE_ADD_PREFIX_SYSTE_RENEW
|