CellsAutomate.Creatures.SimpleCreature.GetDirection C# (CSharp) Method

GetDirection() protected method

protected GetDirection ( FoodMatrix eatMatrix, Membrane creatures, Point position, Random random ) : DirectionEnum
eatMatrix CellsAutomate.Food.FoodMatrix
creatures Membrane
position Point
random System.Random
return DirectionEnum
        protected override DirectionEnum GetDirection(FoodMatrix eatMatrix, Membrane[,] creatures, Point position, Random random)
        {
            var points = CommonMethods.GetPoints(position);
            var directions = new List<DirectionEnum>();
            var directionsWithFood = new List<DirectionEnum>();
            foreach (var item in points)
            {
                if (!CommonMethods.IsValidAndFree(item, creatures)) continue;
                directions.Add(DirectionEx.DirectionByPoints(position, item));
                if(eatMatrix.HasOneBite(item))
                    directionsWithFood.Add(DirectionEx.DirectionByPoints(position, item));
            }
            if (directions.Count == 0) return DirectionEnum.Stay;
            return directionsWithFood.Count == 0 ? directions.ElementAt(random.Next(directions.Count)) : directionsWithFood.ElementAt(random.Next(directionsWithFood.Count));
        }