aboutsummaryrefslogtreecommitdiff
path: root/src/Java/binnie/craftgui/extratrees/kitchen
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/binnie/craftgui/extratrees/kitchen')
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/ControlDropDownMenu.java18
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/ControlDropdownButton.java36
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/ControlFluidDisplay.java103
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotFluid.java77
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotGlassware.java35
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/ControlTankSlot.java49
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/WindowBottleRack.java48
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);
+ }
+}