Esempio n. 1
0
        /// <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;
            }
        }