示例#1
0
        private IEnumerable <UnitGraphEdgeSequence> findConversionSequence(UnitGraphEdgeSequence currentRoute, Unit target)
        {
            var sequences = new List <UnitGraphEdgeSequence>();
            var to        = currentRoute.Last.To;

            if (to.Equals(target))
            {
                sequences.Add(currentRoute);
                return(sequences);
            }

            foreach (var c in unitGraph[to].Conversions)
            {
                if (currentRoute.References(c))
                {
                    continue;
                }
                var newRoute = currentRoute.Clone();
                newRoute.Add(c);
                var innerSequences = findConversionSequence(newRoute, target);
                sequences.AddRange(innerSequences.Where(seq => seq.Last.To.Equals(target)));
            }
            return(sequences);
        }
示例#2
0
 public int CompareTo(UnitGraphEdgeSequence other)
 {
     return(edges.Count - other.edges.Count);
 }