Add reader writer gui

This commit is contained in:
Raoul Van den Berge
2016-11-11 13:55:59 +01:00
parent 8802116434
commit 30a3f7dcde
14 changed files with 253 additions and 19 deletions

View File

@@ -27,4 +27,5 @@ public final class RSBlocks {
public static final BlockFluidInterface FLUID_INTERFACE = new BlockFluidInterface();
public static final BlockFluidStorage FLUID_STORAGE = new BlockFluidStorage();
public static final BlockDiskManipulator DISK_MANIPULATOR = new BlockDiskManipulator();
public static final BlockReader READER = new BlockReader();
}

View File

@@ -25,4 +25,5 @@ public final class RSGui {
public static final int FLUID_STORAGE = 21;
public static final int DISK_MANIPULATOR = 22;
public static final int WIRELESS_CRAFTING_MONITOR = 23;
public static final int READER_WRITER = 24;
}

View File

@@ -232,14 +232,6 @@ public interface INetworkMaster {
*/
void addReaderWriterChannel(String name);
/**
* Renames a reader writer channel.
*
* @param oldName the old name
* @param newName the new name
*/
void renameReaderWriterChannel(String oldName, String newName);
/**
* Removes a reader writer channel.
*

View File

@@ -0,0 +1,38 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.tile.TileReader;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public class BlockReader extends BlockNode {
public BlockReader() {
super("reader");
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
player.openGui(RS.INSTANCE, RSGui.READER_WRITER, world, pos.getX(), pos.getY(), pos.getZ());
}
return true;
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileReader();
}
@Override
public EnumPlacementType getPlacementType() {
return EnumPlacementType.ANY;
}
}

View File

@@ -0,0 +1,12 @@
package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.tile.TileBase;
import net.minecraft.entity.player.EntityPlayer;
public class ContainerReaderWriter extends ContainerBase {
public ContainerReaderWriter(TileBase tile, EntityPlayer player) {
super(tile, player);
addPlayerInventory(8, 127);
}
}

View File

@@ -116,8 +116,7 @@ public class GuiCraftingMonitor extends GuiBase {
RenderHelper.enableGUIStandardItemLighting();
int ox = 8;
int x = ox;
int x = 8;
int y = 20;
itemSelectedX = -1;
@@ -139,7 +138,6 @@ public class GuiCraftingMonitor extends GuiBase {
element.draw(x, y, drawers);
x = ox;
y += ITEM_HEIGHT;
}

View File

@@ -62,6 +62,8 @@ public class GuiHandler implements IGuiHandler {
return new ContainerFluidStorage((TileFluidStorage) tile, player);
case RSGui.DISK_MANIPULATOR:
return new ContainerDiskManipulator((TileDiskManipulator) tile, player);
case RSGui.READER_WRITER:
return new ContainerReaderWriter((TileBase) tile, player);
default:
return null;
}
@@ -133,6 +135,8 @@ public class GuiHandler implements IGuiHandler {
return new GuiDiskManipulator((ContainerDiskManipulator) getContainer(ID, player, tile));
case RSGui.WIRELESS_CRAFTING_MONITOR:
return getWirelessCraftingMonitorGui(player, x, y);
case RSGui.READER_WRITER:
return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IReaderWriterGui) tile);
default:
return null;
}

View File

@@ -0,0 +1,167 @@
package com.raoulvdberge.refinedstorage.gui;
import com.raoulvdberge.refinedstorage.container.ContainerReaderWriter;
import com.raoulvdberge.refinedstorage.tile.IReaderWriterGui;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.client.renderer.GlStateManager;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class GuiReaderWriter extends GuiBase {
private static final int VISIBLE_ROWS = 4;
private static final int ITEM_WIDTH = 143;
private static final int ITEM_HEIGHT = 18;
private GuiButton add;
private GuiButton remove;
private GuiTextField name;
private IReaderWriterGui readerWriter;
private int itemSelected = -1;
private int itemSelectedX = -1;
private int itemSelectedY = -1;
public GuiReaderWriter(ContainerReaderWriter container, IReaderWriterGui readerWriter) {
super(container, 176, 209);
this.readerWriter = readerWriter;
this.scrollbar = new Scrollbar(157, 39, 12, 71);
}
@Override
public void init(int x, int y) {
add = addButton(x + 128, y + 15, 20, 20, "+");
remove = addButton(x + 150, y + 15, 20, 20, "-");
name = new GuiTextField(0, fontRendererObj, x + 8 + 1, y + 20 + 1, 107, fontRendererObj.FONT_HEIGHT);
name.setEnableBackgroundDrawing(false);
name.setVisible(true);
name.setTextColor(16777215);
name.setCanLoseFocus(true);
name.setFocused(false);
}
@Override
public void update(int x, int y) {
scrollbar.setEnabled(getRows() > VISIBLE_ROWS);
scrollbar.setMaxOffset(getRows() - VISIBLE_ROWS);
if (itemSelected >= getChannels().size()) {
itemSelected = -1;
}
}
private int getRows() {
return getChannels().size();
}
@Override
public void drawBackground(int x, int y, int mouseX, int mouseY) {
bindTexture("gui/readerwriter.png");
drawTexture(x, y, 0, 0, width, height);
if (itemSelectedX != -1 &&
itemSelectedY != -1 &&
itemSelected >= 0 &&
itemSelected < getChannels().size()) {
drawTexture(x + itemSelectedX, y + itemSelectedY, 0, 216, ITEM_WIDTH, ITEM_HEIGHT);
}
name.drawTextBox();
}
@Override
public void drawForeground(int mouseX, int mouseY) {
drawString(7, 7, t(readerWriter.getTitle()));
drawString(7, 115, t("container.inventory"));
int x = 8;
int y = 39;
int item = scrollbar.getOffset();
for (int i = 0; i < VISIBLE_ROWS; ++i) {
if (item < getChannels().size()) {
if (item == itemSelected) {
itemSelectedX = x;
itemSelectedY = y;
}
float scale = 0.5f;
GlStateManager.pushMatrix();
GlStateManager.scale(scale, scale, 1);
drawString(calculateOffsetOnScale(x + 5, scale), calculateOffsetOnScale(y + 7, scale), getChannels().get(item));
GlStateManager.popMatrix();
y += ITEM_HEIGHT;
}
item++;
}
}
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
super.mouseClicked(mouseX, mouseY, mouseButton);
name.mouseClicked(mouseX, mouseY, mouseButton);
itemSelected = -1;
if (mouseButton == 0 && inBounds(8, 39, 144, 73, mouseX - guiLeft, mouseY - guiTop)) {
int item = scrollbar.getOffset();
for (int i = 0; i < VISIBLE_ROWS; ++i) {
int ix = 8;
int iy = 39 + (i * ITEM_HEIGHT);
if (inBounds(ix, iy, ITEM_WIDTH, ITEM_HEIGHT, mouseX - guiLeft, mouseY - guiTop) && (item + i) < getChannels().size()) {
itemSelected = item + i;
}
}
}
}
@Override
protected void keyTyped(char character, int keyCode) throws IOException {
if (!checkHotbarKeys(keyCode) && name.textboxKeyTyped(character, keyCode)) {
// NO OP
} else {
super.keyTyped(character, keyCode);
}
}
@Override
protected void actionPerformed(GuiButton button) throws IOException {
super.actionPerformed(button);
if (button == add) {
} else if (button == remove) {
}
}
private List<String> tempChannels;
private List<String> getChannels() {
if (tempChannels == null) {
tempChannels = new ArrayList<>();
for (int i = 0; i < 40; ++i) {
tempChannels.add("Item " + i);
}
}
return tempChannels;
}
}

View File

@@ -128,6 +128,7 @@ public class ProxyCommon {
registerTile(TileFluidInterface.class, "fluid_interface");
registerTile(TileFluidStorage.class, "fluid_storage");
registerTile(TileDiskManipulator.class, "disk_manipulator");
registerTile(TileReader.class, "reader");
registerBlock(RSBlocks.CONTROLLER);
registerBlock(RSBlocks.GRID);
@@ -153,6 +154,7 @@ public class ProxyCommon {
registerBlock(RSBlocks.NETWORK_TRANSMITTER);
registerBlock(RSBlocks.NETWORK_RECEIVER);
registerBlock(RSBlocks.DISK_MANIPULATOR);
registerBlock(RSBlocks.READER);
registerItem(RSItems.QUARTZ_ENRICHED_IRON);
registerItem(RSItems.STORAGE_DISK);

View File

@@ -0,0 +1,9 @@
package com.raoulvdberge.refinedstorage.tile;
public interface IReaderWriterGui {
String getTitle();
void onAdd(String name);
void onRemove(String name);
}

View File

@@ -573,13 +573,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
readerWriterChannels.put(name, API.instance().createReaderWriterChannel(this));
}
@Override
public void renameReaderWriterChannel(String oldName, String newName) {
readerWriterChannels.put(newName, readerWriterChannels.get(oldName));
removeReaderWriterChannel(oldName);
}
@Override
public void removeReaderWriterChannel(String name) {
readerWriterChannels.remove(name);

View File

@@ -2,7 +2,7 @@ package com.raoulvdberge.refinedstorage.tile;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader;
public class TileReader extends TileNode implements IReader {
public class TileReader extends TileNode implements IReader, IReaderWriterGui {
@Override
public int getEnergyUsage() {
return 0; // @TODO
@@ -16,4 +16,19 @@ public class TileReader extends TileNode implements IReader {
public int getRedstoneStrength() {
return worldObj.getRedstonePower(pos, getDirection().getOpposite());
}
@Override
public String getTitle() {
return "gui.refinedstorage:reader";
}
@Override
public void onAdd(String name) {
// @TODO
}
@Override
public void onRemove(String name) {
// @TODO
}
}

View File

@@ -52,6 +52,7 @@ gui.refinedstorage:crafting_preview.missing=Missing: %d
gui.refinedstorage:crafting_preview.circular=Circular dependency!
gui.refinedstorage:crafting_preview.loop=Loop in processing...
gui.refinedstorage:crafting_preview.force_start=Press CTRL + SHIFT to start anyway
gui.refinedstorage:reader=Reader
misc.refinedstorage:energy_stored=%d / %d RS
misc.refinedstorage:energy_usage=Usage: %d RS/t
@@ -179,6 +180,7 @@ block.refinedstorage:fluid_storage.1.name=128k Fluid Storage Block
block.refinedstorage:fluid_storage.2.name=256k Fluid Storage Block
block.refinedstorage:fluid_storage.3.name=512k Fluid Storage Block
block.refinedstorage:fluid_storage.4.name=Creative Fluid Storage Block
block.refinedstorage:reader.name=Reader
item.refinedstorage:storage_disk.0.name=1k Storage Disk
item.refinedstorage:storage_disk.1.name=4k Storage Disk

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB