Move crafting monitor behavior in an interface
This commit is contained in:
@@ -2,7 +2,7 @@ package com.raoulvdberge.refinedstorage.block;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.RSGui;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.raoulvdberge.refinedstorage.container;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.tile.TileCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
||||
public class ContainerCraftingMonitor extends ContainerBase {
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
package com.raoulvdberge.refinedstorage.gui;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.api.render.IElementDrawer;
|
||||
import com.raoulvdberge.refinedstorage.api.render.IElementDrawers;
|
||||
import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorCancel;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
public class GuiCraftingMonitor extends GuiBase {
|
||||
public class CraftingMonitorElementDrawers extends ElementDrawers {
|
||||
@@ -35,7 +33,7 @@ public class GuiCraftingMonitor extends GuiBase {
|
||||
private static final int ITEM_WIDTH = 143;
|
||||
private static final int ITEM_HEIGHT = 18;
|
||||
|
||||
private TileCraftingMonitor craftingMonitor;
|
||||
private ICraftingMonitor craftingMonitor;
|
||||
|
||||
private GuiButton cancelButton;
|
||||
private GuiButton cancelAllButton;
|
||||
@@ -47,7 +45,7 @@ public class GuiCraftingMonitor extends GuiBase {
|
||||
private int itemSelectedX = -1;
|
||||
private int itemSelectedY = -1;
|
||||
|
||||
public GuiCraftingMonitor(ContainerCraftingMonitor container, TileCraftingMonitor craftingMonitor) {
|
||||
public GuiCraftingMonitor(ContainerCraftingMonitor container, ICraftingMonitor craftingMonitor) {
|
||||
super(container, 176, 230);
|
||||
|
||||
this.craftingMonitor = craftingMonitor;
|
||||
@@ -74,12 +72,12 @@ public class GuiCraftingMonitor extends GuiBase {
|
||||
scrollbar.setEnabled(getRows() > VISIBLE_ROWS);
|
||||
scrollbar.setMaxOffset(getRows() - VISIBLE_ROWS);
|
||||
|
||||
if (itemSelected >= getElements().size()) {
|
||||
if (itemSelected >= craftingMonitor.getElements().size()) {
|
||||
itemSelected = -1;
|
||||
}
|
||||
|
||||
cancelButton.enabled = itemSelected != -1 && getElements().get(itemSelected).getTaskId() != -1;
|
||||
cancelAllButton.enabled = getElements().size() > 0;
|
||||
cancelButton.enabled = itemSelected != -1 && craftingMonitor.getElements().get(itemSelected).getTaskId() != -1;
|
||||
cancelAllButton.enabled = craftingMonitor.getElements().size() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -88,7 +86,11 @@ public class GuiCraftingMonitor extends GuiBase {
|
||||
|
||||
drawTexture(x, y, 0, 0, width, height);
|
||||
|
||||
if (itemSelectedX != -1 && itemSelectedY != -1 && itemSelected >= 0 && itemSelected < getElements().size() && getElements().get(itemSelected).canDrawSelection()) {
|
||||
if (itemSelectedX != -1 &&
|
||||
itemSelectedY != -1 &&
|
||||
itemSelected >= 0 &&
|
||||
itemSelected < craftingMonitor.getElements().size() &&
|
||||
craftingMonitor.getElements().get(itemSelected).canDrawSelection()) {
|
||||
drawTexture(x + itemSelectedX, y + itemSelectedY, 0, 232, ITEM_WIDTH, ITEM_HEIGHT);
|
||||
}
|
||||
}
|
||||
@@ -111,8 +113,8 @@ public class GuiCraftingMonitor extends GuiBase {
|
||||
String itemSelectedTooltip = null;
|
||||
|
||||
for (int i = 0; i < VISIBLE_ROWS; ++i) {
|
||||
if (item < getElements().size()) {
|
||||
ICraftingMonitorElement element = getElements().get(item);
|
||||
if (item < craftingMonitor.getElements().size()) {
|
||||
ICraftingMonitorElement element = craftingMonitor.getElements().get(item);
|
||||
|
||||
if (item == itemSelected) {
|
||||
itemSelectedX = x;
|
||||
@@ -138,7 +140,7 @@ public class GuiCraftingMonitor extends GuiBase {
|
||||
}
|
||||
|
||||
private int getRows() {
|
||||
return getElements().size();
|
||||
return craftingMonitor.getElements().size();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -146,13 +148,13 @@ public class GuiCraftingMonitor extends GuiBase {
|
||||
super.actionPerformed(button);
|
||||
|
||||
if (button == cancelButton && itemSelected != -1) {
|
||||
ICraftingMonitorElement element = getElements().get(itemSelected);
|
||||
ICraftingMonitorElement element = craftingMonitor.getElements().get(itemSelected);
|
||||
|
||||
if (element.getTaskId() != -1) {
|
||||
RS.INSTANCE.network.sendToServer(new MessageCraftingMonitorCancel(craftingMonitor, element.getTaskId()));
|
||||
craftingMonitor.onCancelled(element);
|
||||
}
|
||||
} else if (button == cancelAllButton && getElements().size() > 0) {
|
||||
RS.INSTANCE.network.sendToServer(new MessageCraftingMonitorCancel(craftingMonitor, -1));
|
||||
} else if (button == cancelAllButton && craftingMonitor.getElements().size() > 0) {
|
||||
craftingMonitor.onCancelledAll();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,14 +171,10 @@ public class GuiCraftingMonitor extends GuiBase {
|
||||
int ix = 8;
|
||||
int iy = 20 + (i * ITEM_HEIGHT);
|
||||
|
||||
if (inBounds(ix, iy, ITEM_WIDTH, ITEM_HEIGHT, mouseX - guiLeft, mouseY - guiTop) && (item + i) < getElements().size()) {
|
||||
if (inBounds(ix, iy, ITEM_WIDTH, ITEM_HEIGHT, mouseX - guiLeft, mouseY - guiTop) && (item + i) < craftingMonitor.getElements().size()) {
|
||||
itemSelected = item + i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<ICraftingMonitorElement> getElements() {
|
||||
return TileCraftingMonitor.ELEMENTS.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.raoulvdberge.refinedstorage.RSGui;
|
||||
import com.raoulvdberge.refinedstorage.container.*;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
|
||||
import com.raoulvdberge.refinedstorage.tile.*;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.externalstorage.TileExternalStorage;
|
||||
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
||||
import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid;
|
||||
@@ -65,18 +66,6 @@ public class GuiHandler implements IGuiHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private WirelessGrid getWirelessGrid(EntityPlayer player, int hand, int controllerDimension) {
|
||||
return new WirelessGrid(controllerDimension, player.getHeldItem(EnumHand.values()[hand]));
|
||||
}
|
||||
|
||||
private ContainerGrid getWirelessGridContainer(EntityPlayer player, int hand, int controllerDimension) {
|
||||
return new ContainerGrid(getWirelessGrid(player, hand, controllerDimension), player);
|
||||
}
|
||||
|
||||
private ContainerGridFilter getGridFilterContainer(EntityPlayer player, int hand) {
|
||||
return new ContainerGridFilter(player, player.getHeldItem(EnumHand.values()[hand]));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
if (ID == RSGui.WIRELESS_GRID) {
|
||||
@@ -144,9 +133,21 @@ public class GuiHandler implements IGuiHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private WirelessGrid getWirelessGrid(EntityPlayer player, int hand, int controllerDimension) {
|
||||
return new WirelessGrid(controllerDimension, player.getHeldItem(EnumHand.values()[hand]));
|
||||
}
|
||||
|
||||
private GuiGrid getWirelessGridGui(EntityPlayer player, int hand, int controllerDimension) {
|
||||
WirelessGrid grid = getWirelessGrid(player, hand, controllerDimension);
|
||||
|
||||
return new GuiGrid(new ContainerGrid(grid, player), grid);
|
||||
}
|
||||
|
||||
private ContainerGrid getWirelessGridContainer(EntityPlayer player, int hand, int controllerDimension) {
|
||||
return new ContainerGrid(getWirelessGrid(player, hand, controllerDimension), player);
|
||||
}
|
||||
|
||||
private ContainerGridFilter getGridFilterContainer(EntityPlayer player, int hand) {
|
||||
return new ContainerGridFilter(player, player.getHeldItem(EnumHand.values()[hand]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.raoulvdberge.refinedstorage.network;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.tile.TileCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.raoulvdberge.refinedstorage.integration.craftingtweaks.IntegrationCra
|
||||
import com.raoulvdberge.refinedstorage.item.*;
|
||||
import com.raoulvdberge.refinedstorage.network.*;
|
||||
import com.raoulvdberge.refinedstorage.tile.*;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.ContainerListener;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
||||
import com.raoulvdberge.refinedstorage.tile.externalstorage.TileExternalStorage;
|
||||
|
||||
@@ -49,6 +49,7 @@ import com.raoulvdberge.refinedstorage.network.MessageGridItemDelta;
|
||||
import com.raoulvdberge.refinedstorage.network.MessageGridItemUpdate;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.ITileDataProducer;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.raoulvdberge.refinedstorage.tile.craftingmonitor;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ICraftingMonitor {
|
||||
void onCancelled(ICraftingMonitorElement element);
|
||||
|
||||
void onCancelledAll();
|
||||
|
||||
List<ICraftingMonitorElement> getElements();
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.raoulvdberge.refinedstorage.tile;
|
||||
package com.raoulvdberge.refinedstorage.tile.craftingmonitor;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorCancel;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileNode;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.ITileDataProducer;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
@@ -10,7 +12,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class TileCraftingMonitor extends TileNode {
|
||||
public class TileCraftingMonitor extends TileNode implements ICraftingMonitor {
|
||||
public static final TileDataParameter<List<ICraftingMonitorElement>> ELEMENTS = new TileDataParameter<>(RSSerializers.CRAFTING_MONITOR_ELEMENT_SERIALIZER, Collections.emptyList(), new ITileDataProducer<List<ICraftingMonitorElement>, TileCraftingMonitor>() {
|
||||
@Override
|
||||
public List<ICraftingMonitorElement> getValue(TileCraftingMonitor tile) {
|
||||
@@ -39,4 +41,19 @@ public class TileCraftingMonitor extends TileNode {
|
||||
public boolean hasConnectivityState() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancelled(ICraftingMonitorElement element) {
|
||||
RS.INSTANCE.network.sendToServer(new MessageCraftingMonitorCancel(this, element.getTaskId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancelledAll() {
|
||||
RS.INSTANCE.network.sendToServer(new MessageCraftingMonitorCancel(this, -1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ICraftingMonitorElement> getElements() {
|
||||
return ELEMENTS.getValue();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user