public string Translate(IChromosome chromosome)
        {
            var chromValue = (chromosome as ShortArrayChromosome).Value;
            var description = new ChromosomeDescription(null, 0, 0, 0);
            foreach(var desc in descriptions)
                if (chromValue.SequenceEqual(desc.Key))
                {
                    description = desc.Value;
                    break;
                }

            descriptions.Clear();
            descriptions.Add(chromValue, description);

            if (description.InvalidGenes > 0)
                return "Invalid genes: " + description.InvalidGenes;

            var sb = new StringBuilder();

            for (int heroI = 0; heroI < simulator.PartySize; heroI++)
            {
                if (heroI == description.FrontRowCount && simulator.PartySize > 1)
                    sb.AppendLine("Back row:");

                var build = description.Builds[heroI];
                var hero = Library.Heroes[build.HeroType];
                sb.Append(hero.Name + ": ");

                for(int i = 0; i < build.Items.Length; i++)
                {
                    if (i > 0)
                        sb.Append(", ");
                    if (simulator.ItemChoices(hero, i) == 0)
                        continue;
                    sb.Append(simulator.ItemData(hero, i, build.Items[i]).Name);
                }

                sb.Append(", ");
                sb.Append(build.EnhancmentCounts[0]);
                sb.Append(" x ");
                sb.Append(potionName(build.EnhancmentTypes[0]));

                sb.Append(", ");
                sb.Append(build.EnhancmentCounts[1]);
                sb.Append(" x ");
                sb.Append(potionName(build.EnhancmentTypes[1]));
                sb.AppendLine();
            }

            sb.Append(description.Deaths + " deaths");
            return sb.ToString();
        }
Пример #2
0
        public string Translate(IChromosome chromosome)
        {
            var chromValue  = (chromosome as ShortArrayChromosome).Value;
            var description = new ChromosomeDescription(null, 0, 0, 0);

            foreach (var desc in descriptions)
            {
                if (chromValue.SequenceEqual(desc.Key))
                {
                    description = desc.Value;
                    break;
                }
            }

            descriptions.Clear();
            descriptions.Add(chromValue, description);

            if (description.InvalidGenes > 0)
            {
                return("Invalid genes: " + description.InvalidGenes);
            }

            var sb = new StringBuilder();

            for (int heroI = 0; heroI < simulator.PartySize; heroI++)
            {
                if (heroI == description.FrontRowCount && simulator.PartySize > 1)
                {
                    sb.AppendLine("Back row:");
                }

                var build = description.Builds[heroI];
                var hero  = Library.Heroes[build.HeroType];
                sb.Append(hero.Name + ": ");

                for (int i = 0; i < build.Items.Length; i++)
                {
                    if (i > 0)
                    {
                        sb.Append(", ");
                    }
                    if (simulator.ItemChoices(hero, i) == 0)
                    {
                        continue;
                    }
                    sb.Append(simulator.ItemData(hero, i, build.Items[i]).Name);
                }

                sb.Append(", ");
                sb.Append(build.EnhancmentCounts[0]);
                sb.Append(" x ");
                sb.Append(potionName(build.EnhancmentTypes[0]));

                sb.Append(", ");
                sb.Append(build.EnhancmentCounts[1]);
                sb.Append(" x ");
                sb.Append(potionName(build.EnhancmentTypes[1]));
                sb.AppendLine();
            }

            sb.Append(description.Deaths + " deaths");
            return(sb.ToString());
        }