Move crafting monitor behavior in an interface

This commit is contained in:
Raoul Van den Berge
2016-11-04 12:29:09 +01:00
parent 5e2cfc7a7e
commit 6272d692ed
9 changed files with 70 additions and 39 deletions

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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();
}
}

View File

@@ -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]));
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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();
}

View File

@@ -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();
}
}