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.RS;
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
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.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.raoulvdberge.refinedstorage.container;
|
package com.raoulvdberge.refinedstorage.container;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|
||||||
public class ContainerCraftingMonitor extends ContainerBase {
|
public class ContainerCraftingMonitor extends ContainerBase {
|
||||||
|
|||||||
@@ -1,20 +1,18 @@
|
|||||||
package com.raoulvdberge.refinedstorage.gui;
|
package com.raoulvdberge.refinedstorage.gui;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
||||||
import com.raoulvdberge.refinedstorage.api.render.IElementDrawer;
|
import com.raoulvdberge.refinedstorage.api.render.IElementDrawer;
|
||||||
import com.raoulvdberge.refinedstorage.api.render.IElementDrawers;
|
import com.raoulvdberge.refinedstorage.api.render.IElementDrawers;
|
||||||
import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor;
|
||||||
import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||||
import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorCancel;
|
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||||
import net.minecraft.client.gui.GuiButton;
|
import net.minecraft.client.gui.GuiButton;
|
||||||
import net.minecraft.client.renderer.GlStateManager;
|
import net.minecraft.client.renderer.GlStateManager;
|
||||||
import net.minecraft.client.renderer.RenderHelper;
|
import net.minecraft.client.renderer.RenderHelper;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class GuiCraftingMonitor extends GuiBase {
|
public class GuiCraftingMonitor extends GuiBase {
|
||||||
public class CraftingMonitorElementDrawers extends ElementDrawers {
|
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_WIDTH = 143;
|
||||||
private static final int ITEM_HEIGHT = 18;
|
private static final int ITEM_HEIGHT = 18;
|
||||||
|
|
||||||
private TileCraftingMonitor craftingMonitor;
|
private ICraftingMonitor craftingMonitor;
|
||||||
|
|
||||||
private GuiButton cancelButton;
|
private GuiButton cancelButton;
|
||||||
private GuiButton cancelAllButton;
|
private GuiButton cancelAllButton;
|
||||||
@@ -47,7 +45,7 @@ public class GuiCraftingMonitor extends GuiBase {
|
|||||||
private int itemSelectedX = -1;
|
private int itemSelectedX = -1;
|
||||||
private int itemSelectedY = -1;
|
private int itemSelectedY = -1;
|
||||||
|
|
||||||
public GuiCraftingMonitor(ContainerCraftingMonitor container, TileCraftingMonitor craftingMonitor) {
|
public GuiCraftingMonitor(ContainerCraftingMonitor container, ICraftingMonitor craftingMonitor) {
|
||||||
super(container, 176, 230);
|
super(container, 176, 230);
|
||||||
|
|
||||||
this.craftingMonitor = craftingMonitor;
|
this.craftingMonitor = craftingMonitor;
|
||||||
@@ -74,12 +72,12 @@ public class GuiCraftingMonitor extends GuiBase {
|
|||||||
scrollbar.setEnabled(getRows() > VISIBLE_ROWS);
|
scrollbar.setEnabled(getRows() > VISIBLE_ROWS);
|
||||||
scrollbar.setMaxOffset(getRows() - VISIBLE_ROWS);
|
scrollbar.setMaxOffset(getRows() - VISIBLE_ROWS);
|
||||||
|
|
||||||
if (itemSelected >= getElements().size()) {
|
if (itemSelected >= craftingMonitor.getElements().size()) {
|
||||||
itemSelected = -1;
|
itemSelected = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cancelButton.enabled = itemSelected != -1 && getElements().get(itemSelected).getTaskId() != -1;
|
cancelButton.enabled = itemSelected != -1 && craftingMonitor.getElements().get(itemSelected).getTaskId() != -1;
|
||||||
cancelAllButton.enabled = getElements().size() > 0;
|
cancelAllButton.enabled = craftingMonitor.getElements().size() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -88,7 +86,11 @@ public class GuiCraftingMonitor extends GuiBase {
|
|||||||
|
|
||||||
drawTexture(x, y, 0, 0, width, height);
|
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);
|
drawTexture(x + itemSelectedX, y + itemSelectedY, 0, 232, ITEM_WIDTH, ITEM_HEIGHT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -111,8 +113,8 @@ public class GuiCraftingMonitor extends GuiBase {
|
|||||||
String itemSelectedTooltip = null;
|
String itemSelectedTooltip = null;
|
||||||
|
|
||||||
for (int i = 0; i < VISIBLE_ROWS; ++i) {
|
for (int i = 0; i < VISIBLE_ROWS; ++i) {
|
||||||
if (item < getElements().size()) {
|
if (item < craftingMonitor.getElements().size()) {
|
||||||
ICraftingMonitorElement element = getElements().get(item);
|
ICraftingMonitorElement element = craftingMonitor.getElements().get(item);
|
||||||
|
|
||||||
if (item == itemSelected) {
|
if (item == itemSelected) {
|
||||||
itemSelectedX = x;
|
itemSelectedX = x;
|
||||||
@@ -138,7 +140,7 @@ public class GuiCraftingMonitor extends GuiBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int getRows() {
|
private int getRows() {
|
||||||
return getElements().size();
|
return craftingMonitor.getElements().size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -146,13 +148,13 @@ public class GuiCraftingMonitor extends GuiBase {
|
|||||||
super.actionPerformed(button);
|
super.actionPerformed(button);
|
||||||
|
|
||||||
if (button == cancelButton && itemSelected != -1) {
|
if (button == cancelButton && itemSelected != -1) {
|
||||||
ICraftingMonitorElement element = getElements().get(itemSelected);
|
ICraftingMonitorElement element = craftingMonitor.getElements().get(itemSelected);
|
||||||
|
|
||||||
if (element.getTaskId() != -1) {
|
if (element.getTaskId() != -1) {
|
||||||
RS.INSTANCE.network.sendToServer(new MessageCraftingMonitorCancel(craftingMonitor, element.getTaskId()));
|
craftingMonitor.onCancelled(element);
|
||||||
}
|
}
|
||||||
} else if (button == cancelAllButton && getElements().size() > 0) {
|
} else if (button == cancelAllButton && craftingMonitor.getElements().size() > 0) {
|
||||||
RS.INSTANCE.network.sendToServer(new MessageCraftingMonitorCancel(craftingMonitor, -1));
|
craftingMonitor.onCancelledAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,14 +171,10 @@ public class GuiCraftingMonitor extends GuiBase {
|
|||||||
int ix = 8;
|
int ix = 8;
|
||||||
int iy = 20 + (i * ITEM_HEIGHT);
|
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;
|
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.container.*;
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
|
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
|
||||||
import com.raoulvdberge.refinedstorage.tile.*;
|
import com.raoulvdberge.refinedstorage.tile.*;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||||
import com.raoulvdberge.refinedstorage.tile.externalstorage.TileExternalStorage;
|
import com.raoulvdberge.refinedstorage.tile.externalstorage.TileExternalStorage;
|
||||||
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
||||||
import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid;
|
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
|
@Override
|
||||||
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||||
if (ID == RSGui.WIRELESS_GRID) {
|
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) {
|
private GuiGrid getWirelessGridGui(EntityPlayer player, int hand, int controllerDimension) {
|
||||||
WirelessGrid grid = getWirelessGrid(player, hand, controllerDimension);
|
WirelessGrid grid = getWirelessGrid(player, hand, controllerDimension);
|
||||||
|
|
||||||
return new GuiGrid(new ContainerGrid(grid, player), grid);
|
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;
|
package com.raoulvdberge.refinedstorage.network;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
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.item.*;
|
||||||
import com.raoulvdberge.refinedstorage.network.*;
|
import com.raoulvdberge.refinedstorage.network.*;
|
||||||
import com.raoulvdberge.refinedstorage.tile.*;
|
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.ContainerListener;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
||||||
import com.raoulvdberge.refinedstorage.tile.externalstorage.TileExternalStorage;
|
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.network.MessageGridItemUpdate;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
|
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
|
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.ITileDataProducer;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
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.RS;
|
||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
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.ITileDataProducer;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
@@ -10,7 +12,7 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
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>() {
|
public static final TileDataParameter<List<ICraftingMonitorElement>> ELEMENTS = new TileDataParameter<>(RSSerializers.CRAFTING_MONITOR_ELEMENT_SERIALIZER, Collections.emptyList(), new ITileDataProducer<List<ICraftingMonitorElement>, TileCraftingMonitor>() {
|
||||||
@Override
|
@Override
|
||||||
public List<ICraftingMonitorElement> getValue(TileCraftingMonitor tile) {
|
public List<ICraftingMonitorElement> getValue(TileCraftingMonitor tile) {
|
||||||
@@ -39,4 +41,19 @@ public class TileCraftingMonitor extends TileNode {
|
|||||||
public boolean hasConnectivityState() {
|
public boolean hasConnectivityState() {
|
||||||
return true;
|
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