private void determineBestBreeding(Creature chosenCreature = null)
{
string selectedSpecies = (chosenCreature != null ? chosenCreature.species : "");
bool newSpecies = false;
if (selectedSpecies.Length == 0 && listViewSpeciesBP.SelectedIndices.Count > 0)
selectedSpecies = (string)listViewSpeciesBP.SelectedItems[0].Tag;
if (selectedSpecies.Length > 0 && breedingPlan1.currentSpecies != selectedSpecies)
{
breedingPlan1.currentSpecies = selectedSpecies;
breedingPlan1.speciesIndex = Values.V.speciesNames.IndexOf(selectedSpecies);
newSpecies = true;
int s = Values.V.speciesNames.IndexOf(selectedSpecies);
breedingPlan1.EnabledColorRegions = (s >= 0 ? Values.V.species[s].colors.Select(n => n.name != "").ToArray() : new bool[6] { true, true, true, true, true, true });
breedingPlanNeedsUpdate = true;
}
if (breedingPlanNeedsUpdate)
breedingPlan1.Creatures = creatureCollection.creatures.Where(c => c.species == selectedSpecies && c.status == CreatureStatus.Available && !c.neutered && c.cooldownUntil < DateTime.Now && c.growingUntil < DateTime.Now).ToList();
breedingPlan1.statWeights = statWeighting1.Weightings;
BreedingPlan.BreedingMode bm = BreedingPlan.BreedingMode.TopStatsConservative;
if (radioButtonBPTopStats.Checked)
bm = BreedingPlan.BreedingMode.TopStatsLucky;
else if (radioButtonBPHighStats.Checked)
bm = BreedingPlan.BreedingMode.BestNextGen;
breedingPlan1.chosenCreature = chosenCreature;
breedingPlan1.drawBestParents(bm, newSpecies);
breedingPlanNeedsUpdate = false;
}