diff options
Diffstat (limited to 'src/Java/binnie/craftgui/extratrees/kitchen')
7 files changed, 366 insertions, 0 deletions
diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/ControlDropDownMenu.java b/src/Java/binnie/craftgui/extratrees/kitchen/ControlDropDownMenu.java new file mode 100644 index 0000000000..0d9c982400 --- /dev/null +++ b/src/Java/binnie/craftgui/extratrees/kitchen/ControlDropDownMenu.java @@ -0,0 +1,18 @@ +package binnie.craftgui.extratrees.kitchen; + +import binnie.craftgui.core.Attribute; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.minecraft.MinecraftGUI.PanelType; +import binnie.craftgui.window.Panel; + +public class ControlDropDownMenu + extends Panel +{ + public ControlDropDownMenu(IWidget parent, float x, float y, float width, float height) + { + super(parent, x, y, width, 2.0F, MinecraftGUI.PanelType.Gray); + addAttribute(Attribute.CanFocus); + } + + public boolean stayOpenOnChildClick = false; +} diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/ControlDropdownButton.java b/src/Java/binnie/craftgui/extratrees/kitchen/ControlDropdownButton.java new file mode 100644 index 0000000000..069272b82a --- /dev/null +++ b/src/Java/binnie/craftgui/extratrees/kitchen/ControlDropdownButton.java @@ -0,0 +1,36 @@ +package binnie.craftgui.extratrees.kitchen; + +import binnie.craftgui.controls.button.ControlButton; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.events.EventMouse.Down; +import binnie.craftgui.events.EventMouse.Down.Handler; +import binnie.craftgui.minecraft.Window; + +public abstract class ControlDropdownButton + extends ControlButton +{ + public ControlDropdownButton(IWidget parent, float x, float y, float width, float height, String text) + { + super(parent, x, y, width, height, text); + + addSelfEventHandler(new EventMouse.Down.Handler() + { + public void onEvent(EventMouse.Down event) + { + ControlDropDownMenu menu = (ControlDropDownMenu)ControlDropdownButton.this.getWidget(ControlDropDownMenu.class); + ControlDropdownButton.this.deleteChild((IWidget)ControlDropdownButton.this.getWidget(ControlDropDownMenu.class)); + if (ControlDropdownButton.this.getWidget(ControlDropDownMenu.class) == null) + { + menu = ControlDropdownButton.this.createDropDownMenu(); + Window.get(ControlDropdownButton.this.getWidget()).setFocusedWidget(menu); + } + else + { + ControlDropdownButton.this.deleteChild((IWidget)ControlDropdownButton.this.getWidget(ControlDropDownMenu.class)); + } + } + }); + } + + public abstract ControlDropDownMenu createDropDownMenu(); +} diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/ControlFluidDisplay.java b/src/Java/binnie/craftgui/extratrees/kitchen/ControlFluidDisplay.java new file mode 100644 index 0000000000..7ec1124226 --- /dev/null +++ b/src/Java/binnie/craftgui/extratrees/kitchen/ControlFluidDisplay.java @@ -0,0 +1,103 @@ +package binnie.craftgui.extratrees.kitchen; + +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.ITopLevelWidget; +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 net.minecraft.util.IIcon; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import org.lwjgl.opengl.GL11; + +public class ControlFluidDisplay + extends Control + implements ITooltip +{ + FluidStack itemStack = null; + public boolean hastooltip = false; + + public void setTooltip() + { + this.hastooltip = true; + addAttribute(Attribute.MouseOver); + } + + public ControlFluidDisplay(IWidget parent, float f, float y) + { + this(parent, f, y, 16.0F); + } + + public ControlFluidDisplay(IWidget parent, float f, float y, FluidStack stack, boolean tooltip) + { + this(parent, f, y, 16.0F); + setItemStack(stack); + if (tooltip) { + setTooltip(); + } + } + + public ControlFluidDisplay(IWidget parent, float x, float y, float size) + { + super(parent, x, y, size, size); + } + + public void onRenderForeground() + { + if (this.itemStack == null) { + return; + } + IPoint relativeToWindow = getAbsolutePosition().sub(getSuperParent().getPosition()); + if ((relativeToWindow.x() > Window.get(this).getSize().x() + 100.0F) || (relativeToWindow.y() > Window.get(this).getSize().y() + 100.0F)) { + return; + } + if (this.itemStack != null) + { + Fluid fluid = this.itemStack.getFluid(); + + int hex = fluid.getColor(this.itemStack); + + int r = (hex & 0xFF0000) >> 16; + int g = (hex & 0xFF00) >> 8; + int b = hex & 0xFF; + + IIcon icon = this.itemStack.getFluid().getIcon(this.itemStack); + + GL11.glColor4f(r / 255.0F, g / 255.0F, b / 255.0F, 1.0F); + + GL11.glEnable(3042); + + GL11.glBlendFunc(770, 771); + if (getSize().x() != 16.0F) + { + GL11.glPushMatrix(); + float scale = getSize().x() / 16.0F; + GL11.glScalef(scale, scale, 1.0F); + CraftGUI.Render.iconBlock(IPoint.ZERO, this.itemStack.getFluid().getIcon(this.itemStack)); + GL11.glPopMatrix(); + } + else + { + CraftGUI.Render.iconBlock(IPoint.ZERO, this.itemStack.getFluid().getIcon(this.itemStack)); + } + GL11.glDisable(3042); + } + } + + public void setItemStack(FluidStack itemStack) + { + this.itemStack = itemStack; + } + + public void getTooltip(Tooltip tooltip) + { + if ((this.hastooltip) && (this.itemStack != null)) { + tooltip.add(this.itemStack.getLocalizedName()); + } + } +} diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotFluid.java b/src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotFluid.java new file mode 100644 index 0000000000..5cd82c39de --- /dev/null +++ b/src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotFluid.java @@ -0,0 +1,77 @@ +package binnie.craftgui.extratrees.kitchen; + +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.ITopLevelWidget; +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.events.EventWidget.ChangeSize; +import binnie.craftgui.events.EventWidget.ChangeSize.Handler; +import binnie.craftgui.resource.minecraft.CraftGUITexture; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; + +public class ControlSlotFluid + extends Control + implements ITooltip +{ + ControlFluidDisplay itemDisplay; + FluidStack fluidStack; + + public ControlSlotFluid(IWidget parent, int x, int y, FluidStack fluid) + { + this(parent, x, y, 18, fluid); + } + + public ControlSlotFluid(IWidget parent, int x, int y, int size, FluidStack fluid) + { + super(parent, x, y, size, size); + addAttribute(Attribute.MouseOver); + this.itemDisplay = new ControlFluidDisplay(this, 1.0F, 1.0F, size - 2); + this.fluidStack = fluid; + + addSelfEventHandler(new EventWidget.ChangeSize.Handler() + { + public void onEvent(EventWidget.ChangeSize event) + { + if (ControlSlotFluid.this.itemDisplay != null) { + ControlSlotFluid.this.itemDisplay.setSize(ControlSlotFluid.this.getSize().sub(new IPoint(2.0F, 2.0F))); + } + } + }); + } + + public void onRenderBackground() + { + int size = (int)getSize().x(); + CraftGUI.Render.texture(CraftGUITexture.Slot, getArea()); + if (getSuperParent().getMousedOverWidget() == this) { + CraftGUI.Render.gradientRect(new IArea(new IPoint(1.0F, 1.0F), getArea().size().sub(new IPoint(2.0F, 2.0F))), -2130706433, -2130706433); + } + } + + public void onUpdateClient() + { + super.onUpdateClient(); + this.itemDisplay.setItemStack(getFluidStack()); + } + + public void getTooltip(Tooltip tooltip) + { + FluidStack item = getFluidStack(); + if (item == null) { + return; + } + tooltip.add(item.getFluid().getLocalizedName()); + } + + public FluidStack getFluidStack() + { + return this.fluidStack; + } +} diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotGlassware.java b/src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotGlassware.java new file mode 100644 index 0000000000..fa7cd3df84 --- /dev/null +++ b/src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotGlassware.java @@ -0,0 +1,35 @@ +package binnie.craftgui.extratrees.kitchen; + +import binnie.craftgui.controls.core.IControlValue; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.minecraft.control.ControlSlotBase; +import binnie.extratrees.alcohol.Glassware; +import net.minecraft.item.ItemStack; + +public class ControlSlotGlassware + extends ControlSlotBase + implements IControlValue<Glassware> +{ + Glassware glassware; + + public ControlSlotGlassware(IWidget parent, int x, int y, Glassware glassware) + { + super(parent, x, y); + this.glassware = glassware; + } + + public Glassware getValue() + { + return this.glassware; + } + + public void setValue(Glassware value) + { + this.glassware = value; + } + + public ItemStack getItemStack() + { + return this.glassware.get(1); + } +} diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/ControlTankSlot.java b/src/Java/binnie/craftgui/extratrees/kitchen/ControlTankSlot.java new file mode 100644 index 0000000000..c1caf1772f --- /dev/null +++ b/src/Java/binnie/craftgui/extratrees/kitchen/ControlTankSlot.java @@ -0,0 +1,49 @@ +package binnie.craftgui.extratrees.kitchen; + +import binnie.core.machines.power.TankInfo; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.core.geometry.IArea; +import binnie.craftgui.events.EventMouse.Down; +import binnie.craftgui.events.EventMouse.Down.Handler; +import binnie.craftgui.minecraft.ContainerCraftGUI; +import binnie.craftgui.minecraft.Window; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fluids.FluidStack; + +public class ControlTankSlot + extends ControlSlotFluid +{ + int tankID = 0; + + public ControlTankSlot(IWidget parent, int x, int y, int i) + { + super(parent, x, y, null); + this.tankID = i; + + addSelfEventHandler(new EventMouse.Down.Handler() + { + public void onEvent(EventMouse.Down event) + { + if (event.getButton() == 0) + { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setByte("id", (byte)ControlTankSlot.this.tankID); + Window.get(ControlTankSlot.this.getWidget()).sendClientAction("tank-click", nbt); + } + } + }); + } + + public void onUpdateClient() + { + this.fluidStack = Window.get(this).getContainer().getTankInfo(this.tankID).liquid; + int height = (int)(16.0F * ((this.fluidStack == null ? 0 : this.fluidStack.amount) / 1000.0F)); + this.itemDisplay.setCroppedZone(this.itemDisplay, new IArea(0.0F, 16 - height, 16.0F, 16.0F)); + super.onUpdateClient(); + } + + public void onRenderBackground() + { + super.onRenderBackground(); + } +} diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/WindowBottleRack.java b/src/Java/binnie/craftgui/extratrees/kitchen/WindowBottleRack.java new file mode 100644 index 0000000000..8fffff9ed2 --- /dev/null +++ b/src/Java/binnie/craftgui/extratrees/kitchen/WindowBottleRack.java @@ -0,0 +1,48 @@ +package binnie.craftgui.extratrees.kitchen; + +import binnie.core.AbstractMod; +import binnie.core.machines.IMachine; +import binnie.core.machines.Machine; +import binnie.core.machines.MachinePackage; +import binnie.craftgui.minecraft.Window; +import binnie.craftgui.minecraft.control.ControlPlayerInventory; +import binnie.extratrees.ExtraTrees; +import cpw.mods.fml.relauncher.Side; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; + +public class WindowBottleRack + extends Window +{ + public WindowBottleRack(EntityPlayer player, IInventory inventory, Side side) + { + super(248.0F, 180.0F, player, inventory, side); + } + + public static Window create(EntityPlayer player, IInventory inventory, Side side) + { + return new WindowBottleRack(player, inventory, side); + } + + protected AbstractMod getMod() + { + return ExtraTrees.instance; + } + + protected String getName() + { + return "BottleBank"; + } + + public void initialiseClient() + { + setTitle(Machine.getMachine(getInventory()).getPackage().getDisplayName()); + for (int i = 0; i < 36; i++) + { + int x = i % 12; + int y = i / 12; + new ControlTankSlot(this, 16 + x * 18, 32 + y * 18, i); + } + new ControlPlayerInventory(this); + } +} |