mirror of
https://github.com/GTNewHorizons/ForestryMC.git
synced 2026-11-14 01:04:12 +00:00
280 lines
10 KiB
Java
Executable File
280 lines
10 KiB
Java
Executable File
/*******************************************************************************
|
|
* Copyright (c) 2011-2014 SirSengir.
|
|
* All rights reserved. This program and the accompanying materials
|
|
* are made available under the terms of the GNU Lesser Public License v3
|
|
* which accompanies this distribution, and is available at
|
|
* http://www.gnu.org/licenses/lgpl-3.0.txt
|
|
*
|
|
* Various Contributors including, but not limited to:
|
|
* SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges
|
|
******************************************************************************/
|
|
package forestry.apiculture.gui;
|
|
|
|
import forestry.api.apiculture.EnumBeeChromosome;
|
|
import forestry.api.apiculture.EnumBeeType;
|
|
import forestry.api.apiculture.IBee;
|
|
import forestry.api.genetics.AlleleManager;
|
|
import forestry.api.genetics.IAlleleFlowers;
|
|
import forestry.api.genetics.IAlleleInteger;
|
|
import forestry.api.genetics.IAlleleTolerance;
|
|
import forestry.apiculture.genetics.BeeGenome;
|
|
import forestry.apiculture.items.ItemBeeGE;
|
|
import forestry.apiculture.items.ItemBeealyzer.BeealyzerInventory;
|
|
import forestry.core.config.ForestryItem;
|
|
import forestry.core.genetics.AlleleArea;
|
|
import forestry.core.genetics.AlleleBoolean;
|
|
import forestry.core.gui.GuiAlyzer;
|
|
import forestry.core.utils.StringUtil;
|
|
import forestry.core.vect.Vect;
|
|
import forestry.plugins.PluginApiculture;
|
|
import java.util.ArrayList;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
public class GuiBeealyzer extends GuiAlyzer {
|
|
|
|
public GuiBeealyzer(EntityPlayer player, BeealyzerInventory inventory) {
|
|
super("rootBees", player, new ContainerBeealyzer(player.inventory, inventory), inventory, "gui.beealyzer");
|
|
|
|
ArrayList<ItemStack> beeList = new ArrayList<ItemStack>();
|
|
((ItemBeeGE) ForestryItem.beeDroneGE.item()).addCreativeItems(beeList, false);
|
|
for (ItemStack beeStack : beeList)
|
|
iconStacks.put(BeeGenome.getSpecies(beeStack).getUID(), beeStack);
|
|
}
|
|
|
|
@Override
|
|
protected void drawGuiContainerBackgroundLayer(float var1, int mouseX, int mouseY) {
|
|
super.drawGuiContainerBackgroundLayer(var1, mouseX, mouseY);
|
|
|
|
int page = 0;
|
|
IBee bee = null;
|
|
EnumBeeType beeType = EnumBeeType.DRONE;
|
|
for (int k = 1; k < BeealyzerInventory.SLOT_ANALYZE_5 + 1; k++) {
|
|
if (k == BeealyzerInventory.SLOT_ENERGY)
|
|
continue;
|
|
|
|
if (inventory.getStackInSlot(k) == null)
|
|
continue;
|
|
bee = PluginApiculture.beeInterface.getMember(inventory.getStackInSlot(k));
|
|
beeType = PluginApiculture.beeInterface.getType(inventory.getStackInSlot(k));
|
|
if (bee == null || !bee.isAnalyzed())
|
|
continue;
|
|
|
|
page = k;
|
|
break;
|
|
}
|
|
|
|
switch (page) {
|
|
case 1:
|
|
drawAnalyticsPage1(bee, beeType);
|
|
break;
|
|
case 2:
|
|
drawAnalyticsPage2(bee, beeType);
|
|
break;
|
|
case 3:
|
|
drawAnalyticsPage3(bee, beeType);
|
|
break;
|
|
case 4:
|
|
drawAnalyticsPage4(bee);
|
|
break;
|
|
case 6:
|
|
drawAnalyticsPageClassification(bee);
|
|
break;
|
|
default:
|
|
drawAnalyticsOverview();
|
|
}
|
|
|
|
}
|
|
|
|
private void drawAnalyticsPage1(IBee bee, EnumBeeType type) {
|
|
|
|
startPage(COLUMN_0, COLUMN_1, COLUMN_2);
|
|
|
|
drawLine(StringUtil.localize("gui.active"), COLUMN_1);
|
|
drawLine(StringUtil.localize("gui.inactive"), COLUMN_2);
|
|
|
|
newLine();
|
|
newLine();
|
|
|
|
{
|
|
String customPrimaryBeeKey = "bees.custom.beealyzer." + type.getName() + "." + bee.getGenome().getPrimary().getUnlocalizedName().replace("bees.species.", "");
|
|
String customSecondaryBeeKey = "bees.custom.beealyzer." + type.getName() + "." + bee.getGenome().getSecondary().getUnlocalizedName().replace("bees.species.", "");
|
|
|
|
drawSpeciesRow(StringUtil.localize("gui.species"), bee, EnumBeeChromosome.SPECIES, checkCustomName(customPrimaryBeeKey), checkCustomName(customSecondaryBeeKey));
|
|
}
|
|
drawRow(StringUtil.localize("gui.lifespan"), bee.getGenome().getActiveAllele(EnumBeeChromosome.LIFESPAN).getName(),
|
|
bee.getGenome().getInactiveAllele(EnumBeeChromosome.LIFESPAN).getName(), bee,
|
|
EnumBeeChromosome.LIFESPAN);
|
|
|
|
drawRow(StringUtil.localize("gui.speed"), bee.getGenome().getActiveAllele(EnumBeeChromosome.SPEED).getName(),
|
|
bee.getGenome().getInactiveAllele(EnumBeeChromosome.SPEED).getName(), bee, EnumBeeChromosome.SPEED);
|
|
|
|
drawRow(StringUtil.localize("gui.pollination"), bee.getGenome().getActiveAllele(EnumBeeChromosome.FLOWERING).getName(),
|
|
bee.getGenome().getInactiveAllele(EnumBeeChromosome.FLOWERING).getName(), bee,
|
|
EnumBeeChromosome.FLOWERING);
|
|
|
|
drawRow(StringUtil.localize("gui.flowers"), bee.getGenome().getFlowerProvider().getDescription(),
|
|
((IAlleleFlowers) bee.getGenome().getInactiveAllele(EnumBeeChromosome.FLOWER_PROVIDER)).getProvider()
|
|
.getDescription(), bee, EnumBeeChromosome.FLOWER_PROVIDER);
|
|
|
|
drawLine(StringUtil.localize("gui.fertility"), COLUMN_0);
|
|
drawFertilityInfo(bee.getGenome().getFertility(), COLUMN_1, getColorCoding(bee.getGenome().getActiveAllele(EnumBeeChromosome.FERTILITY)
|
|
.isDominant()), 0);
|
|
drawFertilityInfo(((IAlleleInteger) bee.getGenome().getInactiveAllele(EnumBeeChromosome.FERTILITY)).getValue(), COLUMN_2, getColorCoding(bee
|
|
.getGenome().getInactiveAllele(EnumBeeChromosome.FERTILITY).isDominant()), 0);
|
|
|
|
newLine();
|
|
|
|
int[] areaAr = bee.getGenome().getTerritory();
|
|
Vect area = new Vect(areaAr[0], areaAr[1], areaAr[2]);
|
|
drawRow(StringUtil.localize("gui.area"), area.toString(), ((AlleleArea) bee.getGenome().getInactiveAllele(EnumBeeChromosome.TERRITORY))
|
|
.getArea().toString(), bee, EnumBeeChromosome.TERRITORY);
|
|
|
|
drawRow(StringUtil.localize("gui.effect"), bee.getGenome().getEffect().getName(),
|
|
bee.getGenome().getInactiveAllele(EnumBeeChromosome.EFFECT).getName(), bee,
|
|
EnumBeeChromosome.EFFECT);
|
|
|
|
newLine();
|
|
|
|
endPage();
|
|
}
|
|
|
|
private void drawAnalyticsPage2(IBee bee, EnumBeeType type) {
|
|
|
|
startPage(COLUMN_0, COLUMN_1, COLUMN_2);
|
|
|
|
drawLine(StringUtil.localize("gui.active"), COLUMN_1);
|
|
drawLine(StringUtil.localize("gui.inactive"), COLUMN_2);
|
|
|
|
newLine();
|
|
newLine();
|
|
|
|
drawRow(StringUtil.localize("gui.climate"), AlleleManager.climateHelper.toDisplay(bee.getGenome().getPrimary().getTemperature()),
|
|
AlleleManager.climateHelper.toDisplay(bee.getGenome().getSecondary().getTemperature()), bee, EnumBeeChromosome.SPECIES);
|
|
|
|
IAlleleTolerance tempToleranceActive = (IAlleleTolerance)bee.getGenome().getActiveAllele(EnumBeeChromosome.TEMPERATURE_TOLERANCE);
|
|
IAlleleTolerance tempToleranceInactive = (IAlleleTolerance)bee.getGenome().getInactiveAllele(EnumBeeChromosome.TEMPERATURE_TOLERANCE);
|
|
drawLine(StringUtil.localize("gui.temptol"), COLUMN_0);
|
|
drawToleranceInfo(tempToleranceActive, COLUMN_1);
|
|
drawToleranceInfo(tempToleranceInactive, COLUMN_2);
|
|
|
|
newLine();
|
|
|
|
drawRow(StringUtil.localize("gui.humidity"), AlleleManager.climateHelper.toDisplay(bee.getGenome().getPrimary().getHumidity()),
|
|
AlleleManager.climateHelper.toDisplay(bee.getGenome().getSecondary().getHumidity()), bee, EnumBeeChromosome.SPECIES);
|
|
|
|
IAlleleTolerance humidToleranceActive = (IAlleleTolerance)bee.getGenome().getActiveAllele(EnumBeeChromosome.HUMIDITY_TOLERANCE);
|
|
IAlleleTolerance humidToleranceInactive = (IAlleleTolerance)bee.getGenome().getInactiveAllele(EnumBeeChromosome.HUMIDITY_TOLERANCE);
|
|
drawLine(StringUtil.localize("gui.humidtol"), COLUMN_0);
|
|
drawToleranceInfo(humidToleranceActive, COLUMN_1);
|
|
drawToleranceInfo(humidToleranceInactive, COLUMN_2);
|
|
|
|
newLine();
|
|
newLine();
|
|
|
|
String yes = StringUtil.localize("yes");
|
|
String no = StringUtil.localize("no");
|
|
|
|
String diurnal0, diurnal1, nocturnal0, nocturnal1;
|
|
if(bee.getGenome().getNocturnal()) {
|
|
nocturnal0 = diurnal0 = yes;
|
|
} else {
|
|
nocturnal0 = bee.getGenome().getPrimary().isNocturnal() ? yes : no;
|
|
diurnal0 = !bee.getGenome().getPrimary().isNocturnal() ? yes : no;
|
|
}
|
|
if(((AlleleBoolean) bee.getGenome().getInactiveAllele(EnumBeeChromosome.NOCTURNAL)).getValue()) {
|
|
nocturnal1 = diurnal1 = yes;
|
|
} else {
|
|
nocturnal1 = bee.getGenome().getSecondary().isNocturnal() ? yes : no;
|
|
diurnal1 = !bee.getGenome().getSecondary().isNocturnal() ? yes : no;
|
|
}
|
|
|
|
drawLine(StringUtil.localize("gui.diurnal"), COLUMN_0);
|
|
drawLine(diurnal0, COLUMN_1, getColorCoding(false));
|
|
drawLine(diurnal1, COLUMN_2, getColorCoding(false));
|
|
newLine();
|
|
|
|
drawLine(StringUtil.localize("gui.nocturnal"), COLUMN_0);
|
|
drawLine(nocturnal0, COLUMN_1, getColorCoding(false));
|
|
drawLine(nocturnal1, COLUMN_2, getColorCoding(false));
|
|
newLine();
|
|
|
|
String primary = StringUtil.readableBoolean(bee.getGenome().getTolerantFlyer(), yes, no);
|
|
String secondary = StringUtil.readableBoolean(((AlleleBoolean) bee.getGenome().getInactiveAllele(EnumBeeChromosome.TOLERANT_FLYER)).getValue(), yes,
|
|
no);
|
|
|
|
drawRow(StringUtil.localize("gui.flyer"), primary, secondary, bee, EnumBeeChromosome.TOLERANT_FLYER);
|
|
|
|
primary = StringUtil.readableBoolean(bee.getGenome().getCaveDwelling(), yes, no);
|
|
secondary = StringUtil.readableBoolean(((AlleleBoolean) bee.getGenome().getInactiveAllele(EnumBeeChromosome.CAVE_DWELLING)).getValue(), yes,
|
|
no);
|
|
|
|
drawRow(StringUtil.localize("gui.cave"), primary, secondary, bee, EnumBeeChromosome.CAVE_DWELLING);
|
|
|
|
newLine();
|
|
|
|
String displayText;
|
|
if (type == EnumBeeType.PRINCESS || type == EnumBeeType.QUEEN) {
|
|
displayText = "bees.stock.pristine";
|
|
if (!bee.isNatural())
|
|
displayText = "bees.stock.ignoble";
|
|
displayText = StringUtil.localize(displayText);
|
|
drawCenteredLine(displayText, 8, 208, fontColor.get("gui.beealyzer.binomial"));
|
|
}
|
|
|
|
if (bee.getGeneration() >= 0) {
|
|
newLine();
|
|
|
|
displayText = StringUtil.localizeAndFormat("gui.beealyzer.generations", bee.getGeneration());
|
|
drawCenteredLine(displayText, 8, 208, fontColor.get("gui.beealyzer.binomial"));
|
|
}
|
|
|
|
endPage();
|
|
}
|
|
|
|
private void drawAnalyticsPage3(IBee bee, EnumBeeType type) {
|
|
|
|
float factor = this.factor;
|
|
this.setFactor(1.0f);
|
|
|
|
startPage(COLUMN_0, COLUMN_1, COLUMN_2);
|
|
|
|
drawLine(StringUtil.localize("gui.beealyzer.produce") + ":", COLUMN_0);
|
|
|
|
newLine();
|
|
|
|
int x = COLUMN_0;
|
|
for (ItemStack stack : bee.getProduceList()) {
|
|
widgetManager.add(new ItemStackWidget(adjustToFactor(x), adjustToFactor(getLineY()), stack));
|
|
|
|
x += 18;
|
|
if (x > adjustToFactor(148)) {
|
|
x = COLUMN_0;
|
|
newLine();
|
|
}
|
|
}
|
|
|
|
newLine();
|
|
newLine();
|
|
newLine();
|
|
|
|
drawLine(StringUtil.localize("gui.beealyzer.specialty") + ":", COLUMN_0);
|
|
|
|
x = COLUMN_0;
|
|
for (ItemStack stack : bee.getSpecialtyList()) {
|
|
widgetManager.add(new ItemStackWidget(adjustToFactor(x), adjustToFactor(getLineY()), stack));
|
|
|
|
x += 18;
|
|
if (x > adjustToFactor(148)) {
|
|
x = COLUMN_0;
|
|
newLine();
|
|
}
|
|
}
|
|
|
|
endPage();
|
|
|
|
this.setFactor(factor);
|
|
}
|
|
|
|
}
|