/// <summary>
        /// Generates desires.
        /// </summary>
        public void Options()
        {
            Desires.Clear();

            foreach (var b in Beliefs)
            {
                if (b.Name == TypesBelief.PotentialWaterSpots)
                {
                    var waterPos = b.Predicate as List <Tuple <int, int> >;
                    waterPos.Sort(delegate(Tuple <int, int> tupleA, Tuple <int, int> tupleB)
                    {
                        var distA = ManhattanDistance(tupleA, new Tuple <int, int>(X, Y));
                        var distB = ManhattanDistance(tupleB, new Tuple <int, int>(X, Y));
                        if (distA < distB)
                        {
                            return(1);
                        }
                        if (distA > distB)
                        {
                            return(-1);
                        }
                        return(0);
                    });
                    foreach (var wPos in waterPos)
                    {
                        Desires.Enqueue(new Desire(TypesDesire.FindWater, new Desire(TypesDesire.GotoLocation, new Desire(TypesDesire.Dig, wPos))));
                    }
                }
            }
        }