use of binnie.core.gui.geometry.Area in project Binnie by ForestryMC.
the class PageSpeciesFlowerGenome method onValueChanged.
@Override
public void onValueChanged(IAlleleSpecies species) {
deleteAllChildren();
IAllele[] template = BotanyAPI.flowerRoot.getTemplate(species.getUID());
if (template == null) {
return;
}
IFlower flower = BotanyAPI.flowerRoot.templateAsIndividual(template);
IFlowerGenome genome = flower.getGenome();
IAlleleFlowerSpecies flowerSpecies = genome.getPrimary();
int w = 144;
int h = 176;
new ControlText(this, new Area(0, 4, w, 16), I18N.localise(DatabaseConstants.BOTANY_GENOME_KEY + ".title"), TextJustification.MIDDLE_CENTER);
ControlScrollableContent scrollable = new ControlScrollableContent(this, 4, 20, w - 8, h - 8 - 16, 12);
Control contents = new Control(scrollable, 0, 0, w - 8 - 12, h - 8 - 16);
int tw = w - 8 - 12;
int w2 = 55;
int w3 = tw - 50;
int y = 0;
int th = 14;
int th2 = 18;
new ControlText(contents, new Area(0, y, w2, th), I18N.localise(DatabaseConstants.BOTANY_GENOME_KEY + ".temp"), TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), flowerSpecies.getTemperature().getName(), TextJustification.MIDDLE_LEFT);
y += th;
new ControlText(contents, new Area(0, y, w2, th), I18N.localise(DatabaseConstants.BOTANY_GENOME_KEY + ".moist"), TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), EnumHelper.getLocalisedName(flowerSpecies.getMoisture(), false), TextJustification.MIDDLE_LEFT);
y += th;
new ControlText(contents, new Area(0, y, w2, th), I18N.localise(DatabaseConstants.BOTANY_GENOME_KEY + ".ph"), TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), EnumHelper.getLocalisedName(flowerSpecies.getPH(), false), TextJustification.MIDDLE_LEFT);
y += th;
new ControlText(contents, new Area(0, y, w2, th), I18N.localise(DatabaseConstants.BOTANY_GENOME_KEY + ".fertility"), TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), genome.getFertility() + "x", TextJustification.MIDDLE_LEFT);
y += th;
float lifespan = genome.getLifespan() * 68.27f / genome.getAgeChance() / 24000.0f;
String lifespanValue = String.format("%.2f", lifespan);
new ControlText(contents, new Area(0, y, w2, th), I18N.localise(DatabaseConstants.BOTANY_GENOME_KEY + ".lifespan"), TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), I18N.localise(DatabaseConstants.BOTANY_GENOME_KEY + ".lifespan.value", lifespanValue), TextJustification.MIDDLE_LEFT);
y += th;
new ControlText(contents, new Area(0, y, w2, th), I18N.localise(DatabaseConstants.BOTANY_GENOME_KEY + ".nectar"), TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), genome.getActiveAllele(EnumFlowerChromosome.SAPPINESS).getAlleleName(), TextJustification.MIDDLE_LEFT);
y += th;
int x = w2;
int tot = 0;
for (IIndividual vid : BotanyCore.getFlowerRoot().getIndividualTemplates()) {
if (vid.getGenome().getPrimary() == flowerSpecies) {
if (tot > 0 && tot % 3 == 0) {
x -= 54;
y += 18;
}
ItemStack stack = BotanyCore.getFlowerRoot().getMemberStack(vid, EnumFlowerStage.FLOWER);
ControlItemDisplay display = new ControlItemDisplay(contents, x, y);
display.setItemStack(stack);
++tot;
x += 18;
}
}
int numOfLines = 1 + (tot - 1) / 3;
new ControlText(contents, new Area(0, y - (numOfLines - 1) * 18, w2, 4 + 18 * numOfLines), I18N.localise(DatabaseConstants.BOTANY_GENOME_KEY + ".varieties"), TextJustification.MIDDLE_RIGHT);
y += th;
contents.setSize(new Point(contents.getSize().xPos(), y));
scrollable.setScrollableContent(contents);
}
use of binnie.core.gui.geometry.Area in project Binnie by ForestryMC.
the class FlowerAlyzerPlugin method drawAnalyticsPage2.
@SideOnly(Side.CLIENT)
@Override
public void drawAnalyticsPage2(GuiScreen gui, ItemStack itemStack) {
lastTopOffset = 0;
guiLeft = (gui.width - 246) / 2;
guiTop = (gui.height - 238) / 2;
IFlower flower = BotanyAPI.flowerRoot.getMember(itemStack);
if (flower == null) {
return;
}
for (EnumFlowerChromosome chromosome : secondPageColorChromosome) {
drawChromosome(gui, chromosome, flower);
RenderUtil.drawSolidRect(new Area(guiLeft + COLUMN_1, guiTop + lastTopOffset + MARGIN, 50, 10), ((IAlleleInteger) flower.getGenome().getActiveAllele(chromosome)).getValue());
RenderUtil.drawSolidRect(new Area(guiLeft + COLUMN_2, guiTop + lastTopOffset + MARGIN, 50, 10), ((IAlleleInteger) flower.getGenome().getInactiveAllele(chromosome)).getValue());
newLine();
}
for (EnumFlowerChromosome chromosome : secondPageToleranceChromosome) {
drawChromosome(gui, chromosome, flower);
newLine();
}
}
use of binnie.core.gui.geometry.Area in project Binnie by ForestryMC.
the class WindowGenesis method initialiseClient.
@Override
@SideOnly(Side.CLIENT)
public void initialiseClient() {
new ControlPlayerInventory(this);
this.setTitle(I18N.localise("binniecore.gui.genesis.title"));
final ControlTabBar<IBreedingSystem> tabSystems = new GenesisTabSystems(this);
this.root = Binnie.GENETICS.getActiveSystems().iterator().next().getSpeciesRoot();
this.template = this.root.getDefaultTemplate();
final Area one = new Area(32, 28, 170, 100);
final Area two = new Area(214, 28, 100, 100);
new Panel(this, one.outset(1), MinecraftGUI.PanelType.BLACK);
new Panel(this, two.outset(1), MinecraftGUI.PanelType.BLACK);
this.geneList = new GeneList(this, one);
this.geneOptions = new GeneOptions(this, two);
tabSystems.addEventHandler(EventValueChanged.class, EventHandlerOrigin.SELF, tabSystems, event -> {
Object value = event.getValue();
if (!(value instanceof BreedingSystem)) {
return;
}
IBreedingSystem breedingSystem = (IBreedingSystem) value;
root = breedingSystem.getSpeciesRoot();
template = root.getDefaultTemplate();
refreshTemplate(null);
});
this.geneList.addEventHandler(EventValueChanged.class, EventHandlerOrigin.SELF, this.geneList, event -> {
Object value = event.getValue();
if (!(value instanceof Gene)) {
return;
}
Gene gene = (Gene) value;
Map<IChromosomeType, List<IAllele>> map = Binnie.GENETICS.getChromosomeMap(root);
List<Gene> options = new ArrayList<>();
IChromosomeType chromosomeType = gene.getChromosome();
List<IAllele> alleles = map.get(chromosomeType);
for (IAllele allele : alleles) {
options.add(new Gene(allele, chromosomeType, root));
}
geneOptions.setOptions(options);
});
this.geneOptions.addEventHandler(EventValueChanged.class, EventHandlerOrigin.SELF, this.geneOptions, event -> {
Object value = event.getValue();
if (!(value instanceof Gene)) {
return;
}
Gene gene = (Gene) value;
IChromosomeType chromosomeType = gene.getChromosome();
ISpeciesRoot speciesRoot = gene.getSpeciesRoot();
IAllele allele = gene.getAllele();
if (chromosomeType == speciesRoot.getSpeciesChromosomeType()) {
template = speciesRoot.getTemplate(allele.getUID());
} else {
template[chromosomeType.ordinal()] = allele;
}
refreshTemplate(chromosomeType);
});
this.panelPickup = new Panel(this, 16, 140, 60, 42, MinecraftGUI.PanelType.BLACK);
this.refreshTemplate(null);
}
use of binnie.core.gui.geometry.Area in project Binnie by ForestryMC.
the class StyleSheetParser method parseArea.
private static Area parseArea(JsonArray uvArray) {
int[] ints = new int[uvArray.size()];
if (ints.length < 1 || ints.length > 4) {
throw new JsonParseException("Parameter must have between one and four numbers");
}
for (int i = 0; i < uvArray.size(); i++) {
JsonElement object = uvArray.get(i);
ints[i] = JsonUtils.getInt(object, "uv" + i);
}
if (ints.length == 1) {
return new Area(ints[0]);
}
if (ints.length == 2) {
return new Area(ints[0], ints[1]);
}
if (ints.length == 3) {
return new Area(ints[0], ints[1], ints[2]);
}
return new Area(ints[0], ints[1], ints[2], ints[3]);
}
use of binnie.core.gui.geometry.Area in project Binnie by ForestryMC.
the class StyleSheetParser method parseTextures.
private static Map<String, Texture> parseTextures(JsonObject jsonObject, Map<String, ParsedTextureSheet> textureSheets) {
JsonArray texturesJson = JsonUtils.getJsonArray(jsonObject, TEXTURES_KEY);
if (texturesJson == null) {
return Collections.emptyMap();
}
Map<String, Texture> textures = new HashMap<>();
for (JsonElement element : texturesJson) {
if (!element.isJsonObject()) {
continue;
}
try {
JsonObject sheetJson = element.getAsJsonObject();
String name = JsonUtils.getString(sheetJson, NAME_KEY);
String sheet = JsonUtils.getString(sheetJson, SHEET_KEY);
JsonArray uvArray = JsonUtils.getJsonArray(sheetJson, UV_KEY);
IBinnieTexture textureSheet = textureSheets.get(sheet);
Area uv = parseArea(uvArray);
Border border = Border.ZERO;
Border padding = Border.ZERO;
if (sheetJson.has(BORDER_KEY)) {
JsonArray array = JsonUtils.getJsonArray(sheetJson, BORDER_KEY);
border = parseBorder(array);
}
if (sheetJson.has(PADDING_KEY)) {
JsonArray array = JsonUtils.getJsonArray(sheetJson, PADDING_KEY);
padding = parseBorder(array);
}
Texture texture = new Texture(uv, padding, border, textureSheet);
textures.put(name, texture);
} catch (Exception e) {
Log.warning("Failed to load stylesheet for Binnie's Mods.", e);
}
}
return textures;
}
Aggregations