public IEnumerable <Formation> Generate(Random Random, FormationParameters Parameters)
 {
     yield return(new UnitGroup(
                      string.Empty,
                      new CompositeFormation(
                          string.Empty,
                          Atoms.Where(i => i.Matches(Parameters)).SelectMany(i => i.Generate(Random, Parameters))).Flatten()));
 }
 public IEnumerable <Formation> Generate(Random Random, FormationParameters Parameters)
 {
     if (Regenerate)
     {
         return(Enumerable.Repeat(Template, Count).SelectMany(i => i.Generate(Random, Parameters)));
     }
     return(Enumerable.Repeat(Template.Generate(Random, Parameters).ToList(), Count).SelectMany(i => i));
 }
Пример #3
0
        public IEnumerable <Formation> Generate(Random Random, FormationParameters Parameters)
        {
            var selected = TemplateCases.FirstOrDefault(i => i.Matches(Parameters));

            if (selected != null)
            {
                return(selected.Generate(Random, Parameters));
            }
            return(Enumerable.Empty <Formation>());
        }
Пример #4
0
 public IEnumerable <Formation> Generate(Random Random, FormationParameters Parameters)
 {
     yield return(new UnitGroup(
                      string.Empty,
                      new List <UnitCount>
     {
         new UnitCount(
             Utils.Choice(Random, UnitConfigurations.Where(Parameters.Matches)).UnitConfiguration, 1)
     }));
 }
Пример #5
0
        public IEnumerable <Formation> Generate(Random Random, FormationParameters Parameters)
        {
            WeightedVector <FormationTemplate> choices = new WeightedVector <FormationTemplate>();

            foreach (var template in Subtemplates.Where(i => i.Matches(Parameters)))
            {
                choices.Add(1 / template.GetExpectedValue(Parameters), template);
            }
            if (choices.Length > 0)
            {
                return(choices[Random.NextDouble()].Generate(Random, Parameters));
            }
            return(Enumerable.Empty <Formation>());
        }
Пример #6
0
 public double GetExpectedValue(FormationParameters Parameters)
 {
     return(Subtemplates.Sum(i => i.GetExpectedValue(Parameters)));
 }
 public IEnumerable <Formation> Generate(Random Random, FormationParameters Parameters)
 {
     return(Template.Generate(Random, Parameters));
 }
 public bool Matches(FormationParameters Parameters)
 {
     return(Parameters.Matches(Constraints) &&
            (Features.Count == 0 || Features.Any(i => Parameters.Features[(int)i])) &&
            Template.Matches(Parameters));
 }
 public double GetExpectedValue(FormationParameters Parameters)
 {
     return(Template.GetExpectedValue(Parameters));
 }
Пример #10
0
 public bool Matches(FormationParameters Parameters)
 {
     return(TemplateCases.Any(i => i.Matches(Parameters)));
 }
Пример #11
0
 public bool Matches(FormationParameters Parameters)
 {
     return(UnitConfigurations.Any(Parameters.Matches));
 }
 public bool Matches(FormationParameters Parameters)
 {
     return(Template.Matches(Parameters));
 }
 public bool Matches(FormationParameters Parameters)
 {
     return(Atoms.Any(i => i.Matches(Parameters)));
 }
 public double GetExpectedValue(FormationParameters Parameters)
 {
     return(Atoms.Sum(i => i.GetExpectedValue(Parameters)));
 }
Пример #15
0
 public bool Matches(FormationParameters Parameters)
 {
     return(Subtemplates.All(i => i.Matches(Parameters)));
 }
Пример #16
0
 public double GetExpectedValue(FormationParameters Parameters)
 {
     return(HarmonicAverage(
                TemplateCases.Where(i => i.Matches(Parameters)).Select(i => i.GetExpectedValue(Parameters))));
 }
Пример #17
0
 public IEnumerable <Formation> Generate(Random Random, FormationParameters Parameters)
 {
     yield return(new CompositeFormation(
                      string.Empty,
                      Subtemplates.SelectMany(i => i.Generate(Random, Parameters))));
 }
Пример #18
0
 public double GetExpectedValue(FormationParameters Parameters)
 {
     return(GetValue());
 }