2024-12-21 10:04:04 +08:00
# 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