rendered paste body public class WalkTimer : Timer
{
private Entity m_Entity;
private int m_Cycle;
public WalkTimer(Entity e)
: base(TimeSpan.Zero, TimeSpan.FromSeconds(0.5))
{
m_Entity = e;
Priority = TimerPriority.EveryTick;
m_Cycle = 0;
}
protected override void OnTick()
{
if (m_Entity == null)
Stop();
if ((m_Entity is Player) && (m_Entity as Player).NetState == null)
Stop();
bool NeedMove = false;
m_Cycle++;
switch (m_Entity.WalkSpeed)
{
case WalkSpeed.Quick:
NeedMove = true;
m_Cycle = 0;
break;
case WalkSpeed.Normal:
if (m_Cycle >= 2)
{
m_Cycle = 0;
NeedMove = true;
}
break;
case WalkSpeed.Slow:
if (m_Cycle >= 4)
{
m_Cycle = 0;
NeedMove = true;
}
break;
}
if (NeedMove && !m_Entity.MoveOneStep())
Stop();
}