Hunk of stuff in various states of things

This commit is contained in:
pahimar 2015-02-17 20:05:18 -05:00
parent 7c07144237
commit 051fc7f929
6 changed files with 254 additions and 27 deletions

View file

@ -2,33 +2,29 @@ package com.pahimar.ee3.client.gui.inventory;
import com.pahimar.ee3.inventory.ContainerAlchemicalTome;
import com.pahimar.ee3.reference.Textures;
import com.pahimar.ee3.util.LogHelper;
import com.pahimar.repackage.cofh.lib.gui.GuiBase;
import com.pahimar.repackage.cofh.lib.gui.element.ElementButton;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.InventoryBasic;
import net.minecraft.inventory.Slot;
import org.lwjgl.opengl.GL11;
@SideOnly(Side.CLIENT)
public class GuiAlchemicalTome extends GuiBase
{
private InventoryPlayer inventoryPlayer;
public static InventoryBasic tempInventory = new InventoryBasic("tmp", true, 81);
private static final int LEFT_CLICK = 0;
private ElementButton prevPageButton;
private ElementButton nextPageButton;
private ElementButton commonAlchemyRibbon;
private ElementButton forbiddenAlchemyRibbon;
private ElementButton alkahestryRibbon;
public GuiAlchemicalTome(EntityPlayer entityPlayer)
{
super(new ContainerAlchemicalTome(entityPlayer.inventory), Textures.Gui.ALCHEMICAL_TOME);
this.inventoryPlayer = entityPlayer.inventory;
entityPlayer.openContainer = this.inventorySlots;
LogHelper.info(this.inventorySlots instanceof ContainerAlchemicalTome);
ContainerAlchemicalTome containerAlchemicalTome = (ContainerAlchemicalTome) this.inventorySlots;
LogHelper.info(containerAlchemicalTome.getInventorySize());
xSize = 256;
ySize = 226;
}
@ -40,19 +36,9 @@ public class GuiAlchemicalTome extends GuiBase
prevPageButton = new ElementButton(this, 15, 177, "Prev", 0, 0, 20, 0, 40, 0, 20, 10, 60, 10, "textures/gui/elements/arrowLeft.png");
nextPageButton = new ElementButton(this, 223, 177, "Next", 0, 0, 22, 0, 44, 0, 22, 10, 66, 10, "textures/gui/elements/arrowRight.png");
commonAlchemyRibbon = new ElementButton(this, 140, 187, "Common Alchemy", 0, 0, 0, 0, 0, 0, 20, 40, 20, 40, "textures/gui/elements/ribbonVerticalRed.png");
alkahestryRibbon = new ElementButton(this, 190, 187, "Alkahestry", 0, 0, 0, 0, 0, 0, 20, 40, 20, 40, "textures/gui/elements/ribbonVerticalGreen.png");
forbiddenAlchemyRibbon = new ElementButton(this, 165, 187, "Forbidden Alchemy", 0, 0, 0, 0, 0, 0, 20, 40, 20, 40, "textures/gui/elements/ribbonVerticalPurple.png");
commonAlchemyRibbon.setToolTip("Common Alchemy");
alkahestryRibbon.setToolTip("Alkahestry");
forbiddenAlchemyRibbon.setToolTip("Forbidden Alchemy");
addElement(prevPageButton);
addElement(nextPageButton);
addElement(commonAlchemyRibbon);
addElement(alkahestryRibbon);
addElement(forbiddenAlchemyRibbon);
}
@Override
@ -75,4 +61,26 @@ public class GuiAlchemicalTome extends GuiBase
drawTabs(partialTicks, false);
GL11.glPopMatrix();
}
@Override
protected void updateElementInformation()
{
if (((ContainerAlchemicalTome) this.inventorySlots).getInventorySize() < 80)
{
prevPageButton.setDisabled();
nextPageButton.setDisabled();
}
}
@Override
protected void handleMouseClick(Slot slot, int p_146984_2_, int p_146984_3_, int p_146984_4_)
{
// NOOP
}
@Override
public void handleElementButtonClick(String buttonName, int mouseButton)
{
LogHelper.info(String.format("%s %s", buttonName, mouseButton));
}
}

View file

@ -3,6 +3,7 @@ package com.pahimar.ee3.client.handler;
import com.pahimar.ee3.api.EnergyValue;
import com.pahimar.ee3.exchange.EnergyValueRegistry;
import com.pahimar.ee3.exchange.WrappedStack;
import com.pahimar.ee3.inventory.ContainerAlchemicalTome;
import com.pahimar.ee3.util.IOwnable;
import com.pahimar.ee3.util.ItemHelper;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
@ -28,7 +29,7 @@ public class ItemTooltipEventHandler
@SubscribeEvent
public void handleItemTooltipEvent(ItemTooltipEvent event)
{
if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT))
if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || event.entityPlayer.openContainer instanceof ContainerAlchemicalTome)
{
WrappedStack stack = new WrappedStack(event.itemStack);
@ -37,12 +38,12 @@ public class ItemTooltipEventHandler
EnergyValue energyValue = EnergyValueRegistry.getInstance().getEnergyValue(stack);
if (stack.getStackSize() > 1)
{
event.toolTip.add("Exchange Energy (Item): " + String.format("%s", energyValueDecimalFormat.format(energyValue.getEnergyValue())));
event.toolTip.add("Exchange Energy (Stack): " + String.format("%s", energyValueDecimalFormat.format(stack.getStackSize() * energyValue.getEnergyValue())));
event.toolTip.add(String.format("Exchange Energy (Item): %s", energyValueDecimalFormat.format(energyValue.getEnergyValue())));
event.toolTip.add(String.format("Exchange Energy (Stack of %s): %s", event.itemStack.stackSize, energyValueDecimalFormat.format(energyValue.getEnergyValue())));
}
else
{
event.toolTip.add("Exchange Energy: " + String.format("%s", energyValueDecimalFormat.format(stack.getStackSize() * energyValue.getEnergyValue())));
event.toolTip.add(String.format("Exchange Energy: %s", energyValueDecimalFormat.format(stack.getStackSize() * energyValue.getEnergyValue())));
}
}
else

View file

@ -36,6 +36,8 @@ public class EnergyValueRegistry implements INBTTaggable, JsonSerializer<EnergyV
private ImmutableSortedMap<WrappedStack, EnergyValue> stackMappings;
private ImmutableSortedMap<EnergyValue, List<WrappedStack>> valueMappings;
// TODO Determine some set of itemstacks that have EMC values
private EnergyValueRegistry()
{
}

View file

@ -1,17 +1,58 @@
package com.pahimar.ee3.inventory;
import com.pahimar.ee3.knowledge.TransmutationKnowledgeRegistry;
import com.pahimar.ee3.util.ItemHelper;
import com.pahimar.repackage.cofh.lib.gui.slot.SlotViewOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
public class ContainerAlchemicalTome extends Container
import java.util.TreeSet;
public class ContainerAlchemicalTome extends ContainerEE
{
private final InventoryTransmutationKnowledge inventoryTransmutationKnowledge;
private int pageOffset;
private final static int MAX_ROW_INDEX = 8;
private final static int MAX_COLUMN_INDEX = 5;
public ContainerAlchemicalTome(InventoryPlayer inventoryPlayer)
{
TreeSet<ItemStack> knownTransmutations = new TreeSet<ItemStack>(ItemHelper.displayNameComparator);
knownTransmutations.addAll(TransmutationKnowledgeRegistry.getInstance().getPlayersKnownTransmutations(inventoryPlayer.player.getUniqueID()));
inventoryTransmutationKnowledge = new InventoryTransmutationKnowledge(knownTransmutations);
pageOffset = 0;
int i = 0;
for (int rowIndex = 0; rowIndex < MAX_ROW_INDEX; ++rowIndex)
{
for (int columnIndex = 0; columnIndex < MAX_COLUMN_INDEX; ++columnIndex)
{
this.addSlotToContainer(new SlotViewOnly(inventoryTransmutationKnowledge, i, 18 + columnIndex * 20, 18 + rowIndex * 19));
i++;
}
}
i = 40;
for (int rowIndex = 0; rowIndex < MAX_ROW_INDEX; ++rowIndex)
{
for (int columnIndex = 0; columnIndex < MAX_COLUMN_INDEX; ++columnIndex)
{
this.addSlotToContainer(new SlotViewOnly(inventoryTransmutationKnowledge, i, 140 + columnIndex * 20, 18 + rowIndex * 19));
i++;
}
}
}
public boolean canInteractWith(EntityPlayer p_75145_1_)
public boolean canInteractWith(EntityPlayer entityPlayer)
{
return true;
}
public int getInventorySize()
{
return inventoryTransmutationKnowledge.getSizeInventory();
}
}

View file

@ -0,0 +1,133 @@
package com.pahimar.ee3.inventory;
import com.pahimar.ee3.reference.Names;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import java.util.Set;
public class InventoryTransmutationKnowledge implements IInventory
{
public ItemStack[] inventory = new ItemStack[0];
public InventoryTransmutationKnowledge(Set<ItemStack> knownTransmutations)
{
if (knownTransmutations != null)
{
inventory = knownTransmutations.toArray(inventory);
}
}
@Override
public int getSizeInventory()
{
return inventory.length;
}
@Override
public ItemStack getStackInSlot(int slotIndex)
{
if (slotIndex < getSizeInventory())
{
return inventory[slotIndex];
}
return null;
}
@Override
public ItemStack decrStackSize(int slotIndex, int decrementAmount)
{
ItemStack itemStack = getStackInSlot(slotIndex);
if (itemStack != null)
{
if (itemStack.stackSize <= decrementAmount)
{
setInventorySlotContents(slotIndex, null);
}
else
{
itemStack = itemStack.splitStack(decrementAmount);
if (itemStack.stackSize == 0)
{
setInventorySlotContents(slotIndex, null);
}
}
}
return itemStack;
}
@Override
public ItemStack getStackInSlotOnClosing(int slotIndex)
{
if (getStackInSlot(slotIndex) != null)
{
ItemStack itemStack = inventory[slotIndex];
inventory[slotIndex] = null;
return itemStack;
}
else
{
return null;
}
}
@Override
public void setInventorySlotContents(int slotIndex, ItemStack itemStack)
{
if (slotIndex < inventory.length)
{
inventory[slotIndex] = itemStack;
}
}
@Override
public String getInventoryName()
{
return Names.Containers.ALCHEMICAL_TOME;
}
@Override
public boolean hasCustomInventoryName()
{
return false;
}
@Override
public int getInventoryStackLimit()
{
return 64;
}
@Override
public void markDirty()
{
// NOOP
}
@Override
public boolean isUseableByPlayer(EntityPlayer entityPlayer)
{
return true;
}
@Override
public void openInventory()
{
// NOOP
}
@Override
public void closeInventory()
{
// NOOP
}
@Override
public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack)
{
return false;
}
}

View file

@ -0,0 +1,42 @@
package com.pahimar.ee3.network.message;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import io.netty.buffer.ByteBuf;
public class MessageGuiElementClicked implements IMessage, IMessageHandler<MessageGuiElementClicked, IMessage>
{
public int guiId;
public String elementName;
public int buttonPressed;
public MessageGuiElementClicked()
{
}
public MessageGuiElementClicked(int guiId, String elementName, int buttonPressed)
{
}
@Override
public void fromBytes(ByteBuf buf)
{
}
@Override
public void toBytes(ByteBuf buf)
{
buf.writeInt(guiId);
buf.writeInt(elementName.length());
}
@Override
public IMessage onMessage(MessageGuiElementClicked message, MessageContext ctx)
{
return null;
}
}