BloodMagic/BM_src/forestry/api/genetics/IClassification.java
2014-01-25 20:36:28 -05:00

103 lines
2.2 KiB
Java

package forestry.api.genetics;
/**
* Biological classifications from domain down to genus.
*
* Used by the *alyzers to display hierarchies.
*/
public interface IClassification {
public enum EnumClassLevel {
DOMAIN(0x777fff, true), KINGDOM(0x77c3ff), PHYLUM(0x77ffb6, true), DIVISION(0x77ffb6, true), CLASS(0x7bff77), ORDER(0xbeff77), FAMILY(0xfffd77),
SUBFAMILY(0xfffd77), TRIBE(0xfffd77), GENUS(0xffba77);
private int colour;
private boolean isDroppable;
private EnumClassLevel(int colour) {
this(colour, false);
}
private EnumClassLevel(int colour, boolean isDroppable) {
this.colour = colour;
this.isDroppable = isDroppable;
}
/**
* @return Colour to use for displaying this classification.
*/
public int getColour() {
return colour;
}
/**
* @return Indicates whether display of this classification level can be ommitted in case of space constraints.
*/
public boolean isDroppable() {
return isDroppable;
}
}
/**
* @return Level inside the full hierarchy this particular classification is located at.
*/
EnumClassLevel getLevel();
/**
* @return Unique String identifier.
*/
String getUID();
/**
* @return Localized branch name for user display.
*/
String getName();
/**
* A branch approximates a "genus" in real life. Real life examples: "Micrapis", "Megapis"
*
* @return flavour text (may be null)
*/
String getScientific();
/**
* @return Localized description of this branch. (May be null.)
*/
String getDescription();
/**
* @return Member groups of this one.
*/
IClassification[] getMemberGroups();
/**
* Adds subgroups to this group.
*/
void addMemberGroup(IClassification group);
/**
* @return Member species of this group.
*/
IAlleleSpecies[] getMemberSpecies();
/**
* Used by the allele registry to populate internal collection of branch members on the fly.
*
* @param species
*/
void addMemberSpecies(IAlleleSpecies species);
/**
* @return Parent classification, null if this is root.
*/
IClassification getParent();
/**
* Only used internally by the AlleleRegistry if this classification has been added to another one.
*
* @param parent
*/
void setParent(IClassification parent);
}