From 51cc7f8ed05ae4b2743ee0f9af6bc72b8b74ddc3 Mon Sep 17 00:00:00 2001 From: Arthur Uzulin Date: Mon, 7 Oct 2013 00:38:28 +1100 Subject: [PATCH] Some more work on "Eye of the Moon" --- .../textures/gui/drawbridgeAdvanced.png | Bin 0 -> 2522 bytes src/tconstruct/blocks/RedstoneMachine.java | 9 +- .../blocks/logic/AdvancedDrawbridgeLogic.java | 50 +++--- ...otButton.java => AdvDrawbridgeButton.java} | 46 ++++-- .../client/gui/AdvDrawbridgeGui.java | 33 +++- .../AdvancedDrawbridgeContainer.java | 154 ++++++++++-------- 6 files changed, 177 insertions(+), 115 deletions(-) create mode 100644 resources/assets/tinker/textures/gui/drawbridgeAdvanced.png rename src/tconstruct/client/gui/{SlotButton.java => AdvDrawbridgeButton.java} (61%) diff --git a/resources/assets/tinker/textures/gui/drawbridgeAdvanced.png b/resources/assets/tinker/textures/gui/drawbridgeAdvanced.png new file mode 100644 index 0000000000000000000000000000000000000000..112899f415bbaac251e0d15dc677543a7b34b1e4 GIT binary patch literal 2522 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 literal 0 HcmV?d00001 diff --git a/src/tconstruct/blocks/RedstoneMachine.java b/src/tconstruct/blocks/RedstoneMachine.java index 695445426f5..581813f0d2a 100644 --- a/src/tconstruct/blocks/RedstoneMachine.java +++ b/src/tconstruct/blocks/RedstoneMachine.java @@ -66,7 +66,7 @@ public int getLightValue (IBlockAccess world, int x, int y, int z) @SideOnly(Side.CLIENT) public int colorMultiplier (IBlockAccess world, int x, int y, int z) { - if (world.getBlockMetadata(x, y, z) == 0) + if (world.getBlockMetadata(x, y, z) == 0 && world.getBlockMetadata(x, y, z) == 2) { TileEntity logic = world.getBlockTileEntity(x, y, z); @@ -75,6 +75,11 @@ public int colorMultiplier (IBlockAccess world, int x, int y, int z) ItemStack stack = ((DrawbridgeLogic) logic).getStackInSlot(1); if (stack != null && stack.itemID < 4096 && Block.blocksList[stack.itemID] != null && stack.itemID != this.blockID) return Block.blocksList[stack.itemID].colorMultiplier(world, x, y, z); + }else if (logic != null && logic instanceof AdvancedDrawbridgeLogic) + { + ItemStack stack = ((AdvancedDrawbridgeLogic) logic).camoInventory.getCamoStack(); + if (stack != null && stack.itemID < 4096 && Block.blocksList[stack.itemID] != null && stack.itemID != this.blockID) + return Block.blocksList[stack.itemID].colorMultiplier(world, x, y, z); } } @@ -143,7 +148,7 @@ public void registerIcons (IconRegister iconRegister) @Override public Icon getIcon (int side, int meta) { - if (meta == 0) + if (meta == 0 || meta == 2) { if (side == 5) return icons[5]; diff --git a/src/tconstruct/blocks/logic/AdvancedDrawbridgeLogic.java b/src/tconstruct/blocks/logic/AdvancedDrawbridgeLogic.java index 72fb4085412..77c99ab45c6 100644 --- a/src/tconstruct/blocks/logic/AdvancedDrawbridgeLogic.java +++ b/src/tconstruct/blocks/logic/AdvancedDrawbridgeLogic.java @@ -22,7 +22,7 @@ import tconstruct.library.util.*; import tconstruct.util.player.FakePlayerLogic; -public class AdvancedDrawbridgeLogic extends ExpandableInventoryLogic implements IFacingLogic, IActiveLogic, IDrawbridgeLogicBase { +public class AdvancedDrawbridgeLogic extends InventoryLogic implements IFacingLogic, IActiveLogic, IDrawbridgeLogicBase { boolean active; boolean working; int ticks; @@ -32,10 +32,14 @@ public class AdvancedDrawbridgeLogic extends ExpandableInventoryLogic implements byte placementDirection = 4; FakePlayerLogic fakePlayer; - ArrayList bufferStacks = new ArrayList(); + ItemStack[] bufferStacks = new ItemStack[getSizeInventory()]; public InvCamo camoInventory = new InvCamo(); + public AdvancedDrawbridgeLogic() { + super(16); + } + @Override public void setWorldObj(World par1World) { this.worldObj = par1World; @@ -181,18 +185,18 @@ public byte getPlacementDirection() { return placementDirection; } + @Override + public ItemStack getStackInSlot (int slot){ + return slot < inventory.length ? inventory[slot] : null; + } + public ItemStack getStackInBufferSlot(int slot) { - return slot < bufferStacks.size() ? bufferStacks.get(slot) : null; + return slot < bufferStacks.length ? bufferStacks[slot] : null; } public void setBufferSlotContents(int slot, ItemStack itemstack) { - if (slot < bufferStacks.size()) { - bufferStacks.set(slot, itemstack); - } else if (slot == bufferStacks.size()) { - bufferStacks.add(itemstack); - } else if (slot < getMaxSize()) { - bufferStacks.ensureCapacity(slot); - bufferStacks.set(slot, itemstack); + if (slot < bufferStacks.length) { + bufferStacks[slot] = itemstack; } else { return; } @@ -256,9 +260,9 @@ public void updateEntity() { Block block = Block.blocksList[worldObj.getBlockId(xPos, yPos, zPos)]; if (block == null || block.isAirBlock(worldObj, xPos, yPos, zPos) || block.isBlockReplaceable(worldObj, xPos, yPos, zPos)) { // tryExtend(worldObj, xPos, yPos, zPos, direction); - int blockToItem = TConstructRegistry.blockToItemMapping[getStackInBufferSlot(extension).itemID]; + int blockToItem = getStackInBufferSlot(extension) != null ? TConstructRegistry.blockToItemMapping[getStackInBufferSlot(extension).itemID] : 0; if (blockToItem == 0) { - if (getStackInSlot(extension).itemID >= 4096 || Block.blocksList[getStackInSlot(extension).itemID] == null) + if (getStackInSlot(extension) == null || getStackInSlot(extension).itemID >= 4096 || Block.blocksList[getStackInSlot(extension).itemID] == null) return; Block placeBlock = Block.blocksList[getStackInBufferSlot(extension).itemID]; placeBlockAt(getStackInBufferSlot(extension), fakePlayer, worldObj, xPos, yPos, zPos, direction, 0, 0, 0, getStackInBufferSlot(extension).getItemDamage(), placeBlock); @@ -405,7 +409,6 @@ public void readFromNBT(NBTTagCompound tags) { } readBufferFromNBT(tags); - readCustomNBT(tags); } @@ -423,18 +426,17 @@ public void writeToNBT(NBTTagCompound tags) { } writeBufferToNBT(tags); - writeCustomNBT(tags); } public void readBufferFromNBT(NBTTagCompound tags) { NBTTagList nbttaglist = tags.getTagList("Buffer"); - bufferStacks = new ArrayList(); - bufferStacks.ensureCapacity(nbttaglist.tagCount() > getMaxSize() ? getMaxSize() : nbttaglist.tagCount()); + bufferStacks = new ItemStack[getSizeInventory()]; +// bufferStacks.ensureCapacity(nbttaglist.tagCount() > getSizeInventory() ? getSizeInventory() : nbttaglist.tagCount()); for (int iter = 0; iter < nbttaglist.tagCount(); iter++) { NBTTagCompound tagList = (NBTTagCompound) nbttaglist.tagAt(iter); byte slotID = tagList.getByte("Slot"); - if (slotID >= 0 && slotID < bufferStacks.size()) { + if (slotID >= 0 && slotID < bufferStacks.length) { setBufferSlotContents(slotID, ItemStack.loadItemStackFromNBT(tagList)); } } @@ -442,7 +444,7 @@ public void readBufferFromNBT(NBTTagCompound tags) { public void writeBufferToNBT(NBTTagCompound tags) { NBTTagList nbttaglist = new NBTTagList(); - for (int iter = 0; iter < bufferStacks.size(); iter++) { + for (int iter = 0; iter < bufferStacks.length; iter++) { if (getStackInBufferSlot(iter) != null) { NBTTagCompound tagList = new NBTTagCompound(); tagList.setByte("Slot", (byte) iter); @@ -485,19 +487,19 @@ public boolean hasExtended() { @Override public void onInventoryChanged() { super.onInventoryChanged(); - for (int i = 0; i < getMaxSize(); i++) { + for (int i = 0; i < getSizeInventory(); i++) { if (getStackInSlot(i) != null) { - setBufferSlotContents(i, getStackInSlot(0).copy()); + setBufferSlotContents(i, getStackInSlot(i).copy()); getStackInBufferSlot(i).stackSize = 1; } } this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } - @Override - public int getMaxSize() { - return 16; - } +// @Override +// public int getMaxSize() { +// return 16; +// } @Override public int getInventoryStackLimit() { diff --git a/src/tconstruct/client/gui/SlotButton.java b/src/tconstruct/client/gui/AdvDrawbridgeButton.java similarity index 61% rename from src/tconstruct/client/gui/SlotButton.java rename to src/tconstruct/client/gui/AdvDrawbridgeButton.java index fb76051ef1e..0665d90d943 100644 --- a/src/tconstruct/client/gui/SlotButton.java +++ b/src/tconstruct/client/gui/AdvDrawbridgeButton.java @@ -7,7 +7,7 @@ import net.minecraft.client.gui.GuiButton; -public class SlotButton extends GuiButton { +public class AdvDrawbridgeButton extends GuiButton { protected static final ResourceLocation buttonTextures = new ResourceLocation("tinker:textures/gui/slotButton.png"); /** Button width in pixels */ @@ -21,7 +21,16 @@ public class SlotButton extends GuiButton { /** The y position of this control. */ public int yPosition; - + + /** The x position of this control when the GUI is expanded. */ + public int xPositionExp; + + /** The x position of this control when the GUI is expanded. */ + public int yPositionExp; + + /** Is the GUI expanded. */ + public boolean isGuiExpanded = false; + /** The string displayed on this control. */ public String displayString; @@ -35,12 +44,12 @@ public class SlotButton extends GuiButton { public boolean drawButton; protected boolean field_82253_i; - public SlotButton(int par1, int par2, int par3, String par4Str) { - this(par1, par2, par3, 200, 20, par4Str); + public AdvDrawbridgeButton(int par1, int par2, int par3, int par4, int par5, String par6Str) { + this(par1, par2, par3, par4, par5, 200, 20, par6Str); } - public SlotButton(int par1, int par2, int par3, int par4, int par5, String par6Str) { - super(par1, par2, par3, par4, par5, par6Str); + public AdvDrawbridgeButton(int par1, int par2, int par3, int par4, int par5, int par6, int par7, String par8Str) { + super(par1, par2, par3, par6, par7, par8Str); this.width = 200; this.height = 20; this.enabled = true; @@ -48,9 +57,11 @@ public SlotButton(int par1, int par2, int par3, int par4, int par5, String par6S this.id = par1; this.xPosition = par2; this.yPosition = par3; - this.width = par4; - this.height = par5; - this.displayString = par6Str; + this.xPositionExp = par4; + this.yPositionExp = par5; + this.width = par6; + this.height = par7; + this.displayString = par8Str; } /** @@ -77,10 +88,14 @@ public void drawButton(Minecraft par1Minecraft, int par2, int par3) { FontRenderer fontrenderer = par1Minecraft.fontRenderer; par1Minecraft.getTextureManager().bindTexture(buttonTextures); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.field_82253_i = par2 >= this.xPosition && par3 >= this.yPosition && par2 < this.xPosition + this.width && par3 < this.yPosition + this.height; + + int xPosition = isGuiExpanded ? this.xPositionExp : this.xPosition; + int yPosition = isGuiExpanded ? this.yPositionExp : this.yPosition; + + this.field_82253_i = par2 >= xPosition && par3 >= yPosition && par2 < xPosition + this.width && par3 < yPosition + this.height; int k = this.getHoverState(this.field_82253_i); - this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 46 + k * 26, this.width / 2, this.height); - this.drawTexturedModalRect(this.xPosition + this.width / 2, this.yPosition, 200 - this.width / 2, 46 + k * 26, this.width / 2, this.height); + this.drawTexturedModalRect(xPosition, yPosition, 0, 46 + k * 26, this.width / 2, this.height); + this.drawTexturedModalRect(xPosition + this.width / 2, yPosition, 200 - this.width / 2, 46 + k * 26, this.width / 2, this.height); this.mouseDragged(par1Minecraft, par2, par3); int l = 14737632; @@ -90,7 +105,7 @@ public void drawButton(Minecraft par1Minecraft, int par2, int par3) { l = 16777120; } - this.drawCenteredString(fontrenderer, this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height - 8) / 2, l); + this.drawCenteredString(fontrenderer, this.displayString, xPosition + this.width / 2, yPosition + (this.height - 8) / 2, l); } } @@ -113,7 +128,10 @@ public void mouseReleased(int par1, int par2) { * MouseListener.mousePressed(MouseEvent e). */ public boolean mousePressed(Minecraft par1Minecraft, int par2, int par3) { - return this.enabled && this.drawButton && par2 >= this.xPosition && par3 >= this.yPosition && par2 < this.xPosition + this.width && par3 < this.yPosition + this.height; + int xPosition = isGuiExpanded ? this.xPositionExp : this.xPosition; + int yPosition = isGuiExpanded ? this.yPositionExp : this.yPosition; + + return this.enabled && this.drawButton && par2 >= xPosition && par3 >= yPosition && par2 < xPosition + this.width && par3 < yPosition + this.height; } public boolean func_82252_a() { diff --git a/src/tconstruct/client/gui/AdvDrawbridgeGui.java b/src/tconstruct/client/gui/AdvDrawbridgeGui.java index 812b4f419ef..dec23153068 100644 --- a/src/tconstruct/client/gui/AdvDrawbridgeGui.java +++ b/src/tconstruct/client/gui/AdvDrawbridgeGui.java @@ -2,6 +2,7 @@ import cpw.mods.fml.common.network.PacketDispatcher; import java.io.*; +import java.util.Iterator; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; @@ -14,7 +15,9 @@ public class AdvDrawbridgeGui extends GuiContainer { public AdvancedDrawbridgeLogic logic; - + + public boolean isGuiExpanded = false; + public AdvDrawbridgeGui(InventoryPlayer inventoryplayer, AdvancedDrawbridgeLogic frypan, World world, int x, int y, int z) { super(frypan.getGuiContainer(inventoryplayer, world, x, y, z)); @@ -23,12 +26,11 @@ public AdvDrawbridgeGui(InventoryPlayer inventoryplayer, AdvancedDrawbridgeLogic protected void drawGuiContainerForegroundLayer (int par1, int par2) { - //fontRenderer.drawString(StatCollector.translateToLocal("aggregator.glowstone"), 60, 6, 0x404040); - fontRenderer.drawString("Drawbridge", 8, 6, 0x404040); + fontRenderer.drawString("Advanced Drawbridge", 8, 6, 0x404040); fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, (ySize - 96) + 2, 0x404040); } - private static final ResourceLocation background = new ResourceLocation("tinker", "textures/gui/drawbridge.png"); + private static final ResourceLocation background = new ResourceLocation("tinker", "textures/gui/drawbridgeAdvanced.png"); protected void drawGuiContainerBackgroundLayer (float f, int i, int j) { @@ -37,6 +39,12 @@ protected void drawGuiContainerBackgroundLayer (float f, int i, int j) int cornerX = (width - xSize) / 2; int cornerY = (height - ySize) / 2; drawTexturedModalRect(cornerX, cornerY, 0, 0, xSize, ySize); + if(!isGuiExpanded){ + drawTexturedModalRect(cornerX + 34, cornerY + 35, 238, 0, 18, 18); + }else{ + drawTexturedModalRect(cornerX - 7, cornerY + 29, 0, 167, 10, 40); + drawTexturedModalRect(cornerX + 173, cornerY + 29, 10, 167, 10, 40); + } } public void initGui () @@ -67,12 +75,27 @@ public void initGui () button.enabled = false; this.buttonList.add(button); - this.buttonList.add(new SlotButton(5, this.width / 2 - 13, this.height / 2 - 52, 26, 26, "")); + this.buttonList.add(new AdvDrawbridgeButton(5, this.width / 2 - 13, this.height / 2 - 52, this.width / 2 + 58, this.height / 2 - 79, 26, 26, "Inv")); } + public void setExpanded(boolean flag){ + this.isGuiExpanded = flag; + + Iterator i1 = this.buttonList.iterator(); + while(i1.hasNext()){ + GuiButton b = i1.next(); + if(b instanceof AdvDrawbridgeButton){ + ((AdvDrawbridgeButton)b).isGuiExpanded = flag; + } else { + b.drawButton = !flag; + } + } + } + protected void actionPerformed (GuiButton button) { if(button.id == 5){ + setExpanded(!isGuiExpanded); return; } diff --git a/src/tconstruct/inventory/AdvancedDrawbridgeContainer.java b/src/tconstruct/inventory/AdvancedDrawbridgeContainer.java index 1696b35b4e8..04b6efcaad6 100644 --- a/src/tconstruct/inventory/AdvancedDrawbridgeContainer.java +++ b/src/tconstruct/inventory/AdvancedDrawbridgeContainer.java @@ -1,78 +1,92 @@ package tconstruct.inventory; +import tconstruct.client.gui.AdvDrawbridgeGui; + import net.minecraft.entity.player.*; import net.minecraft.inventory.*; import net.minecraft.item.ItemStack; import tconstruct.blocks.logic.*; -public class AdvancedDrawbridgeContainer extends Container -{ - public AdvancedDrawbridgeLogic logic; - public int progress = 0; - public int fuel = 0; - public int fuelGague = 0; - - public AdvancedDrawbridgeContainer(InventoryPlayer inventoryplayer, AdvancedDrawbridgeLogic logic) - { - this.logic = logic; - -// this.addSlotToContainer(new DrawbridgeSlot(logic, logic.selSlot < logic.getSizeInventory() ? logic.selSlot : 0, 80, 36, logic)); - this.addSlotToContainer(new SlotOpaqueBlocksOnly(logic.camoInventory, 0, 35, 36)); - - /* Player inventory */ - for (int column = 0; column < 3; column++) - { - for (int row = 0; row < 9; row++) - { - this.addSlotToContainer(new Slot(inventoryplayer, row + column * 9 + 9, 8 + row * 18, 84 + column * 18)); - } - } - - for (int column = 0; column < 9; column++) - { - this.addSlotToContainer(new Slot(inventoryplayer, column, 8 + column * 18, 142)); - } - } - - @Override - public boolean canInteractWith (EntityPlayer entityplayer) - { - return logic.isUseableByPlayer(entityplayer); - } - - @Override - public ItemStack transferStackInSlot (EntityPlayer player, int slotID) - { - ItemStack stack = null; - Slot slot = (Slot) this.inventorySlots.get(slotID); - - if (slot != null && slot.getHasStack()) - { - ItemStack slotStack = slot.getStack(); - stack = slotStack.copy(); - - if (slotID < logic.getSizeInventory()) - { - if (!this.mergeItemStack(slotStack, logic.getSizeInventory(), this.inventorySlots.size(), true)) - { - return null; - } - } - else if (!this.mergeItemStack(slotStack, 0, logic.getSizeInventory(), false)) - { - return null; - } - - if (slotStack.stackSize == 0) - { - slot.putStack((ItemStack) null); - } - else - { - slot.onSlotChanged(); - } - } - - return stack; - } +public class AdvancedDrawbridgeContainer extends Container { + public AdvancedDrawbridgeLogic logic; + public int progress = 0; + public int fuel = 0; + public int fuelGague = 0; + + private AdvDrawbridgeGui gui = null; + + public AdvancedDrawbridgeContainer(InventoryPlayer inventoryplayer, AdvancedDrawbridgeLogic logic) { + this.logic = logic; + + addContainerSlots(logic); + bindPlayerInventory(inventoryplayer); + updateContainerSlots(); + } + + public AdvancedDrawbridgeContainer(InventoryPlayer inventoryplayer, AdvancedDrawbridgeLogic logic, AdvDrawbridgeGui gui) { + this.logic = logic; + this.gui = gui; + + addContainerSlots(logic); + bindPlayerInventory(inventoryplayer); + updateContainerSlots(); + } + + public void bindPlayerInventory(InventoryPlayer inventoryPlayer) { + for (int column = 0; column < 3; column++) { + for (int row = 0; row < 9; row++) { + this.addSlotToContainer(new Slot(inventoryPlayer, row + column * 9 + 9, 8 + row * 18, 84 + column * 18)); + } + } + + for (int column = 0; column < 9; column++) { + this.addSlotToContainer(new Slot(inventoryPlayer, column, 8 + column * 18, 142)); + } + } + + public void addContainerSlots(AdvancedDrawbridgeLogic logic) { + this.addSlotToContainer(new SlotOpaqueBlocksOnly(logic.camoInventory, 0, 35, 36)); + + for(int i = 0; i < logic.getSizeInventory(); i++){ + this.addSlotToContainer(new DrawbridgeSlot(logic, i, -2 + 18 * i, 40, logic)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer entityplayer) { + return logic.isUseableByPlayer(entityplayer); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slotID) { + ItemStack stack = null; + Slot slot = (Slot) this.inventorySlots.get(slotID); + + if (slot != null && slot.getHasStack()) { + ItemStack slotStack = slot.getStack(); + stack = slotStack.copy(); + + if (slotID < logic.getSizeInventory()) { + if (!this.mergeItemStack(slotStack, logic.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else if (!this.mergeItemStack(slotStack, 0, logic.getSizeInventory(), false)) { + return null; + } + + if (slotStack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return stack; + } + + public void updateContainerSlots() { + if (gui == null || gui.isGuiExpanded) { + + } + } }