aboutsummaryrefslogtreecommitdiff
path: root/src/Java/binnie/craftgui/mod
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2016-01-20 14:24:34 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2016-01-20 14:24:34 +1000
commit869c206c4fcc8001bd2e1d66f704290331813835 (patch)
tree96735ce8fe4665e2759c3374221d6f06f4527df2 /src/Java/binnie/craftgui/mod
parentec2c72827f01dd4bb2174137f1ab162f9ddaab62 (diff)
downloadGT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.gz
GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.bz2
GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.zip
Initial Commit
Diffstat (limited to 'src/Java/binnie/craftgui/mod')
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlBranchBox.java20
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlBranchBoxOption.java14
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlBreedingProgress.java41
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlDatabaseIndividualDisplay.java120
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlItemStackOption.java38
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlMutationBox.java71
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlMutationItem.java51
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlMutationSymbol.java80
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlSpeciesBox.java55
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlSpeciexBoxOption.java42
-rw-r--r--src/Java/binnie/craftgui/mod/database/DatabaseTab.java32
-rw-r--r--src/Java/binnie/craftgui/mod/database/EnumDiscoveryState.java8
-rw-r--r--src/Java/binnie/craftgui/mod/database/IDatabaseMode.java6
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageAbstract.java16
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageBranch.java13
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageBranchOverview.java67
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageBranchSpecies.java43
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageBreeder.java51
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageBreederStats.java23
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageSpecies.java13
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageSpeciesClassification.java54
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageSpeciesMutations.java27
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageSpeciesOverview.java88
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageSpeciesResultant.java27
-rw-r--r--src/Java/binnie/craftgui/mod/database/WindowAbstractDatabase.java314
25 files changed, 1314 insertions, 0 deletions
diff --git a/src/Java/binnie/craftgui/mod/database/ControlBranchBox.java b/src/Java/binnie/craftgui/mod/database/ControlBranchBox.java
new file mode 100644
index 0000000000..3aaf90d53a
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlBranchBox.java
@@ -0,0 +1,20 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.core.IWidget;
+import forestry.api.genetics.IClassification;
+
+class ControlBranchBox
+ extends ControlListBox<IClassification>
+{
+ public IWidget createOption(IClassification value, int y)
+ {
+ return new ControlBranchBoxOption((ControlList)getContent(), value, y);
+ }
+
+ public ControlBranchBox(IWidget parent, float x, float y, float width, float height)
+ {
+ super(parent, x, y, width, height, 12.0F);
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlBranchBoxOption.java b/src/Java/binnie/craftgui/mod/database/ControlBranchBoxOption.java
new file mode 100644
index 0000000000..a3f83f403f
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlBranchBoxOption.java
@@ -0,0 +1,14 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlTextOption;
+import forestry.api.genetics.IClassification;
+
+class ControlBranchBoxOption
+ extends ControlTextOption<IClassification>
+{
+ public ControlBranchBoxOption(ControlList<IClassification> controlList, IClassification option, int y)
+ {
+ super(controlList, option, option.getName().contains(".") ? option.getScientific() : option.getName() == null ? option.getScientific() : option.getName(), y);
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlBreedingProgress.java b/src/Java/binnie/craftgui/mod/database/ControlBreedingProgress.java
new file mode 100644
index 0000000000..9340a66752
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlBreedingProgress.java
@@ -0,0 +1,41 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import binnie.craftgui.resource.minecraft.CraftGUITextureSheet;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+
+class ControlBreedingProgress
+ extends Control
+{
+ private static Texture Progress = new StandardTexture(80, 22, 4, 4, CraftGUITextureSheet.Controls2);
+ private float percentage;
+ private int colour;
+
+ public ControlBreedingProgress(IWidget parent, int x, int y, int width, int height, BreedingSystem system, float percentage)
+ {
+ super(parent, x, y, width, height);
+ this.percentage = percentage;
+ this.colour = system.getColour();
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.PanelBlack, getArea());
+
+ IArea area = getArea().inset(1);
+
+ area.setSize(new IPoint(area.size().x() * this.percentage, area.size().y()));
+
+ CraftGUI.Render.colour(this.colour);
+
+ CraftGUI.Render.texture(Progress, area);
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlDatabaseIndividualDisplay.java b/src/Java/binnie/craftgui/mod/database/ControlDatabaseIndividualDisplay.java
new file mode 100644
index 0000000000..e46cf94df7
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlDatabaseIndividualDisplay.java
@@ -0,0 +1,120 @@
+package binnie.craftgui.mod.database;
+
+import binnie.Binnie;
+import binnie.core.genetics.BreedingSystem;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import com.mojang.authlib.GameProfile;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.ISpeciesRoot;
+import net.minecraft.util.IIcon;
+
+public class ControlDatabaseIndividualDisplay
+ extends ControlItemDisplay
+ implements ITooltip
+{
+ public void setSpecies(IAlleleSpecies species)
+ {
+ setSpecies(species, EnumDiscoveryState.Show);
+ }
+
+ public void setSpecies(IAlleleSpecies species, EnumDiscoveryState state)
+ {
+ ISpeciesRoot speciesRoot = Binnie.Genetics.getSpeciesRoot(species);
+
+ BreedingSystem system = Binnie.Genetics.getSystem(speciesRoot.getUID());
+
+ IIndividual ind = system.getSpeciesRoot().templateAsIndividual(system.getSpeciesRoot().getTemplate(species.getUID()));
+
+ super.setItemStack(system.getSpeciesRoot().getMemberStack(ind, system.getDefaultType()));
+ this.species = species;
+
+ GameProfile username = Window.get(this).getUsername();
+ if (state == EnumDiscoveryState.Undetermined) {
+ state = system.isSpeciesDiscovered(species, Window.get(this).getWorld(), username) ? EnumDiscoveryState.Discovered : EnumDiscoveryState.Undiscovered;
+ }
+ if (((Window.get(this) instanceof WindowAbstractDatabase)) &&
+ (((WindowAbstractDatabase)Window.get(this)).isNEI)) {
+ state = EnumDiscoveryState.Show;
+ }
+ this.discovered = state;
+
+ addAttribute(Attribute.MouseOver);
+ }
+
+ private IAlleleSpecies species = null;
+ EnumDiscoveryState discovered = EnumDiscoveryState.Show;
+
+ public ControlDatabaseIndividualDisplay(IWidget parent, float x, float y)
+ {
+ this(parent, x, y, 16.0F);
+ }
+
+ public ControlDatabaseIndividualDisplay(IWidget parent, float x, float y, float size)
+ {
+ super(parent, x, y, size);
+
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ if ((event.getButton() == 0) && (ControlDatabaseIndividualDisplay.this.species != null) && (EnumDiscoveryState.Show == ControlDatabaseIndividualDisplay.this.discovered)) {
+ ((WindowAbstractDatabase)ControlDatabaseIndividualDisplay.this.getSuperParent()).gotoSpeciesDelayed(ControlDatabaseIndividualDisplay.this.species);
+ }
+ }
+ });
+ }
+
+ public void onRenderForeground()
+ {
+ IIcon icon = null;
+ if (this.species == null) {
+ return;
+ }
+ BreedingSystem system = Binnie.Genetics.getSystem(this.species.getRoot());
+ switch (2.$SwitchMap$binnie$craftgui$mod$database$EnumDiscoveryState[this.discovered.ordinal()])
+ {
+ case 1:
+ super.onRenderForeground();
+ return;
+ case 2:
+ icon = system.getDiscoveredIcon();
+ break;
+ case 3:
+ icon = system.getUndiscoveredIcon();
+ break;
+ }
+ if (icon != null) {
+ CraftGUI.Render.iconItem(IPoint.ZERO, icon);
+ }
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ if (this.species != null) {
+ switch (2.$SwitchMap$binnie$craftgui$mod$database$EnumDiscoveryState[this.discovered.ordinal()])
+ {
+ case 1:
+ tooltip.add(this.species.getName());
+ break;
+ case 2:
+ tooltip.add("Discovered Species");
+ break;
+ case 3:
+ tooltip.add("Undiscovered Species");
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlItemStackOption.java b/src/Java/binnie/craftgui/mod/database/ControlItemStackOption.java
new file mode 100644
index 0000000000..2dfa33b083
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlItemStackOption.java
@@ -0,0 +1,38 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlTextOption;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.geometry.CraftGUIUtil;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import net.minecraft.item.ItemStack;
+
+public class ControlItemStackOption
+ extends ControlTextOption<ItemStack>
+{
+ private ControlItemDisplay controlBee;
+
+ public ControlItemStackOption(ControlList<ItemStack> controlList, ItemStack option, int y)
+ {
+ super(controlList, option, option.getDisplayName(), y);
+ setSize(new IPoint(getSize().x(), 20.0F));
+
+ this.controlBee = new ControlItemDisplay(this, 2.0F, 2.0F);
+ this.controlBee.setItemStack(option);
+
+ addAttribute(Attribute.MouseOver);
+
+ CraftGUIUtil.moveWidget(this.textWidget, new IPoint(22.0F, 0.0F));
+ this.textWidget.setSize(this.textWidget.getSize().sub(new IPoint(24.0F, 0.0F)));
+
+ int th = (int)CraftGUI.Render.textHeight(this.textWidget.getValue(), this.textWidget.getSize().x());
+ int height = Math.max(20, th + 6);
+ setSize(new IPoint(size().x(), height));
+ this.textWidget.setSize(new IPoint(this.textWidget.getSize().x(), height));
+ this.controlBee.setPosition(new IPoint(this.controlBee.pos().x(), (height - 18) / 2));
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlMutationBox.java b/src/Java/binnie/craftgui/mod/database/ControlMutationBox.java
new file mode 100644
index 0000000000..62cdda8dcf
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlMutationBox.java
@@ -0,0 +1,71 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.minecraft.Window;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IMutation;
+import java.util.List;
+
+class ControlMutationBox
+ extends ControlListBox<IMutation>
+{
+ private int index;
+ private Type type;
+
+ public IWidget createOption(IMutation value, int y)
+ {
+ return new ControlMutationItem((ControlList)getContent(), value, this.species, y);
+ }
+
+ static enum Type
+ {
+ Resultant, Further;
+
+ private Type() {}
+ }
+
+ public ControlMutationBox(IWidget parent, int x, int y, int width, int height, Type type)
+ {
+ super(parent, x, y, width, height, 12.0F);
+ this.type = type;
+ }
+
+ private IAlleleSpecies species = null;
+
+ public void setSpecies(IAlleleSpecies species)
+ {
+ if (species != this.species)
+ {
+ this.species = species;
+ this.index = 0;
+ movePercentage(-100.0F);
+
+ BreedingSystem system = ((WindowAbstractDatabase)getSuperParent()).getBreedingSystem();
+
+ List<IMutation> discovered = system.getDiscoveredMutations(Window.get(this).getWorld(), Window.get(this).getUsername());
+ if (species != null) {
+ if (this.type == Type.Resultant)
+ {
+ setOptions(system.getResultantMutations(species));
+ }
+ else
+ {
+ List<IMutation> mutations = system.getFurtherMutations(species);
+ for (int i = 0; i < mutations.size();)
+ {
+ IMutation mutation = (IMutation)mutations.get(i);
+ if ((!discovered.contains(mutations)) && (!((IAlleleSpecies)mutation.getTemplate()[0]).isCounted())) {
+ mutations.remove(i);
+ } else {
+ i++;
+ }
+ }
+ setOptions(mutations);
+ }
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlMutationItem.java b/src/Java/binnie/craftgui/mod/database/ControlMutationItem.java
new file mode 100644
index 0000000000..630294e458
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlMutationItem.java
@@ -0,0 +1,51 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlOption;
+import binnie.craftgui.minecraft.Window;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IMutation;
+
+class ControlMutationItem
+ extends ControlOption<IMutation>
+{
+ private ControlDatabaseIndividualDisplay itemWidget1;
+ private ControlDatabaseIndividualDisplay itemWidget2;
+ private ControlDatabaseIndividualDisplay itemWidget3;
+ private ControlMutationSymbol addSymbol;
+ private ControlMutationSymbol arrowSymbol;
+
+ public ControlMutationItem(ControlList<IMutation> controlList, IMutation option, IAlleleSpecies species, int y)
+ {
+ super(controlList, option, y);
+ this.itemWidget1 = new ControlDatabaseIndividualDisplay(this, 4.0F, 4.0F);
+ this.itemWidget2 = new ControlDatabaseIndividualDisplay(this, 44.0F, 4.0F);
+ this.itemWidget3 = new ControlDatabaseIndividualDisplay(this, 104.0F, 4.0F);
+ this.addSymbol = new ControlMutationSymbol(this, 24, 4, 0);
+ this.arrowSymbol = new ControlMutationSymbol(this, 64, 4, 1);
+
+ boolean isNEI = ((WindowAbstractDatabase)getSuperParent()).isNEI();
+ BreedingSystem system = ((WindowAbstractDatabase)getSuperParent()).getBreedingSystem();
+ if (getValue() != null)
+ {
+ boolean isMutationDiscovered = system.isMutationDiscovered((IMutation)getValue(), Window.get(this).getWorld(), Window.get(this).getUsername());
+
+
+ IAlleleSpecies allele = null;
+ EnumDiscoveryState state = null;
+
+ allele = (IAlleleSpecies)((IMutation)getValue()).getAllele0();
+ state = species == allele ? EnumDiscoveryState.Show : (isNEI) || (isMutationDiscovered) ? EnumDiscoveryState.Show : EnumDiscoveryState.Undetermined;
+ this.itemWidget1.setSpecies(allele, state);
+ allele = (IAlleleSpecies)((IMutation)getValue()).getAllele1();
+ state = species == allele ? EnumDiscoveryState.Show : (isNEI) || (isMutationDiscovered) ? EnumDiscoveryState.Show : EnumDiscoveryState.Undetermined;
+ this.itemWidget2.setSpecies(allele, state);
+ allele = (IAlleleSpecies)((IMutation)getValue()).getTemplate()[0];
+ state = species == allele ? EnumDiscoveryState.Show : (isNEI) || (isMutationDiscovered) ? EnumDiscoveryState.Show : EnumDiscoveryState.Undetermined;
+ this.itemWidget3.setSpecies(allele, state);
+ this.addSymbol.setValue((IMutation)getValue());
+ this.arrowSymbol.setValue((IMutation)getValue());
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlMutationSymbol.java b/src/Java/binnie/craftgui/mod/database/ControlMutationSymbol.java
new file mode 100644
index 0000000000..5c8bdc0aed
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlMutationSymbol.java
@@ -0,0 +1,80 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.CraftGUITextureSheet;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IMutation;
+
+class ControlMutationSymbol
+ extends Control
+ implements ITooltip
+{
+ private static Texture MutationPlus = new StandardTexture(2, 94, 16, 16, CraftGUITextureSheet.Controls2);
+ private static Texture MutationArrow = new StandardTexture(20, 94, 32, 16, CraftGUITextureSheet.Controls2);
+ private IMutation value;
+ private boolean discovered;
+ private int type;
+
+ public void onRenderBackground()
+ {
+ super.onRenderBackground();
+ if (this.type == 0) {
+ CraftGUI.Render.texture(MutationPlus, IPoint.ZERO);
+ } else {
+ CraftGUI.Render.texture(MutationArrow, IPoint.ZERO);
+ }
+ }
+
+ protected ControlMutationSymbol(IWidget parent, int x, int y, int type)
+ {
+ super(parent, x, y, 16 + type * 16, 16.0F);
+ this.value = null;
+ this.type = type;
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public void setValue(IMutation value)
+ {
+ this.value = value;
+
+ boolean isNEI = ((WindowAbstractDatabase)getSuperParent()).isNEI();
+ BreedingSystem system = ((WindowAbstractDatabase)getSuperParent()).getBreedingSystem();
+
+ this.discovered = (isNEI ? true : system.isMutationDiscovered(value, Window.get(this).getWorld(), Window.get(this).getUsername()));
+ if (this.discovered) {
+ setColour(16777215);
+ } else {
+ setColour(7829367);
+ }
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ if ((this.type == 1) && (this.discovered))
+ {
+ IAllele species1 = this.value.getAllele0();
+ IAllele species2 = this.value.getAllele1();
+
+ BreedingSystem system = ((WindowAbstractDatabase)getSuperParent()).getBreedingSystem();
+
+ float chance = system.getChance(this.value, Window.get(this).getPlayer(), species1, species2);
+ tooltip.add("Current Chance - " + chance + "%");
+ if (this.value.getSpecialConditions() != null) {
+ for (String string : this.value.getSpecialConditions()) {
+ tooltip.add(string);
+ }
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlSpeciesBox.java b/src/Java/binnie/craftgui/mod/database/ControlSpeciesBox.java
new file mode 100644
index 0000000000..4f184b0064
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlSpeciesBox.java
@@ -0,0 +1,55 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.minecraft.Window;
+import com.mojang.authlib.GameProfile;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IClassification;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import net.minecraft.entity.player.EntityPlayer;
+
+public class ControlSpeciesBox
+ extends ControlListBox<IAlleleSpecies>
+{
+ public IWidget createOption(IAlleleSpecies value, int y)
+ {
+ return new ControlSpeciexBoxOption((ControlList)getContent(), value, y);
+ }
+
+ public ControlSpeciesBox(IWidget parent, float x, float y, float width, float height)
+ {
+ super(parent, x, y, width, height, 12.0F);
+ }
+
+ private IClassification branch = null;
+
+ public void setBranch(IClassification branch)
+ {
+ if (branch != this.branch)
+ {
+ this.branch = branch;
+ List<IAlleleSpecies> speciesList2 = new ArrayList();
+ movePercentage(-100.0F);
+ setOptions(speciesList2);
+
+ EntityPlayer player = Window.get(this).getPlayer();
+ GameProfile playerName = Window.get(this).getUsername();
+ WindowAbstractDatabase db = (WindowAbstractDatabase)Window.get(this);
+
+ Collection<IAlleleSpecies> speciesList = !db.isNEI ? db.getBreedingSystem().getDiscoveredSpecies(db.getWorld(), playerName) : db.getBreedingSystem().getAllSpecies();
+ if (branch != null) {
+ for (IAlleleSpecies species : branch.getMemberSpecies()) {
+ if (speciesList.contains(species)) {
+ speciesList2.add(species);
+ }
+ }
+ }
+ setOptions(speciesList2);
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlSpeciexBoxOption.java b/src/Java/binnie/craftgui/mod/database/ControlSpeciexBoxOption.java
new file mode 100644
index 0000000000..36ac5446b2
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlSpeciexBoxOption.java
@@ -0,0 +1,42 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlTextOption;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.geometry.CraftGUIUtil;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import forestry.api.genetics.IAlleleSpecies;
+
+class ControlSpeciexBoxOption
+ extends ControlTextOption<IAlleleSpecies>
+{
+ private ControlDatabaseIndividualDisplay controlBee;
+
+ public ControlSpeciexBoxOption(ControlList<IAlleleSpecies> controlList, IAlleleSpecies option, int y)
+ {
+ super(controlList, option, option.getName(), y);
+ setSize(new IPoint(getSize().x(), 20.0F));
+
+ this.controlBee = new ControlDatabaseIndividualDisplay(this, 2.0F, 2.0F);
+
+ this.controlBee.setSpecies((IAlleleSpecies)getValue(), EnumDiscoveryState.Undetermined);
+ if (this.controlBee.discovered == EnumDiscoveryState.Discovered) {
+ this.controlBee.discovered = EnumDiscoveryState.Show;
+ }
+ this.textWidget.setValue(this.controlBee.discovered == EnumDiscoveryState.Show ? option.getName() : "Undiscovered");
+ if (this.controlBee.discovered == EnumDiscoveryState.Show) {
+ addAttribute(Attribute.MouseOver);
+ }
+ CraftGUIUtil.moveWidget(this.textWidget, new IPoint(22.0F, 0.0F));
+ this.textWidget.setSize(this.textWidget.getSize().sub(new IPoint(24.0F, 0.0F)));
+
+ int th = (int)CraftGUI.Render.textHeight(this.textWidget.getValue(), this.textWidget.getSize().x());
+ int height = Math.max(20, th + 6);
+ setSize(new IPoint(size().x(), height));
+ this.textWidget.setSize(new IPoint(this.textWidget.getSize().x(), height));
+ this.controlBee.setPosition(new IPoint(this.controlBee.pos().x(), (height - 18) / 2));
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/DatabaseTab.java b/src/Java/binnie/craftgui/mod/database/DatabaseTab.java
new file mode 100644
index 0000000000..aee8ea5bf2
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/DatabaseTab.java
@@ -0,0 +1,32 @@
+package binnie.craftgui.mod.database;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.language.ManagerLanguage;
+import binnie.craftgui.core.ITooltipHelp;
+import binnie.craftgui.core.Tooltip;
+
+public class DatabaseTab
+ implements ITooltipHelp
+{
+ private AbstractMod mod;
+ private String unloc;
+ private int colour;
+
+ public DatabaseTab(AbstractMod mod, String unloc, int colour)
+ {
+ this.mod = mod;
+ this.unloc = unloc;
+ this.colour = colour;
+ }
+
+ public String toString()
+ {
+ return Binnie.Language.localise(this.mod, "gui.database.tab." + this.unloc);
+ }
+
+ public void getHelpTooltip(Tooltip tooltip)
+ {
+ tooltip.add(Binnie.Language.localiseOrBlank(this.mod, "gui.database.tab." + this.unloc + ".help"));
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/EnumDiscoveryState.java b/src/Java/binnie/craftgui/mod/database/EnumDiscoveryState.java
new file mode 100644
index 0000000000..fe98cff136
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/EnumDiscoveryState.java
@@ -0,0 +1,8 @@
+package binnie.craftgui.mod.database;
+
+public enum EnumDiscoveryState
+{
+ Show, Undetermined, Discovered, Undiscovered;
+
+ private EnumDiscoveryState() {}
+}
diff --git a/src/Java/binnie/craftgui/mod/database/IDatabaseMode.java b/src/Java/binnie/craftgui/mod/database/IDatabaseMode.java
new file mode 100644
index 0000000000..8744a2f0b7
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/IDatabaseMode.java
@@ -0,0 +1,6 @@
+package binnie.craftgui.mod.database;
+
+public abstract interface IDatabaseMode
+{
+ public abstract String getName();
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageAbstract.java b/src/Java/binnie/craftgui/mod/database/PageAbstract.java
new file mode 100644
index 0000000000..9219dca0a7
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageAbstract.java
@@ -0,0 +1,16 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.page.ControlPage;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+
+public abstract class PageAbstract<T>
+ extends ControlPage<DatabaseTab>
+{
+ public PageAbstract(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, 0.0F, 0.0F, parent.getSize().x(), parent.getSize().y(), tab);
+ }
+
+ public abstract void onValueChanged(T paramT);
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageBranch.java b/src/Java/binnie/craftgui/mod/database/PageBranch.java
new file mode 100644
index 0000000000..57af5128e5
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageBranch.java
@@ -0,0 +1,13 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.core.IWidget;
+import forestry.api.genetics.IClassification;
+
+abstract class PageBranch
+ extends PageAbstract<IClassification>
+{
+ public PageBranch(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageBranchOverview.java b/src/Java/binnie/craftgui/mod/database/PageBranchOverview.java
new file mode 100644
index 0000000000..57ddc63fab
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageBranchOverview.java
@@ -0,0 +1,67 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.renderer.Renderer;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IClassification;
+import java.util.ArrayList;
+import java.util.List;
+
+public class PageBranchOverview
+ extends PageBranch
+{
+ private ControlText pageBranchOverview_branchName;
+ private ControlText pageBranchOverview_branchScientific;
+ private ControlText pageBranchOverview_branchAuthority;
+
+ public PageBranchOverview(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ this.pageBranchOverview_branchName = new ControlTextCentered(this, 8.0F, "");
+
+ this.pageBranchOverview_branchScientific = new ControlTextCentered(this, 32.0F, "");
+ this.pageBranchOverview_branchAuthority = new ControlTextCentered(this, 44.0F, "");
+ }
+
+ private List<ControlText> pageBranchOverview_branchDescription = new ArrayList();
+
+ public void onValueChanged(IClassification branch)
+ {
+ this.pageBranchOverview_branchName.setValue("§n" + branch.getName() + " Branch§r");
+
+ this.pageBranchOverview_branchScientific.setValue("§oApidae " + branch.getScientific() + "§r");
+
+ this.pageBranchOverview_branchAuthority.setValue("Discovered by §l" + branch.getMemberSpecies()[0].getAuthority() + "§r");
+ for (IWidget widget : this.pageBranchOverview_branchDescription) {
+ deleteChild(widget);
+ }
+ this.pageBranchOverview_branchDescription.clear();
+
+ String desc = branch.getDescription();
+ if ((desc == null) || (desc == "")) {
+ desc = "No Description Provided.";
+ }
+ String line = "";
+
+ List<String> descLines = new ArrayList();
+