use of binnie.core.gui.controls.ControlText in project Binnie by ForestryMC.
the class ControlGeneScroll method refresh.
public void refresh() {
if (system == null) {
return;
}
this.deleteAllChildren();
final GeneTracker tracker = GeneTracker.getTracker(Window.get(this).getWorld(), Window.get(this).getUsername());
final Map<IChromosomeType, List<IAllele>> genes = Binnie.GENETICS.getChromosomeMap(this.system.getSpeciesRoot());
int x = 0;
int y = 0;
final boolean master = ((WindowGeneBank) Window.get(this)).isMaster();
for (final Map.Entry<IChromosomeType, List<IAllele>> entry : genes.entrySet()) {
final List<IAllele> discovered = new ArrayList<>();
for (final IAllele allele : entry.getValue()) {
final Gene gene = new Gene(allele, entry.getKey(), this.system.getSpeciesRoot());
if ((master || tracker.isSequenced(new Gene(allele, entry.getKey(), this.system.getSpeciesRoot()))) && gene.getName().toLowerCase().contains(this.filter)) {
discovered.add(allele);
}
}
if (discovered.size() == 0) {
continue;
}
x = 0;
new ControlText(this, new Point(x, y), this.system.getChromosomeName(entry.getKey()));
y += 12;
for (final IAllele allele : discovered) {
if (x + 18 > this.getSize().xPos()) {
y += 20;
x = 0;
}
new ControlGene(this, x, y, new Gene(allele, entry.getKey(), this.system.getSpeciesRoot()));
x += 18;
}
y += 24;
}
this.setSize(new Point(this.getSize().xPos(), y));
}
use of binnie.core.gui.controls.ControlText in project Binnie by ForestryMC.
the class WindowFieldKit method initialiseClient.
@Override
@SideOnly(Side.CLIENT)
public void initialiseClient() {
this.setTitle(I18N.localise("binniecore.gui.fieldkit.title"));
CraftGUI.RENDER.setStyleSheet(StyleSheetManager.getSheet(StyleSheetManager.PUNNETT_SHEET));
WindowInventory inventory = this.getWindowInventory();
inventory.createSlot(INDIVIDUAL_SLOT);
inventory.createSlot(PAPER_SLOT);
this.setupValidators();
new ControlPlayerInventory(this);
final Point handGlass = new Point(16, 32);
this.GlassControl = new ControlImage(this, handGlass.xPos(), handGlass.yPos(), new StandardTexture(0, 160, 96, 96, BinnieCoreTexture.GUI_PUNNETT));
new ControlSlot.Builder(this, handGlass.xPos() + 54, handGlass.yPos() + 26).assign(InventoryType.WINDOW, 0);
new ControlSlot.Builder(this, 208, 8).assign(InventoryType.WINDOW, 1);
(this.text = new ControlText(this, new Point(232, 13), I18N.localise("binniecore.gui.fieldkit.paper"))).setColor(2236962);
(this.text = new ControlText(this, new Area(0, 120, this.getWidth(), 24), "", TextJustification.MIDDLE_CENTER)).setColor(2236962);
this.chromo = new ControlChromosome(this, 150, 24);
this.addEventHandler(EventValueChanged.class, EventHandlerOrigin.DIRECT_CHILD, this.chromo, event -> {
final IChromosomeType type = (IChromosomeType) event.getValue();
if (type != null && WindowFieldKit.this.info.containsKey(type)) {
final String t = WindowFieldKit.this.info.get(type);
WindowFieldKit.this.text.setValue(t);
} else {
WindowFieldKit.this.text.setValue("");
}
});
}
use of binnie.core.gui.controls.ControlText in project Binnie by ForestryMC.
the class PageSpeciesTreeGenome method onValueChanged.
// TODO: unused ?
/*public static String tolerated(final boolean t) {
if (t) {
return I18N.localise("binniecore.gui.tolerated");
}
return I18N.localise("binniecore.gui.nottolerated");
}*/
@Override
public void onValueChanged(final IAlleleSpecies species) {
this.deleteAllChildren();
final IAllele[] template = TreeManager.treeRoot.getTemplate(species.getUID());
if (template == null) {
return;
}
final ITree tree = TreeManager.treeRoot.templateAsIndividual(template);
final ITreeGenome genome = tree.getGenome();
final IAlleleTreeSpecies treeSpecies = genome.getPrimary();
final int w = 144;
final int h = 176;
new ControlText(this, new Area(0, 4, w, 16), this.getValue().toString(), TextJustification.MIDDLE_CENTER);
final ControlScrollableContent scrollable = new ControlScrollableContent(this, 4, 20, w - 8, h - 8 - 16, 12);
final Control contents = new Control(scrollable, 0, 0, w - 8 - 12, h - 8 - 16);
final int tw = w - 8 - 12;
final int w2 = 65;
final int w3 = tw - 50;
int y = 0;
final int th = 14;
final int th2 = 18;
final IBreedingSystem syst = Binnie.GENETICS.getSystem(TreeManager.treeRoot);
new ControlText(contents, new Area(w2, y, w3, th), treeSpecies.getPlantType().toString(), TextJustification.MIDDLE_LEFT);
y += th;
new ControlText(contents, new Area(0, y, w2, th), I18N.localise("binniecore.gui.temperature.short") + " : ", TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), treeSpecies.getTemperature().getName(), TextJustification.MIDDLE_LEFT);
y += th;
Minecraft minecraft = Minecraft.getMinecraft();
World world = minecraft.world;
TextureMap map = minecraft.getTextureMapBlocks();
ILeafSpriteProvider spriteProvider = treeSpecies.getLeafSpriteProvider();
TextureAtlasSprite leaf = map.getAtlasSprite(spriteProvider.getSprite(false, false).toString());
int leafColour = spriteProvider.getColor(false);
new ControlText(contents, new Area(0, y, w2, th2), I18N.localise("extratrees.gui.database.leaves") + " : ", TextJustification.MIDDLE_RIGHT);
new ControlBlockIconDisplay(contents, w2, y, leaf).setColor(leafColour);
IFruitProvider fruitProvider = genome.getFruitProvider();
ResourceLocation fruitSprite = fruitProvider.getSprite(genome, world, BlockPos.ORIGIN, 100);
if (fruitSprite != null && !treeSpecies.getUID().equals("forestry.treeOak")) {
TextureAtlasSprite fruit = map.getAtlasSprite(fruitSprite.toString());
int fruitColour = fruitProvider.getColour(genome, world, BlockPos.ORIGIN, 100);
new ControlBlockIconDisplay(contents, w2, y, fruit).setColor(fruitColour);
}
y += th2;
Map<ItemStack, Float> products = fruitProvider.getProducts();
ItemStack log = treeSpecies.getWoodProvider().getWoodStack();
if (log.isEmpty()) {
new ControlText(contents, new Area(0, y, w2, th2), I18N.localise("extratrees.gui.database.log") + " : ", TextJustification.MIDDLE_RIGHT);
final ControlItemDisplay display = new ControlItemDisplay(contents, w2, y);
display.setItemStack(log);
display.setTooltip();
y += th2;
}
new ControlText(contents, new Area(0, y, w2, th), syst.getChromosomeShortName(EnumTreeChromosome.HEIGHT) + " : ", TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), genome.getHeight() + "x", TextJustification.MIDDLE_LEFT);
y += th;
new ControlText(contents, new Area(0, y, w2, th), syst.getChromosomeShortName(EnumTreeChromosome.FERTILITY) + " : ", TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), genome.getFertility() + "x", TextJustification.MIDDLE_LEFT);
y += th;
List<ItemStack> fruits = new ArrayList<>(products.keySet());
if (!fruits.isEmpty()) {
new ControlText(contents, new Area(0, y, w2, th2), syst.getChromosomeShortName(EnumTreeChromosome.FRUITS) + " : ", TextJustification.MIDDLE_RIGHT);
for (ItemStack fruitw : fruits) {
final ControlItemDisplay display2 = new ControlItemDisplay(contents, w2, y);
display2.setItemStack(fruitw);
display2.setTooltip();
y += th2;
}
}
new ControlText(contents, new Area(0, y, w2, th), syst.getChromosomeShortName(EnumTreeChromosome.YIELD) + " : ", TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), genome.getYield() + "x", TextJustification.MIDDLE_LEFT);
y += th;
new ControlText(contents, new Area(0, y, w2, th), syst.getChromosomeShortName(EnumTreeChromosome.SAPPINESS) + " : ", TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), genome.getSappiness() + "x", TextJustification.MIDDLE_LEFT);
y += th;
new ControlText(contents, new Area(0, y, w2, th), syst.getChromosomeShortName(EnumTreeChromosome.MATURATION) + " : ", TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), genome.getMaturationTime() + "x", TextJustification.MIDDLE_LEFT);
y += th;
new ControlText(contents, new Area(0, y, w2, th), syst.getChromosomeShortName(EnumTreeChromosome.GIRTH) + " : ", TextJustification.MIDDLE_RIGHT);
new ControlText(contents, new Area(w2, y, w3, th), genome.getGirth() + "x" + genome.getGirth(), TextJustification.MIDDLE_LEFT);
y += th;
contents.setSize(new Point(contents.getSize().xPos(), y));
scrollable.setScrollableContent(contents);
}
use of binnie.core.gui.controls.ControlText in project Binnie by ForestryMC.
the class WindowDesigner method initialiseClient.
@Override
@SideOnly(Side.CLIENT)
public void initialiseClient() {
this.setTitle(Machine.getMachine(this.getInventory()).getPackage().getDisplayName());
new ControlText(this, new Area(190, 36, 114, 10), I18N.localise(new ResourceLocation(Constants.DESIGN_MOD_ID, "gui.design")), TextJustification.TOP_CENTER).setColor(4473924);
new Panel(this, 188, 48, 118, 126, MinecraftGUI.PanelType.GRAY);
this.textEdit = new ControlTextEdit(this, 188, 178, 118, 12);
final ControlScrollableContent scroll = new ControlScrollableContent(this, 190, 50, 114, 122, 12);
scroll.setScrollableContent(this.tileSelect = new ControlTileSelect(scroll, 0, 0));
new ControlPlayerInventory(this).setPosition(new Point(14, 96));
new ControlErrorState(this, 76, 65);
if (this.getInventory() != null) {
new ControlSlot.Builder(this, 22, 34).assign(DesignerSlots.DESIGN_SLOT_1);
new ControlSlot.Builder(this, 62, 34).assign(DesignerSlots.DESIGN_SLOT_2);
new ControlSlot.Builder(this, 42, 64).assign(DesignerSlots.ADHESIVE_SLOT);
new ControlRecipeSlot(this, 112, 34);
}
}
use of binnie.core.gui.controls.ControlText in project Binnie by ForestryMC.
the class WindowCompartment method initialiseClient.
// TODO: Clean Up, Localise
@Override
@SideOnly(Side.CLIENT)
public void initialiseClient() {
IInventory inventory = this.getInventory();
IMachine machine = Machine.getMachine(inventory);
MachinePackage machinePackage = machine.getPackage();
this.setTitle(machinePackage.getDisplayName());
int x = 16;
final int y = 32;
final ComponentCompartmentInventory inv = machine.getInterface(ComponentCompartmentInventory.class);
Integer[] tabs1 = new Integer[0];
Integer[] tabs2 = new Integer[0];
if (inv.getTabCount() == 4) {
tabs1 = new Integer[] { 0, 1 };
tabs2 = new Integer[] { 2, 3 };
}
if (inv.getTabCount() == 6) {
tabs1 = new Integer[] { 0, 1, 2 };
tabs2 = new Integer[] { 3, 4, 5 };
}
if (inv.getTabCount() == 8) {
tabs1 = new Integer[] { 0, 1, 2, 3 };
tabs2 = new Integer[] { 4, 5, 6, 7 };
}
final boolean doubleTabbed = tabs2.length > 0;
final int compartmentPageWidth = 16 + 18 * inv.getPageSize() / 5;
final int compartmentPageHeight = 106;
final int compartmentWidth = compartmentPageWidth + (doubleTabbed ? 48 : 24);
final int compartmentHeight = compartmentPageHeight;
final Control controlCompartment = new Control(this, x, y, compartmentWidth, compartmentHeight);
final ControlTabBar<Integer> tab = new ControlTabBar<>(controlCompartment, 0, 0, 24, compartmentPageHeight, Alignment.LEFT, Arrays.asList(tabs1), (x1, y1, w, h, value) -> {
return new CompartmentTabIcon(this, x1, y1, w, h, value);
});
final String[] tabHelp = { "Compartment Tab", "Tabs that divide the inventory into sections. Each one can be labelled seperately." };
tab.addHelp(tabHelp);
tab.addEventHandler(EventValueChanged.class, EventHandlerOrigin.DIRECT_CHILD, tab, event -> {
if (event.getValue() == null) {
return;
}
final NBTTagCompound nbt = new NBTTagCompound();
final int i = (Integer) event.getValue();
nbt.setByte("i", (byte) i);
Window.get(tab).sendClientAction("tab-change", nbt);
WindowCompartment.this.currentTab = i;
});
x += 24;
final ControlPages<Integer> compartmentPages = new ControlPages<>(controlCompartment, 24, 0, compartmentPageWidth, compartmentPageHeight);
final ControlPage[] page = new ControlPage[inv.getTabCount()];
for (int p = 0; p < inv.getTabCount(); ++p) {
page[p] = new ControlPage<>(compartmentPages, p);
}
CraftGUIUtil.linkWidgets(tab, compartmentPages);
int i = 0;
for (int p2 = 0; p2 < inv.getTabCount(); ++p2) {
final ControlPage thisPage = page[p2];
final Panel panel = new CompartmentCenterPanel(this, thisPage);
this.panels.put(panel, p2);
final int[] slotsIDs = new int[inv.getPageSize()];
for (int k = 0; k < inv.getPageSize(); ++k) {
slotsIDs[k] = i++;
}
new ControlSlotArray.Builder(thisPage, 8, 8, inv.getPageSize() / 5, 5).create(slotsIDs);
}
x += compartmentPageWidth;
if (tabs2.length > 0) {
final ControlTabBar<Integer> tab2 = new ControlTabBar<>(controlCompartment, 24 + compartmentPageWidth, 0, 24, compartmentPageHeight, Alignment.RIGHT, Arrays.asList(tabs2), (x1, y1, w, h, value) -> {
return new CompartmentTabIcon(this, x1, y1, w, h, value);
});
tab2.setValue(tabs1[0]);
tab2.addHelp(tabHelp);
tab2.addEventHandler(EventValueChanged.class, EventHandlerOrigin.DIRECT_CHILD, tab2, event -> {
if (event.getValue() == null) {
return;
}
final NBTTagCompound nbt = new NBTTagCompound();
final int iVal = (Integer) event.getValue();
nbt.setByte("i", (byte) iVal);
Window.get(tab).sendClientAction("tab-change", nbt);
WindowCompartment.this.currentTab = iVal;
});
CraftGUIUtil.linkWidgets(tab2, compartmentPages);
x += 24;
}
x += 16;
this.setSize(new Point(Math.max(32 + compartmentWidth, 252), this.getHeight()));
controlCompartment.setPosition(new Point((this.getWidth() - controlCompartment.getWidth()) / 2, controlCompartment.getYPos()));
final ControlPlayerInventory invent = new ControlPlayerInventory(this, true);
final ControlSlide slide = new ControlSlide(this, 0, 134, 136, 92, Alignment.LEFT);
slide.setLabel("Tab Properties");
slide.setSlide(false);
slide.addHelp("Tab Properties");
slide.addHelp("The label, colour and icon of the Tab can be altered here. Clicking on the icon with a held item will change it.");
final Panel tabPropertyPanel = new Panel(slide, 16, 8, 112, 76, MinecraftGUI.PanelType.GRAY);
int y2 = 4;
new ControlText(tabPropertyPanel, new Point(4, y2), "Tab Name:");
final Panel parent = tabPropertyPanel;
final int x2 = 4;
y2 += 12;
(this.tabName = new ControlTextEdit(parent, x2, y2, 104, 12)).addEventHandler(EventTextEdit.class, EventHandlerOrigin.SELF, this.tabName, event -> {
final binnie.core.machines.storage.CompartmentTab currentTab = WindowCompartment.this.getCurrentTab();
currentTab.setName(event.getValue());
final NBTTagCompound nbt = new NBTTagCompound();
currentTab.writeToNBT(nbt);
WindowCompartment.this.sendClientAction("comp-change-tab", nbt);
});
y2 += 20;
new ControlText(tabPropertyPanel, new Point(4, y2), "Tab Icon: ");
(this.tabIcon = new ControlItemDisplay(tabPropertyPanel, 58, y2 - 4)).setItemStack(new ItemStack(Items.PAPER));
this.tabIcon.addAttribute(Attribute.MOUSE_OVER);
this.tabIcon.addSelfEventHandler(EventMouse.Down.class, event -> {
if (WindowCompartment.this.getHeldItemStack().isEmpty()) {
return;
}
final binnie.core.machines.storage.CompartmentTab currentTab = WindowCompartment.this.getCurrentTab();
final ItemStack stack = WindowCompartment.this.getHeldItemStack().copy();
stack.setCount(1);
currentTab.setIcon(stack);
final NBTTagCompound nbt = new NBTTagCompound();
currentTab.writeToNBT(nbt);
WindowCompartment.this.sendClientAction("comp-change-tab", nbt);
});
this.tabColour = new ControlColourSelector(tabPropertyPanel, 82, y2 - 4, 16, 16, EnumColor.WHITE);
this.tabIcon.addHelp("Icon for Current Tab");
this.tabIcon.addHelp("Click here with an item to change");
y2 += 20;
new ControlText(tabPropertyPanel, new Point(4, y2), "Colour: ");
final int cw = 8;
final Panel panelColour = new Panel(tabPropertyPanel, 40, y2 - 4, cw * 8 + 2, cw * 2 + 1, MinecraftGUI.PanelType.GRAY);
for (int cc = 0; cc < 16; ++cc) {
final ControlColourSelector color = new ControlColourSelector(panelColour, 1 + cw * (cc % 8), 1 + cw * (cc / 8), cw, cw, EnumColor.values()[cc]);
color.addSelfEventHandler(EventMouse.Down.class, event -> {
final binnie.core.machines.storage.CompartmentTab currentTab = WindowCompartment.this.getCurrentTab();
currentTab.setColor(color.getValue());
final NBTTagCompound nbt = new NBTTagCompound();
currentTab.writeToNBT(nbt);
WindowCompartment.this.sendClientAction("comp-change-tab", nbt);
});
color.addHelp("Colour Selector");
color.addHelp("Select a colour to highlight the current tab");
}
y2 += 20;
final ControlButton searchButton = new SearchButton(this, controlCompartment, compartmentWidth, compartmentPageHeight);
searchButton.addHelp("Search Button");
searchButton.addHelp("Clicking this will open the Search dialog. This allows you to search the inventory for specific items.");
}
Aggregations