#include "SunClientPrecompiledHeader.h" #include "StateBase.h" #include "SkillState.h" #include "SkillStateFlyingCharging.h" #include "Character.h" #include <../../ProgramCommon/SkillInfoParser.h> SkillStateFlyingCharging::SkillStateFlyingCharging() { m_IsMove = FALSE; m_IsDamaged = FALSE; m_IsStarted = FALSE; } SkillStateFlyingCharging::~SkillStateFlyingCharging() { } STATEPROCESS::TYPE SkillStateFlyingCharging::OnProcess(Object* pOwner, DWORD CurTime,DWORD dwTick) { EnterProcess(pOwner,CurTime,dwTick); Character* pCharacter = (Character*)pOwner; Character* pTarget = (Character*)pCharacter->GetTargetObject(); if( pTarget == NULL ) return STATEPROCESS::END; // À̺¥Æ®Ã¼Å© CheckEvent(); static float s_rate1 = 15.0f; static float s_rate2 = 80.f; if( m_IsStarted == FALSE && GetAnimationRate() >= s_rate1 ) { WzVector CurrentPosition = pCharacter->GetVisiblePos(); WzVector TargetPosition = pTarget->GetVisiblePos(); pCharacter->Move( CurrentPosition, TargetPosition, CMS_RUN, TRUE ); WzVector Distance = TargetPosition - CurrentPosition; m_fRange = VectorLength(&Distance); m_IsStarted = TRUE; m_IsMove = TRUE; } if( GetAnimationRate() >= s_rate1 && GetAnimationRate() < s_rate2 ) { if( m_IsMove == TRUE ) { static float s_time_multiplier = 5.0f; ProcessMove( pCharacter, m_fRange * SPEED_MULTIPLIER * s_time_multiplier, dwTick); // ´ë»óÀÇ À§Ä¡¿¡ µµÂø if( FALSE == pCharacter->GetPathExplorer()->IsMoving() ) { m_IsMove = FALSE; } } } if( GetAnimationRate() >= s_rate2 && m_IsDamaged == FALSE ) { // µ¥¹ÌÁö Ç¥½Ã pCharacter->ProcessAttackResult_Group( pCharacter->GetCurrentAttackSerial() ); m_IsDamaged = TRUE; } return LeaveProcess(pOwner,CurTime,dwTick); }