aboutsummaryrefslogtreecommitdiff
path: root/src/Java/binnie/extrabees/gui
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/extrabees/gui
parentec2c72827f01dd4bb2174137f1ab162f9ddaab62 (diff)
downloadGT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.gz
GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.bz2
GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.zip
Initial Commit
Diffstat (limited to 'src/Java/binnie/extrabees/gui')
-rw-r--r--src/Java/binnie/extrabees/gui/WindowAlvearyFrame.java53
-rw-r--r--src/Java/binnie/extrabees/gui/WindowAlvearyHatchery.java54
-rw-r--r--src/Java/binnie/extrabees/gui/WindowAlvearyIndustrialFrame.java53
-rw-r--r--src/Java/binnie/extrabees/gui/WindowAlvearyMutator.java78
-rw-r--r--src/Java/binnie/extrabees/gui/WindowAlvearyStimulator.java56
-rw-r--r--src/Java/binnie/extrabees/gui/database/ControlBiomes.java75
-rw-r--r--src/Java/binnie/extrabees/gui/database/ControlClimateBar.java153
-rw-r--r--src/Java/binnie/extrabees/gui/database/ControlProductsBox.java92
-rw-r--r--src/Java/binnie/extrabees/gui/database/ControlProductsItem.java44
-rw-r--r--src/Java/binnie/extrabees/gui/database/PageSpeciesClimate.java36
-rw-r--r--src/Java/binnie/extrabees/gui/database/PageSpeciesGenome.java206
-rw-r--r--src/Java/binnie/extrabees/gui/database/PageSpeciesProducts.java38
-rw-r--r--src/Java/binnie/extrabees/gui/database/WindowApiaristDatabase.java83
-rw-r--r--src/Java/binnie/extrabees/gui/punnett/ControlChromosome.java49
-rw-r--r--src/Java/binnie/extrabees/gui/punnett/ControlPunnett.java86
-rw-r--r--src/Java/binnie/extrabees/gui/punnett/ExtraBeeGUITexture.java8
-rw-r--r--src/Java/binnie/extrabees/gui/punnett/WindowPunnettSquare.java67
17 files changed, 1231 insertions, 0 deletions
diff --git a/src/Java/binnie/extrabees/gui/WindowAlvearyFrame.java b/src/Java/binnie/extrabees/gui/WindowAlvearyFrame.java
new file mode 100644
index 0000000000..a14d9a0a8f
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/WindowAlvearyFrame.java
@@ -0,0 +1,53 @@
+package binnie.extrabees.gui;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.extrabees.ExtraBees;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowAlvearyFrame
+ extends Window
+{
+ Machine machine;
+ ControlPlayerInventory playerInventory;
+
+ public WindowAlvearyFrame(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(176.0F, 144.0F, player, inventory, side);
+ this.machine = ((TileEntityMachine)inventory).getMachine();
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ if ((player == null) || (inventory == null)) {
+ return null;
+ }
+ return new WindowAlvearyFrame(player, inventory, side);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Frame Housing");
+
+ this.playerInventory = new ControlPlayerInventory(this);
+
+ ControlSlot slot = new ControlSlot(this, 79.0F, 30.0F);
+ slot.assign(0);
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "AlvearyFrame";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/WindowAlvearyHatchery.java b/src/Java/binnie/extrabees/gui/WindowAlvearyHatchery.java
new file mode 100644
index 0000000000..081425acf5
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/WindowAlvearyHatchery.java
@@ -0,0 +1,54 @@
+package binnie.extrabees.gui;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.apiary.machine.AlvearyHatchery;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowAlvearyHatchery
+ extends Window
+{
+ Machine machine;
+ ControlPlayerInventory playerInventory;
+
+ public WindowAlvearyHatchery(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(176.0F, 144.0F, player, inventory, side);
+ this.machine = ((TileEntityMachine)inventory).getMachine();
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ if ((player == null) || (inventory == null)) {
+ return null;
+ }
+ return new WindowAlvearyHatchery(player, inventory, side);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Hatchery");
+
+ this.playerInventory = new ControlPlayerInventory(this);
+
+ ControlSlotArray slot = new ControlSlotArray(this, 43, 30, 5, 1);
+ slot.create(AlvearyHatchery.slotLarvae);
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "AlvearyHatchery";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/WindowAlvearyIndustrialFrame.java b/src/Java/binnie/extrabees/gui/WindowAlvearyIndustrialFrame.java
new file mode 100644
index 0000000000..07b47f03c9
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/WindowAlvearyIndustrialFrame.java
@@ -0,0 +1,53 @@
+package binnie.extrabees.gui;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.extrabees.ExtraBees;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowAlvearyIndustrialFrame
+ extends Window
+{
+ Machine machine;
+ ControlPlayerInventory playerInventory;
+
+ public WindowAlvearyIndustrialFrame(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(176.0F, 144.0F, player, inventory, side);
+ this.machine = ((TileEntityMachine)inventory).getMachine();
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ if ((player == null) || (inventory == null)) {
+ return null;
+ }
+ return new WindowAlvearyIndustrialFrame(player, inventory, side);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Industrial Frame Housing");
+
+ this.playerInventory = new ControlPlayerInventory(this);
+
+ ControlSlot slot = new ControlSlot(this, 79.0F, 30.0F);
+ slot.assign(0);
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "AlvearyIndustrialFrame";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/WindowAlvearyMutator.java b/src/Java/binnie/extrabees/gui/WindowAlvearyMutator.java
new file mode 100644
index 0000000000..f2cf458145
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/WindowAlvearyMutator.java
@@ -0,0 +1,78 @@
+package binnie.extrabees.gui;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.apiary.machine.AlvearyMutator;
+import cpw.mods.fml.relauncher.Side;
+import java.util.Collection;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+
+public class WindowAlvearyMutator
+ extends Window
+{
+ Machine machine;
+ ControlPlayerInventory playerInventory;
+
+ public WindowAlvearyMutator(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(176.0F, 176.0F, player, inventory, side);
+ this.machine = ((TileEntityMachine)inventory).getMachine();
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ if ((player == null) || (inventory == null)) {
+ return null;
+ }
+ return new WindowAlvearyMutator(player, inventory, side);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Mutator");
+
+ this.playerInventory = new ControlPlayerInventory(this);
+
+ ControlSlot slot = new ControlSlot(this, 79.0F, 30.0F);
+ slot.assign(0);
+
+ new ControlText(this, new IArea(0.0F, 52.0F, w(), 16.0F), "Possible Mutagens:", TextJustification.MiddleCenter).setColour(5592405);
+
+ int size = AlvearyMutator.getMutagens().size();
+
+ int w = size * 18;
+ float x;
+ if (size > 0)
+ {
+ x = (w() - w) / 2.0F;
+ for (ItemStack stack : AlvearyMutator.getMutagens())
+ {
+ ControlItemDisplay display = new ControlItemDisplay(this, x, 66.0F);
+ display.setItemStack(stack);
+ display.hastooltip = true;
+ x += 18.0F;
+ }
+ }
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "AlvearyMutator";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/WindowAlvearyStimulator.java b/src/Java/binnie/extrabees/gui/WindowAlvearyStimulator.java
new file mode 100644
index 0000000000..2e3b9736a5
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/WindowAlvearyStimulator.java
@@ -0,0 +1,56 @@
+package binnie.extrabees.gui;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.apiary.machine.AlvearyStimulator;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowAlvearyStimulator
+ extends Window
+{
+ Machine machine;
+ ControlPlayerInventory playerInventory;
+
+ public WindowAlvearyStimulator(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(176.0F, 144.0F, player, inventory, side);
+ this.machine = ((TileEntityMachine)inventory).getMachine();
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ if ((player == null) || (inventory == null)) {
+ return null;
+ }
+ return new WindowAlvearyStimulator(player, inventory, side);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Stimulator");
+ new ControlEnergyBar(this, 75, 29, 60, 16, Position.Left);
+ ControlSlot slot = new ControlSlot(this, 41.0F, 28.0F);
+ slot.assign(AlvearyStimulator.slotCircuit);
+
+ this.playerInventory = new ControlPlayerInventory(this);
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "AlvearyStimulator";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/ControlBiomes.java b/src/Java/binnie/extrabees/gui/database/ControlBiomes.java
new file mode 100644
index 0000000000..1299df72ca
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/ControlBiomes.java
@@ -0,0 +1,75 @@
+package binnie.extrabees.gui.database;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.proxy.BinnieProxy;
+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.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeRoot;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.world.biome.BiomeGenBase;
+
+public class ControlBiomes
+ extends Control
+ implements ITooltip
+{
+ public ControlBiomes(IWidget parent, int x, int y, int width, int height)
+ {
+ super(parent, x, y, width * 16, height * 16);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ List<Integer> tolerated = new ArrayList();
+
+ public void getTooltip(Tooltip list)
+ {
+ if (this.tolerated.isEmpty()) {
+ return;
+ }
+ int x = (int)(getRelativeMousePosition().x() / 16.0F);
+ int y = (int)(getRelativeMousePosition().y() / 16.0F);
+
+ int i = x + y * 8;
+ if (i < this.tolerated.size()) {
+ list.add(BiomeGenBase.getBiome(((Integer)this.tolerated.get(i)).intValue()).biomeName);
+ }
+ }
+
+ public void onRenderForeground()
+ {
+ for (int i = 0; i < this.tolerated.size(); i++)
+ {
+ int x = i % 8 * 16;
+ int y = i / 8 * 16;
+ if (BiomeGenBase.getBiome(i) != null) {
+ CraftGUI.Render.colour(BiomeGenBase.getBiome(i).color);
+ }
+ CraftGUI.Render.texture(CraftGUITexture.Button, new IArea(x, y, 16.0F, 16.0F));
+ }
+ }
+
+ public void setSpecies(IAlleleBeeSpecies species)
+ {
+ this.tolerated.clear();
+ if (species == null) {
+ return;
+ }
+ IBeeGenome genome = Binnie.Genetics.getBeeRoot().templateAsGenome(Binnie.Genetics.getBeeRoot().getTemplate(species.getUID()));
+
+
+ IBee bee = Binnie.Genetics.getBeeRoot().getBee(BinnieCore.proxy.getWorld(), genome);
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/ControlClimateBar.java b/src/Java/binnie/extrabees/gui/database/ControlClimateBar.java
new file mode 100644
index 0000000000..688bbd40c5
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/ControlClimateBar.java
@@ -0,0 +1,153 @@
+package binnie.extrabees.gui.database;
+
+import binnie.Binnie;
+import binnie.core.genetics.ManagerGenetics;
+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.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.core.EnumHumidity;
+import forestry.api.core.EnumTemperature;
+import forestry.api.genetics.EnumTolerance;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ControlClimateBar
+ extends Control
+ implements ITooltip
+{
+ public ControlClimateBar(IWidget parent, int x, int y, int width, int height)
+ {
+ super(parent, x, y, width, height);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public ControlClimateBar(IWidget parent, int x, int y, int width, int height, boolean humidity)
+ {
+ super(parent, x, y, width, height);
+ addAttribute(Attribute.MouseOver);
+ this.isHumidity = true;
+ }
+
+ boolean isHumidity = false;
+ List<Integer> tolerated = new ArrayList();
+
+ public void getTooltip(Tooltip list)
+ {
+ if (this.tolerated.isEmpty()) {
+ return;
+ }
+ int types = this.isHumidity ? 3 : 6;
+
+ int type = (int)((int)(getRelativeMousePosition().x() - 1.0F) / ((getSize().x() - 2.0F) / types));
+ if (!this.tolerated.contains(Integer.valueOf(type))) {
+ return;
+ }
+ if (type < types) {
+ if (this.isHumidity) {
+ list.add(EnumHumidity.values()[type].name);
+ } else {
+ list.add(EnumTemperature.values()[(type + 1)].name);
+ }
+ }
+ }
+
+ int[] tempColours = { 65531, 7912447, 5242672, 16776960, 16753152, 16711680 };
+ int[] humidColours = { 16770979, 1769216, 3177727 };
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.EnergyBarBack, getArea());
+
+ int types = this.isHumidity ? 3 : 6;
+ int w = (int)((getSize().x() - 2.0F) / types);
+ for (int i = 0; i < types; i++)
+ {
+ int x = i * w;
+ if (this.tolerated.contains(Integer.valueOf(i)))
+ {
+ int colour = 0;
+ if (this.isHumidity) {
+ colour = this.humidColours[i];
+ } else {
+ colour = this.tempColours[i];
+ }
+ CraftGUI.Render.solid(new IArea(x + 1, 1.0F, w, getSize().y() - 2.0F), colour);
+ }
+ }
+ CraftGUI.Render.texture(CraftGUITexture.EnergyBarGlass, getArea());
+ }
+
+ public void setSpecies(IAlleleBeeSpecies species)
+ {
+ this.tolerated.clear();
+ if (species == null) {
+ return;
+ }
+ EnumTolerance tolerance;
+ int main;
+ EnumTolerance tolerance;
+ if (!this.isHumidity)
+ {
+ int main = species.getTemperature().ordinal() - 1;
+ IBeeGenome genome = Binnie.Genetics.getBeeRoot().templateAsGenome(Binnie.Genetics.getBeeRoot().getTemplate(species.getUID()));
+
+
+ tolerance = genome.getToleranceTemp();
+ }
+ else
+ {
+ main = species.getHumidity().ordinal();
+ IBeeGenome genome = Binnie.Genetics.getBeeRoot().templateAsGenome(Binnie.Genetics.getBeeRoot().getTemplate(species.getUID()));
+
+
+ tolerance = genome.getToleranceHumid();
+ }
+ this.tolerated.add(Integer.valueOf(main));
+ switch (1.$SwitchMap$forestry$api$genetics$EnumTolerance[tolerance.ordinal()])
+ {
+ case 1:
+ case 2:
+ this.tolerated.add(Integer.valueOf(main + 5));
+ case 3:
+ case 4:
+ this.tolerated.add(Integer.valueOf(main + 4));
+ case 5:
+ case 6:
+ this.tolerated.add(Integer.valueOf(main + 3));
+ case 7:
+ case 8:
+ this.tolerated.add(Integer.valueOf(main + 2));
+ case 9:
+ case 10:
+ this.tolerated.add(Integer.valueOf(main + 1));
+ }
+ switch (1.$SwitchMap$forestry$api$genetics$EnumTolerance[tolerance.ordinal()])
+ {
+ case 1:
+ case 11:
+ this.tolerated.add(Integer.valueOf(main - 5));
+ case 3:
+ case 12:
+ this.tolerated.add(Integer.valueOf(main - 4));
+ case 5:
+ case 13:
+ this.tolerated.add(Integer.valueOf(main - 3));
+ case 7:
+ case 14:
+ this.tolerated.add(Integer.valueOf(main - 2));
+ case 9:
+ case 15:
+ this.tolerated.add(Integer.valueOf(main - 1));
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/ControlProductsBox.java b/src/Java/binnie/extrabees/gui/database/ControlProductsBox.java
new file mode 100644
index 0000000000..f6103f9bba
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/ControlProductsBox.java
@@ -0,0 +1,92 @@
+package binnie.extrabees.gui.database;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.core.IWidget;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.apiculture.IBeekeepingMode;
+import forestry.api.genetics.IAllele;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import net.minecraft.item.ItemStack;
+
+public class ControlProductsBox
+ extends ControlListBox<Product>
+{
+ private int index;
+ private Type type;
+
+ public IWidget createOption(Product value, int y)
+ {
+ return new ControlProductsItem((ControlList)getContent(), value, y);
+ }
+
+ static enum Type
+ {
+ Products, Specialties;
+
+ private Type() {}
+ }
+
+ class Product
+ {
+ ItemStack item;
+ float chance;
+
+ public Product(ItemStack item, float chance)
+ {
+ this.item = item;
+ this.chance = chance;
+ }
+ }
+
+ public ControlProductsBox(IWidget parent, int x, int y, int width, int height, Type type)
+ {
+ super(parent, x, y, width, height, 12.0F);
+ this.type = type;
+ }
+
+ IAlleleBeeSpecies species = null;
+
+ public void setSpecies(IAlleleBeeSpecies species)
+ {
+ if (species != this.species)
+ {
+ this.species = species;
+ if (species != null)
+ {
+ IAllele[] template = Binnie.Genetics.getBeeRoot().getTemplate(species.getUID());
+ if (template == null) {
+ return;
+ }
+ IBeeGenome genome = Binnie.Genetics.getBeeRoot().templateAsGenome(template);
+
+ float speed = genome.getSpeed();
+
+ float modeSpeed = Binnie.Genetics.getBeeRoot().getBeekeepingMode(BinnieCore.proxy.getWorld()).getProductionModifier(genome, 1.0F);
+
+
+
+ List<Product> strings = new ArrayList();
+ if (this.type == Type.Products) {
+ for (Map.Entry<ItemStack, Integer> entry : species.getProducts().entrySet()) {
+ strings.add(new Product((ItemStack)entry.getKey(), speed * modeSpeed * ((Integer)entry.getValue()).intValue()));
+ }
+ } else {
+ for (Map.Entry<ItemStack, Integer> entry : species.getSpecialty().entrySet()) {
+ strings.add(new Product((ItemStack)entry.getKey(), speed * modeSpeed * ((Integer)entry.getValue()).intValue()));
+ }
+ }
+ setOptions(strings);
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/ControlProductsItem.java b/src/Java/binnie/extrabees/gui/database/ControlProductsItem.java
new file mode 100644
index 0000000000..4f449e3558
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/ControlProductsItem.java
@@ -0,0 +1,44 @@
+package binnie.extrabees.gui.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlOption;
+import binnie.craftgui.core.geometry.CraftGUIUtil;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import java.text.DecimalFormat;
+
+public class ControlProductsItem
+ extends ControlOption<ControlProductsBox.Product>
+{
+ ControlItemDisplay item;
+
+ public ControlProductsItem(ControlList<ControlProductsBox.Product> controlList, ControlProductsBox.Product value, int y)
+ {
+ super(controlList, value, y);
+ this.item = new ControlItemDisplay(this, 4.0F, 4.0F);
+ this.item.setTooltip();
+
+ ControlText textWidget = new ControlTextCentered(this, 2.0F, "");
+ CraftGUIUtil.moveWidget(textWidget, new IPoint(12.0F, 0.0F));
+ if (value != null)
+ {
+ this.item.setItemStack(value.item);
+ float time = (int)(55000.0D / value.chance);
+
+ float seconds = time / 20.0F;
+ float minutes = seconds / 60.0F;
+ float hours = minutes / 60.0F;
+
+ DecimalFormat df = new DecimalFormat("#.0");
+ if (hours > 1.0F) {
+ textWidget.setValue("Every " + df.format(hours) + " hours");
+ } else if (minutes > 1.0F) {
+ textWidget.setValue("Every " + df.format(minutes) + " min.");
+ } else {
+ textWidget.setValue("Every " + df.format(seconds) + " sec.");
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/PageSpeciesClimate.java b/src/Java/binnie/extrabees/gui/database/PageSpeciesClimate.java
new file mode 100644
index 0000000000..3b93ff1b3c
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/PageSpeciesClimate.java
@@ -0,0 +1,36 @@
+package binnie.extrabees.gui.database;
+
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageSpecies;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.genetics.IAlleleSpecies;
+
+public class PageSpeciesClimate
+ extends PageSpecies
+{
+ ControlClimateBar tempBar;
+ ControlClimateBar humidBar;
+ ControlBiomes biomes;
+
+ public PageSpeciesClimate(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ new ControlTextCentered(this, 8.0F, "Climate");
+
+ this.tempBar = new ControlClimateBar(this, 8, 24, 128, 12);
+ this.humidBar = new ControlClimateBar(this, 8, 42, 128, 12, true);
+ new ControlTextCentered(this, 70.0F, "Biomes");
+
+ this.biomes = new ControlBiomes(this, 8, 90, 8, 4);
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ this.tempBar.setSpecies((IAlleleBeeSpecies)species);
+ this.humidBar.setSpecies((IAlleleBeeSpecies)species);
+ this.biomes.setSpecies((IAlleleBeeSpecies)species);
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/PageSpeciesGenome.java b/src/Java/binnie/extrabees/gui/database/PageSpeciesGenome.java
new file mode 100644
index 0000000000..a69e528d51
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/PageSpeciesGenome.java
@@ -0,0 +1,206 @@
+package binnie.extrabees.gui.database;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageSpecies;
+import forestry.api.apiculture.IAlleleBeeEffect;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IFlowerProvider;
+
+public class PageSpeciesGenome
+ extends PageSpecies
+{
+ ControlText pageSpeciesGenome_Title;
+ ControlText pageSpeciesGenome_SpeedText;
+ ControlText pageSpeciesGenome_LifespanText;
+ ControlText pageSpeciesGenome_FertilityText;
+ ControlText pageSpeciesGenome_FloweringText;
+ ControlText pageSpeciesGenome_TerritoryText;
+ ControlText pageSpeciesGenome_NocturnalText;
+ ControlText pageSpeciesGenome_CaveDwellingText;
+ ControlText pageSpeciesGenome_TolerantFlyerText;
+ ControlText pageSpeciesGenome_FlowerText;
+ ControlText pageSpeciesGenome_EffectText;
+
+ public PageSpeciesGenome(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ this.pageSpeciesGenome_Title = new ControlTextCentered(this, 8.0F, "Genome");
+
+ new ControlText(this, new IArea(0.0F, 32.0F, 68.0F, 30.0F), "Speed:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 44.0F, 68.0F, 30.0F), "Lifespan:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 56.0F, 68.0F, 30.0F), "Fertility:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 68.0F, 68.0F, 30.0F), "Flowering:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 80.0F, 68.0F, 30.0F), "Territory:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 97.0F, 68.0F, 30.0F), "Behavior:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 109.0F, 68.0F, 30.0F), "Sunlight:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 121.0F, 68.0F, 30.0F), "Rain:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 138.0F, 68.0F, 30.0F), "Flower:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 155.0F, 68.0F, 30.0F), "Effect:", TextJustification.TopRight);
+
+ int x = 72;
+
+ this.pageSpeciesGenome_SpeedText = new ControlText(this, new IArea(x, 32.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_LifespanText = new ControlText(this, new IArea(x, 44.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_FertilityText = new ControlText(this, new IArea(x, 56.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_FloweringText = new ControlText(this, new IArea(x, 68.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_TerritoryText = new ControlText(this, new IArea(x, 80.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_NocturnalText = new ControlText(this, new IArea(x, 97.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_CaveDwellingText = new ControlText(this, new IArea(x, 109.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_TolerantFlyerText = new ControlText(this, new IArea(x, 121.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_FlowerText = new ControlText(this, new IArea(x, 138.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_EffectText = new ControlText(this, new IArea(x, 155.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ IAllele[] template = Binnie.Genetics.getBeeRoot().getTemplate(species.getUID());
+ if (template != null)
+ {
+ IBeeGenome genome = Binnie.Genetics.getBeeRoot().templateAsGenome(template);
+
+ IBee bee = Binnie.Genetics.getBeeRoot().getBee(BinnieCore.proxy.getWorld(), genome);
+
+
+ this.pageSpeciesGenome_SpeedText.setValue(rateSpeed(genome.getSpeed()));
+ this.pageSpeciesGenome_LifespanText.setValue(rateLifespan(genome.getLifespan()));
+
+ this.pageSpeciesGenome_FertilityText.setValue(genome.getFertility() + " children");
+
+ this.pageSpeciesGenome_FloweringText.setValue(rateFlowering(genome.getFlowering()));
+ int[] area = genome.getTerritory();
+ this.pageSpeciesGenome_TerritoryText.setValue(area[0] + "x" + area[1] + "x" + area[2]);
+
+
+ String behavior = "Daytime";
+ if (genome.getPrimary().isNocturnal()) {
+ behavior = "Nighttime";
+ }
+ if (genome.getNocturnal()) {
+ behavior = "All Day";
+ }
+ this.pageSpeciesGenome_NocturnalText.setValue(behavior);
+ if (genome.getCaveDwelling()) {
+ this.pageSpeciesGenome_CaveDwellingText.setValue("Not Needed");
+ } else {
+ this.pageSpeciesGenome_CaveDwellingText.setValue("Required");
+ }
+ this.pageSpeciesGenome_TolerantFlyerText.setValue(tolerated(genome.getTolerantFlyer()));
+ if (genome.getFlowerProvider() != null) {
+ this.pageSpeciesGenome_FlowerText.setValue(genome.getFlowerProvider().getDescription());
+ } else {
+ this.pageSpeciesGenome_FlowerText.setValue("None");
+ }
+ this.pageSpeciesGenome_EffectText.setValue(genome.getEffect().getName());
+ }
+ }
+
+ public static String rateFlowering(int flowering)
+ {
+ if (flowering >= 99) {
+ return "Maximum";
+ }
+ if (flowering >= 35) {
+ return "Fastest";
+ }
+ if (flowering >= 30) {
+ return "Faster";
+ }
+ if (flowering >= 25) {
+ return "Fast";
+ }
+ if (flowering >= 20) {
+ return "Normal";
+ }
+ if (flowering >= 15) {
+ return "Slow";
+ }
+ if (flowering >= 10) {
+ return "Slower";
+ }
+ return "Slowest";
+ }
+
+ public static String rateSpeed(float speed)
+ {
+ if (speed >= 1.7F) {
+ return "Fastest";
+ }
+ if (speed >= 1.4F) {
+ return "Faster";
+ }
+ if (speed >= 1.2F) {
+ return "Fast";
+ }
+ if (speed >= 1.0F) {
+ return "Normal";
+ }
+ if (speed >= 0.8F) {
+ return "Slow";
+ }
+ if (speed >= 0.6F) {
+ return "Slower";
+ }
+ return "Slowest";
+ }
+
+ public static String rateLifespan(int life)
+ {
+ if (life >= 70) {
+ return "Longest";
+ }
+ if (life >= 60) {
+ return "Longer";
+ }
+ if (life >= 50) {
+ return "Long";
+ }
+ if (life >= 45) {
+ return "Elongated";
+ }
+ if (life >= 40) {
+ return "Normal";
+ }
+ if (life >= 35) {
+ return "Shortened";
+ }
+ if (life >= 30) {
+ return "Short";
+ }
+ if (life >= 20) {
+ return "Shorter";
+ }
+ return "Shortest";
+ }
+
+ public static String tolerated(boolean t)
+ {
+ if (t) {
+ return "Tolerated";
+ }
+ return "Not Tolerated";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/PageSpeciesProducts.java b/src/Java/binnie/extrabees/gui/database/PageSpeciesProducts.java
new file mode 100644
index 0000000000..f8af0ef3bd
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/PageSpeciesProducts.java
@@ -0,0 +1,38 @@
+package binnie.extrabees.gui.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageSpecies;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.genetics.IAlleleSpecies;
+
+public class PageSpeciesProducts
+ extends PageSpecies
+{
+ ControlText pageSpeciesProducts_Title;
+ ControlProductsBox pageSpeciesProducts_Products;
+ ControlText pageSpeciesProducts_Title2;
+ ControlProductsBox pageSpeciesProducts_Specialties;
+
+ public PageSpeciesProducts(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ this.pageSpeciesProducts_Title = new ControlTextCentered(this, 8.0F, "Products");
+
+ this.pageSpeciesProducts_Products = new ControlProductsBox(this, 4, 20, 136, 48, ControlProductsBox.Type.Products);
+
+
+ this.pageSpeciesProducts_Title2 = new ControlTextCentered(this, 68.0F, "Specialties");
+
+ this.pageSpeciesProducts_Specialties = new ControlProductsBox(this, 4, 80, 136, 48, ControlProductsBox.Type.Specialties);
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ this.pageSpeciesProducts_Products.setSpecies((IAlleleBeeSpecies)species);
+ this.pageSpeciesProducts_Specialties.setSpecies((IAlleleBeeSpecies)species);
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/WindowApiaristDatabase.java b/src/Java/binnie/extrabees/gui/database/WindowApiaristDatabase.java
new file mode 100644
index 0000000000..d77ee87251
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/WindowApiaristDatabase.java
@@ -0,0 +1,83 @@
+package binnie.extrabees.gui.database;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageBranchOverview;
+import binnie.craftgui.mod.database.PageBranchSpecies;
+import binnie.craftgui.mod.database.PageBreeder;
+import binnie.craftgui.mod.database.PageSpeciesClassification;
+import binnie.craftgui.mod.database.PageSpeciesMutations;
+import binnie.craftgui.mod.database.PageSpeciesOverview;
+import binnie.craftgui.mod.database.PageSpeciesResultant;
+import binnie.craftgui.mod.database.WindowAbstractDatabase;
+import binnie.craftgui.mod.database.WindowAbstractDatabase.Mode;
+import binnie.extrabees.ExtraBees;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+
+public class WindowApiaristDatabase
+ extends WindowAbstractDatabase
+{
+ static enum SpeciesTab
+ {
+ Overview(255), Genome(16776960), Productivity(65535), Climate(16711680), ResultantMutations(16711935), FurtherMutations(65280);
+
+ public int colour;
+
+ private SpeciesTab(int colour)
+ {
+ this.colour = colour;
+ }
+ }
+
+ static enum BranchesTab
+ {
+ Overview(255), Species(16711680);
+
+ public int colour;
+
+ private BranchesTab(int colour)
+ {
+ this.colour = colour;
+ }
+ }
+
+ protected void addTabs()
+ {
+ new PageSpeciesOverview(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.overview", 0));
+ new PageSpeciesClassification(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.classification", 0));
+ new PageSpeciesGenome(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.genome", 0));
+ new PageSpeciesProducts(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.products", 0));
+ new PageSpeciesClimate(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.climate", 0));
+ new PageSpeciesResultant(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.resultant", 0));
+ new PageSpeciesMutations(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.further", 0));
+
+ new PageBranchOverview(getInfoPages(WindowAbstractDatabase.Mode.Branches), new DatabaseTab(ExtraBees.instance, "branches.overview", 0));
+ new PageBranchSpecies(getInfoPages(WindowAbstractDatabase.Mode.Branches), new DatabaseTab(ExtraBees.instance, "branches.species", 0));
+
+ new PageBreeder(getInfoPages(WindowAbstractDatabase.Mode.Breeder), getUsername(), new DatabaseTab(ExtraBees.instance, "breeder", 0));
+ }
+
+ public WindowApiaristDatabase(EntityPlayer player, Side side, boolean nei)
+ {
+ super(player, side, nei, Binnie.Genetics.beeBreedingSystem, 110.0F);
+ }
+
+ public static Window create(EntityPlayer player, Side side, boolean nei)
+ {
+ return new WindowApiaristDatabase(player, side, nei);
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "Database";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/punnett/ControlChromosome.java b/src/Java/binnie/extrabees/gui/punnett/ControlChromosome.java
new file mode 100644
index 0000000000..f4a7ffc507
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/punnett/ControlChromosome.java
@@ -0,0 +1,49 @@
+package binnie.extrabees.gui.punnett;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+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.renderer.Renderer;
+import forestry.api.genetics.IChromosomeType;
+
+public class ControlChromosome
+ extends Control
+ implements IControlValue<IChromosomeType>, ITooltip
+{
+ IChromosomeType value;
+
+ protected ControlChromosome(IWidget parent, float x, float y, IChromosomeType type)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ setValue(type);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public IChromosomeType getValue()
+ {
+ return this.value;
+ }
+
+ public void setValue(IChromosomeType value)
+ {
+ this.value = value;
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(ExtraBeeGUITexture.Chromosome, getArea());
+ CraftGUI.Render.colour(16711680);
+ CraftGUI.Render.texture(ExtraBeeGUITexture.Chromosome2, getArea());
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ if (this.value != null) {
+ tooltip.add(this.value.getName());
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/punnett/ControlPunnett.java b/src/Java/binnie/extrabees/gui/punnett/ControlPunnett.java
new file mode 100644
index 0000000000..56b2f6c916
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/punnett/ControlPunnett.java
@@ -0,0 +1,86 @@
+package binnie.extrabees.gui.punnett;
+
+import binnie.craftgui.controls.ControlText;
+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.TextJustification;
+import binnie.craftgui.core.renderer.Renderer;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IChromosomeType;
+import forestry.api.genetics.IGenome;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.ISpeciesRoot;
+import java.util.LinkedList;
+import java.util.List;
+
+public class ControlPunnett
+ extends Control
+{
+ protected ControlPunnett(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, boxWidth * 3, boxWidth * 3);
+ }
+
+ static int boxWidth = 80;
+ static int boxHeight = 28;
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.solid(new IArea(0.0F, boxHeight, boxWidth * 3, 1.0F), 11184810);
+ CraftGUI.Render.solid(new IArea(boxWidth / 2.0F, boxHeight * 2, boxWidth * 2.5F, 1.0F), 11184810);
+
+ CraftGUI.Render.solid(new IArea(boxWidth, 0.0F, 1.0F, boxHeight * 3), 11184810);
+ CraftGUI.Render.solid(new IArea(boxWidth * 2, boxHeight / 2.0F, 1.0F, boxHeight * 2.5F), 11184810);
+ }
+
+ public void setup(IChromosomeType chromosome, IIndividual ind1, IIndividual ind2, ISpeciesRoot root)
+ {
+ deleteAllChildren();
+ if ((chromosome == null) || (ind1 == null) || (ind2 == null) || (root == null)) {
+ return;
+ }
+ IAllele primary1 = ind1.getGenome().getActiveAllele(chromosome);
+ IAllele primary2 = ind2.getGenome().getActiveAllele(chromosome);
+ IAllele secondary1 = ind1.getGenome().getInactiveAllele(chromosome);
+ IAllele secondary2 = ind2.getGenome().getInactiveAllele(chromosome);
+
+ int x = 1;
+ int y = 1;
+ for (IAllele allele1 : new IAllele[] { primary1, secondary1 })
+ {
+ y = 1;
+ for (IAllele allele2 : new IAllele[] { primary2, secondary2 })
+ {
+ List<IAllele> alleles = new LinkedList();
+ if ((allele1.isDominant()) && (!allele2.isDominant()))
+ {
+ alleles.add(allele1);
+ }
+ else if ((allele2.isDominant()) && (!allele1.isDominant()))
+ {
+ alleles.add(allele2);
+ }
+ else
+ {
+ alleles.add(allele1);
+ if (allele1 != allele2) {
+ alleles.add(allele2);
+ }
+ }
+ String text = "";
+ for (IAllele allele : alleles) {
+ text = text + allele.getName() + ": " + 25.0F / alleles.size() + "%\n";
+ }
+ new ControlText(this, new IArea(x * boxWidth, boxHeight * y, boxWidth, boxHeight), text, TextJustification.TopCenter).setColour(11184810);
+ y++;
+ }
+ x++;
+ }
+ new ControlText(this, new IArea(boxWidth, 0.0F, boxWidth, boxHeight), "\n" + primary1.getName(), TextJustification.TopCenter).setColour(11184810);
+ new ControlText(this, new IArea(boxWidth * 2, 0.0F, boxWidth, boxHeight), "\n" + secondary1.getName(), TextJustification.TopCenter).setColour(11184810);
+ new ControlText(this, new IArea(0.0F, boxHeight, boxWidth, boxHeight), primary2.getName(), TextJustification.TopCenter).setColour(11184810);
+ new ControlText(this, new IArea(0.0F, boxHeight * 2, boxWidth, boxHeight), primary2.getName(), TextJustification.TopCenter).setColour(11184810);
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/punnett/ExtraBeeGUITexture.java b/src/Java/binnie/extrabees/gui/punnett/ExtraBeeGUITexture.java
new file mode 100644
index 0000000000..eac77aabf9
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/punnett/ExtraBeeGUITexture.java
@@ -0,0 +1,8 @@
+package binnie.extrabees.gui.punnett;
+
+public enum ExtraBeeGUITexture
+{
+ Chromosome, Chromosome2;
+
+ private ExtraBeeGUITexture() {}
+}
diff --git a/src/Java/binnie/extrabees/gui/punnett/WindowPunnettSquare.java b/src/Java/binnie/extrabees/gui/punnett/WindowPunnettSquare.java
new file mode 100644
index 0000000000..488f2b6922
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/punnett/WindowPunnettSquare.java
@@ -0,0 +1,67 @@
+package binnie.extrabees.gui.punnett;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.resource.StyleSheet;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import binnie.craftgui.resource.minecraft.PaddedTexture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.core.ExtraBeeTexture;
+import cpw.mods.fml.relauncher.Side;
+import forestry.api.genetics.ISpeciesRoot;
+import java.util.Map;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowPunnettSquare
+ extends Window
+{
+ ControlSlot bee1;
+ ControlSlot bee2;
+ ControlPunnett punnett;
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowPunnettSquare(player, inventory, side);
+ }
+
+ public WindowPunnettSquare(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(245.0F, 205.0F, player, inventory, side);
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "Punnett";
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Punnett Square");
+
+ CraftGUI.Render.stylesheet(new StyleSheetPunnett());
+ }
+
+ ISpeciesRoot root = null;
+
+ static class StyleSheetPunnett
+ extends StyleSheet
+ {
+ public StyleSheetPunnett()
+ {
+ this.textures.put(CraftGUITexture.Window, new PaddedTexture(0, 0, 160, 160, 0, ExtraBeeTexture.GUIPunnett, 32, 32, 32, 32));
+ this.textures.put(CraftGUITexture.Slot, new StandardTexture(160, 0, 18, 18, 0, ExtraBeeTexture.GUIPunnett));
+ this.textures.put(ExtraBeeGUITexture.Chromosome, new StandardTexture(160, 36, 16, 16, 0, ExtraBeeTexture.GUIPunnett));
+ this.textures.put(ExtraBeeGUITexture.Chromosome2, new StandardTexture(160, 52, 16, 16, 0, ExtraBeeTexture.GUIPunnett));
+ }
+ }
+}