Improve Reader/Writer GUI clicks, add redstone toggle button to GUI

This commit is contained in:
raoulvdberge
2017-02-02 23:12:57 +01:00
parent 57af1d886a
commit d625098e5b
8 changed files with 33 additions and 24 deletions

View File

@@ -49,6 +49,11 @@ public class NetworkNodeReader extends NetworkNode implements IReader {
return TileReader.CHANNEL; return TileReader.CHANNEL;
} }
@Override
public TileDataParameter<Integer> getRedstoneModeParameter() {
return TileReader.REDSTONE_MODE;
}
@Override @Override
public boolean hasConnectivityState() { public boolean hasConnectivityState() {
return true; return true;

View File

@@ -87,6 +87,11 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter {
return TileWriter.CHANNEL; return TileWriter.CHANNEL;
} }
@Override
public TileDataParameter<Integer> getRedstoneModeParameter() {
return TileWriter.REDSTONE_MODE;
}
@Override @Override
public boolean hasConnectivityState() { public boolean hasConnectivityState() {
return true; return true;

View File

@@ -16,7 +16,6 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
public class BlockReader extends BlockCable { public class BlockReader extends BlockCable {
public BlockReader() { public BlockReader() {
@@ -42,7 +41,7 @@ public class BlockReader extends BlockCable {
IReaderWriterChannel channel = reader.getNetwork().getReaderWriterChannel(reader.getChannel()); IReaderWriterChannel channel = reader.getNetwork().getReaderWriterChannel(reader.getChannel());
if (channel != null) { if (channel != null) {
channel.getHandlers().stream().map(h -> h.getStatus(reader, channel)).flatMap(List::stream).collect(Collectors.toList()).forEach(player::sendMessage); channel.getHandlers().stream().map(h -> h.getStatus(reader, channel)).flatMap(List::stream).forEach(player::sendMessage);
} }
} }
} else if (tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side)) { } else if (tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side)) {

View File

@@ -17,7 +17,6 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
public class BlockWriter extends BlockCable { public class BlockWriter extends BlockCable {
public BlockWriter() { public BlockWriter() {
@@ -43,7 +42,7 @@ public class BlockWriter extends BlockCable {
IReaderWriterChannel channel = writer.getNetwork().getReaderWriterChannel(writer.getChannel()); IReaderWriterChannel channel = writer.getNetwork().getReaderWriterChannel(writer.getChannel());
if (channel != null) { if (channel != null) {
channel.getHandlers().stream().map(h -> h.getStatus(writer, channel)).flatMap(List::stream).collect(Collectors.toList()).forEach(player::sendMessage); channel.getHandlers().stream().map(h -> h.getStatus(writer, channel)).flatMap(List::stream).forEach(player::sendMessage);
} }
} }
} else if (tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side)) { } else if (tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side)) {

View File

@@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.gui;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.container.ContainerReaderWriter; import com.raoulvdberge.refinedstorage.container.ContainerReaderWriter;
import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
import com.raoulvdberge.refinedstorage.network.MessageReaderWriterChannelAdd; import com.raoulvdberge.refinedstorage.network.MessageReaderWriterChannelAdd;
import com.raoulvdberge.refinedstorage.network.MessageReaderWriterChannelRemove; import com.raoulvdberge.refinedstorage.network.MessageReaderWriterChannelRemove;
import com.raoulvdberge.refinedstorage.tile.IReaderWriter; import com.raoulvdberge.refinedstorage.tile.IReaderWriter;
@@ -42,6 +43,8 @@ public class GuiReaderWriter extends GuiBase {
@Override @Override
public void init(int x, int y) { public void init(int x, int y) {
addSideButton(new SideButtonRedstoneMode(this, readerWriter.getRedstoneModeParameter()));
add = addButton(x + 128, y + 15, 20, 20, "+"); add = addButton(x + 128, y + 15, 20, 20, "+");
remove = addButton(x + 150, 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 = new GuiTextField(0, fontRendererObj, x + 8 + 1, y + 20 + 1, 107, fontRendererObj.FONT_HEIGHT);
@@ -123,28 +126,24 @@ public class GuiReaderWriter extends GuiBase {
name.mouseClicked(mouseX, mouseY, mouseButton); name.mouseClicked(mouseX, mouseY, mouseButton);
int itemSelectedOld = itemSelected; if (inBounds(8, 39, 144, 73, mouseX - guiLeft, mouseY - guiTop)) {
if (mouseButton == 0) {
int item = scrollbar.getOffset();
itemSelected = -1; for (int i = 0; i < VISIBLE_ROWS; ++i) {
int ix = 8;
int iy = 39 + (i * ITEM_HEIGHT);
if (mouseButton == 0 && inBounds(8, 39, 144, 73, mouseX - guiLeft, mouseY - guiTop)) { if (inBounds(ix, iy, ITEM_WIDTH, ITEM_HEIGHT, mouseX - guiLeft, mouseY - guiTop) && (item + i) < getChannels().size()) {
int item = scrollbar.getOffset(); itemSelected = item + i;
for (int i = 0; i < VISIBLE_ROWS; ++i) { TileDataManager.setParameter(readerWriter.getChannelParameter(), getChannels().get(itemSelected));
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;
TileDataManager.setParameter(readerWriter.getChannelParameter(), getChannels().get(itemSelected));
} }
} else if (itemSelected != -1) {
TileDataManager.setParameter(readerWriter.getChannelParameter(), "");
} }
} }
if (itemSelectedOld != -1 && itemSelected == -1) {
TileDataManager.setParameter(readerWriter.getChannelParameter(), "");
}
} }
@Override @Override

View File

@@ -13,6 +13,8 @@ public interface IReaderWriter extends INetworkNode {
TileDataParameter<String> getChannelParameter(); TileDataParameter<String> getChannelParameter();
TileDataParameter<Integer> getRedstoneModeParameter();
default void onAdd(String name) { default void onAdd(String name) {
INetworkMaster network = getNetwork(); INetworkMaster network = getNetwork();

View File

@@ -71,7 +71,7 @@ public class TileReader extends TileNode<NetworkNodeReader> {
return false; return false;
} }
if (reader.getNetwork() == null) { if (reader.getNetwork() == null || !reader.canUpdate()) {
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
return getDummyCapabilityForClient(reader, capability) != null; return getDummyCapabilityForClient(reader, capability) != null;
} }
@@ -105,7 +105,7 @@ public class TileReader extends TileNode<NetworkNodeReader> {
return null; return null;
} }
if (reader.getNetwork() == null) { if (reader.getNetwork() == null || !reader.canUpdate()) {
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
return getDummyCapabilityForClient(reader, capability); return getDummyCapabilityForClient(reader, capability);
} }

View File

@@ -32,7 +32,7 @@ public class TileWriter extends TileNode<NetworkNodeWriter> {
return false; return false;
} }
if (writer.getNetwork() == null) { if (writer.getNetwork() == null || !writer.canUpdate()) {
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
return TileReader.getDummyCapabilityForClient(writer, capability) != null; return TileReader.getDummyCapabilityForClient(writer, capability) != null;
} }
@@ -66,7 +66,7 @@ public class TileWriter extends TileNode<NetworkNodeWriter> {
return null; return null;
} }
if (writer.getNetwork() == null) { if (writer.getNetwork() == null || !writer.canUpdate()) {
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
return TileReader.getDummyCapabilityForClient(writer, capability); return TileReader.getDummyCapabilityForClient(writer, capability);
} }