Esempio n. 1
0
    Directions PickRandomAvailableDirection()
    {
        List <Directions> availableDirs1 = new List <Directions>();

        for (int i = 0; i < 4; i++)
        {
            if (MapUtility.CanMove(transform.gameObject, i) && MapUtility.OppositeDirection((Directions)i) != currentDirection)
            {
                availableDirs1.Add((Directions)i);
            }
        }

        System.Random rand = new System.Random();

        int count = availableDirs1.Count;

        if (count > 0)
        {
            return(availableDirs1[rand.Next(availableDirs1.Count)]);
        }
        else
        {
            return(MapUtility.OppositeDirection(currentDirection));
        }
    }
Esempio n. 2
0
 void StopMovingJunction()       //what happends when a tween to a junction is complete
 {
     if (MapUtility.CanMove(transform.gameObject, (int)move))
     {
         currentDirection = move;
         MoveToPositionDeadend();
     }
     else
     {
         MoveToPositionJunction(MapUtility.getBackPoint(transform.gameObject, currentDirection));
     }
 }
Esempio n. 3
0
    Directions PickBestDirection()
    {
        Directions rValue = Directions.Right;

        List <Directions> availableDirs = new List <Directions>();

        for (int i = 0; i < 4; i++)
        {
            if (MapUtility.CanMove(transform.gameObject, i) && MapUtility.OppositeDirection((Directions)i) != currentDirection)
            {
                availableDirs.Add((Directions)i);
            }
        }

        List <int> distances = GetDistances(availableDirs, GameFunctions.GetPlayerObject());

        if (type == EnemyType.Aggressive || type == EnemyType.Front)
        {
            int min = 10000;

            for (int i = 0; i < distances.Count; i++)
            {
                if (distances[i] < min)
                {
                    min    = distances[i];
                    rValue = availableDirs[i];
                }
            }
        }
        else
        {
            int max = 0;

            for (int i = 0; i < distances.Count; i++)
            {
                if (distances[i] > max)
                {
                    max    = distances[i];
                    rValue = availableDirs[i];
                }
            }
        }

        return(rValue);
    }