// ***********************************************************************
// Assembly : Game
// Author : Kimch
// Created : 2020-09-02
// Description :
// Last Modified By :
// Last Modified On :
// ***********************************************************************
//
//
// ***********************************************************************
using System.Collections.Generic;
using UnityEngine;
namespace G
{
public class Stat_MoveAction : Stat_BaseAction
{
private float _speedFactor;
private float _moveSpeed;
private float _footStepTime;
public Stat_MoveAction(Stat_StateManager statMgr)
: base(statMgr)
{
}
public override bool Enter(Dictionary param, bool clearDelegates = false)
{
base.Enter(param, clearDelegates);
if (param != null && param.Count > 0)
{
_speedFactor = (float)param["speed"];
}
else
{
_speedFactor = 6.5f;
}
_moveSpeed = m_char.GetMoveSpeed();
m_char.ResetRigidBody();
m_char.SetAtkCollision(false);
m_char.SetAtkCollision(true);
return true;
}
public override bool UpdateDelegate()
{
_moveSpeed = m_char.GetMoveSpeed();
if (_speedFactor > 4.5f)
{
_speedFactor -= 2f * Time.deltaTime;
//string animName = m_char.GetAnimName("run");
//m_char.PlayAnimation(animName, true);
_footStepTime += Time.deltaTime;
if (_footStepTime > 0.3f)
{
if (m_char is EntityPlayer)
{
//HeroSounds.Instance.PlayStepSound(m_char as EntityPlayer);
}
_footStepTime = 0f;
}
}
else
{
if (!(_speedFactor > 0.2f))
{
SetCurActionState(enStat.STAT_ACTION_IDLE);
return true;
}
if (m_char.m_handMovement)
{
m_char.StartAI();
m_char.m_handMovement = false;
SetCurActionState(enStat.STAT_ACTION_IDLE);
return true;
}
_speedFactor -= 2f * Time.deltaTime;
//string animName2 = m_char.GetAnimName("walk");
//m_char.PlayAnimation(animName2, true);
//m_char.SetAnimationSpeed(animName2, m_speedFactor / 7.5f + 0.2f);
_moveSpeed -= (6.5f - _speedFactor) / 14f;
_footStepTime += Time.deltaTime;
if (_footStepTime > 0.4f)
{
if (m_char is EntityPlayer)
{
//HeroSounds.Instance.PlayStepSound(m_char as EntityPlayer);
}
_footStepTime = 0f;
}
}
if (_moveSpeed <= 0f)
{
_moveSpeed = 0f;
}
m_char.Move(m_char.forward, _moveSpeed);
return true;
}
public override bool CanTransition(enStat stat)
{
return true;
}
}
}