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)); } }
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)); } }
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); }