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