| package forestry.api.genetics; |
| |
| import java.util.Collection; |
| |
| /** |
| * Individuals can be seeded either as hive drops or as mutation results. |
| * |
| * {@link IAlleleRegistry} manages these. |
| * |
| * @author SirSengir |
| */ |
| public interface IMutation { |
| |
| /** |
| * @return {@link ISpeciesRoot} this mutation is associated with. |
| */ |
| ISpeciesRoot getRoot(); |
| |
| /** |
| * @return first of the alleles implementing IAlleleSpecies required for this mutation. |
| */ |
| IAllele getAllele0(); |
| |
| /** |
| * @return second of the alleles implementing IAlleleSpecies required for this mutation. |
| */ |
| IAllele getAllele1(); |
| |
| /** |
| * @return Array of {@link IAllele} representing the full default genome of the mutated side. |
| * |
| * Make sure to return a proper array for the species class. Returning an allele of the wrong type will cause cast errors on runtime. |
| */ |
| IAllele[] getTemplate(); |
| |
| /** |
| * @return Unmodified base chance for mutation to fire. |
| */ |
| float getBaseChance(); |
| |
| /** |
| * @return Collection of localized, human-readable strings describing special mutation conditions, if any. |
| */ |
| Collection<String> getSpecialConditions(); |
| |
| /** |
| * @param allele |
| * @return true if the passed allele is one of the alleles participating in this mutation. |
| */ |
| boolean isPartner(IAllele allele); |
| |
| /** |
| * @param allele |
| * @return the other allele which was not passed as argument. |
| */ |
| IAllele getPartner(IAllele allele); |
| |
| /** |
| * @return true if the mutation should not be displayed in the beealyzer. |
| */ |
| boolean isSecret(); |
| |
| } |