/// <summary> /// Chases the player's current position. Updates the attack timer and /// attacks the player if he is close enough. /// </summary> /// <param name="a_playerPosition">Rectangle of the player position.</param> public void ChasePlayer(Rectangle a_playerPosition) { if (m_attackTimer > 0) { m_attackTimer--; } if (GetDistance(m_position, m_origin) > m_pursueDistance) { m_returnToOrigin = true; m_pursuePlayer = false; } else if (m_position.X < a_playerPosition.X && m_position.Y < a_playerPosition.Y) { MoveRight(); MoveDown(); } else if (m_position.X > a_playerPosition.X && m_position.Y > a_playerPosition.Y) { MoveLeft(); MoveUp(); } else if (m_position.X > a_playerPosition.X && m_position.Y < a_playerPosition.Y) { MoveLeft(); MoveDown(); } else if (m_position.X < a_playerPosition.X && m_position.Y > a_playerPosition.Y) { MoveRight(); MoveUp(); } else if (m_position.X > a_playerPosition.X) { MoveLeft(); } else if (m_position.X < a_playerPosition.X) { MoveRight(); } else if (m_position.Y < a_playerPosition.Y) { MoveDown(); } else //(m_position.Y > a_playerPosition.Y) { MoveUp(); } if (GetDistance(new Vector2(a_playerPosition.X, a_playerPosition.Y), m_position) <= m_meleeAttackDistance && m_attackTimer == 0) { CombatControl.IssueAttack(this, 0); m_attackTimer = 60; } }