Files
Sun1602/Client/GameClient/State/SkillStateRisingSerpent.cpp
2022-10-26 12:25:11 +08:00

60 lines
1.5 KiB
C++

#include "SunClientPrecompiledHeader.h"
#include "StateBase.h"
#include "SkillState.h"
#include "SkillStateRisingSerpent.h"
#include "Character.h"
#include "Hero.h"
#include "SkillEffectFunc.h"
#include "SkillInfoParser.h"
#include "GlobalFunc.h"
SkillStateRisingSerpent::SkillStateRisingSerpent()
{
}
SkillStateRisingSerpent::~SkillStateRisingSerpent()
{
}
STATECHANGE::TYPE SkillStateRisingSerpent::OnStart(Object* pOwner, DWORD CurTime)
{
// À̵¿ À§Ä¡¸¦ ¸ÕÀú ±¸ÇÑ´Ù
Character* pCharacter = (Character*)pOwner;
Character* pTarget = (Character*)pCharacter->GetTargetObject();
WzVector CurrentPosition = pCharacter->GetVisiblePos();
WzVector Direction = pTarget ? pTarget->GetVisiblePos() - CurrentPosition : pCharacter->GetDirection();
VectorNormalize(&Direction,&Direction);
static float s_MoveLength = 3.0f;
WzVector TargetPosition = CurrentPosition + Direction * s_MoveLength;
pCharacter->Move( CurrentPosition, TargetPosition, CMS_RUN, TRUE );
return StateSkill::OnStart(pOwner, CurTime );
}
STATEPROCESS::TYPE SkillStateRisingSerpent::OnProcess(Object* pOwner, DWORD CurTime,DWORD dwTick)
{
STATEPROCESS::TYPE Result = StateSkill::OnProcess(pOwner, CurTime, dwTick );
Character* pCharacter = (Character*)pOwner;
if( GetAnimationRate() <= 50.0f )
{
static float s_MoveSpeed = 8.0f;
const float SPEED_PER_SECOND = s_MoveSpeed * SPEED_MULTIPLIER;
ProcessMove( pCharacter, SPEED_PER_SECOND, dwTick);
}
else
{
pCharacter->StopMove();
}
return Result;
}