private void updateStunned(float a_deltaTime)
{
m_stunnedTimer -= a_deltaTime;
if (!m_stunnedGravity)
{
m_gravity = 0;
}
if (m_stunnedDeacceleration)
{
if (m_speed.X > 0)
{
m_speed.X = Math.Max(m_speed.X - (DEACCELERATION * a_deltaTime), 0);
}
else if (m_speed.X < 0)
{
m_speed.X = Math.Min(m_speed.X + (DEACCELERATION * a_deltaTime), 0);
}
}
if (m_stunnedTimer <= 0)
{
m_stunnedTimer = 0;
m_stunned = false;
m_stunnedGravity = true;
m_speed.X = 0;
if (m_stunnedFlipSprite)
{
m_facingRight = !m_facingRight;
m_stunnedFlipSprite = false;
}
if (m_collisionShape == null)
{
if (m_stunnedState == State.Hanging)
{
changeAnimation();
m_collisionShape = m_hangHitBox;
//m_position.plusYWith(m_standHitBox.m_height / 1.1f);
m_lastPosition.Y = m_position.getGlobalY() - 20;
if (m_currentState != State.Hanging)
{
m_lastState = State.Hanging;
m_imgOffsetY += m_rollHitBox.m_height / 4f;
m_position.plusYWith(m_rollHitBox.m_height / 1.295f - 1);
Game.getInstance().m_camera.getPosition().plusYWith(-m_rollHitBox.m_height / 1.295f);
}
else
{
m_imgOffsetY += m_standHitBox.m_height / 1.8f;
}
if (!m_facingRight)
{
m_imgOffsetX += m_standHitBox.m_width * 1.9f;
}
}
else if (m_stunnedState == State.Rolling || (m_stunnedState == State.Hiding && m_currentHidingImage == DUCKHIDINGIMAGE))
{
m_collisionShape = m_rollHitBox;
}
else if (m_stunnedState == State.Slide)
{
m_collisionShape = m_slideBox;
}
else
{
m_collisionShape = m_standHitBox;
}
}
if (m_currentState == State.Stop)
{
changeAnimation();
m_imgOffsetX = 0;
m_imgOffsetY = 0;
}
m_currentState = m_stunnedState;
}
}