Display active machines in controller.

This commit is contained in:
Raoul Van den Berge
2016-03-23 14:33:49 +01:00
parent 5c3b42a375
commit 57ad0b0319
11 changed files with 109 additions and 27 deletions

View File

@@ -1,8 +1,13 @@
package refinedstorage.gui;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.item.ItemStack;
import refinedstorage.container.ContainerController;
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
import refinedstorage.tile.TileController;
import refinedstorage.tile.TileMachine;
public class GuiController extends GuiBase
{
@@ -11,7 +16,9 @@ public class GuiController extends GuiBase
private int barX = 8;
private int barY = 20;
private int barWidth = 16;
private int barHeight = 58;
private int barHeight = 59;
private Scrollbar scrollbar = new Scrollbar(157, 20, 12, 59);
public GuiController(ContainerController container, TileController controller)
{
@@ -29,6 +36,7 @@ public class GuiController extends GuiBase
@Override
public void update(int x, int y)
{
scrollbar.setCanScroll(getRows() > getVisibleRows());
}
@Override
@@ -41,19 +49,72 @@ public class GuiController extends GuiBase
int barHeightNew = (int) ((float) controller.getEnergyStored(null) / (float) controller.getMaxEnergyStored(null) * (float) barHeight);
drawTexture(x + barX, y + barY + barHeight - barHeightNew, 178, 0 + (barHeight - barHeightNew), barWidth, barHeightNew);
scrollbar.draw(this);
}
@Override
public void drawForeground(int mouseX, int mouseY)
{
scrollbar.update(this, mouseX, mouseY);
drawString(7, 7, t("gui.refinedstorage:controller." + controller.getType().getId()));
drawString(7, 87, t("container.inventory"));
drawString(31, 20, t("misc.refinedstorage:energy_usage", controller.getEnergyUsage()));
int x = 33;
int y = 26;
int slot = getOffset() * 2;
RenderHelper.enableGUIStandardItemLighting();
for (int i = 0; i < 4; ++i)
{
if (slot < controller.getMachines().size())
{
TileMachine machine = controller.getMachines().get(slot);
IBlockState machineState = machine.getWorld().getBlockState(machine.getPos());
Block machineBlock = machineState.getBlock();
ItemStack machineStack = new ItemStack(machineBlock, 1, machineBlock.getMetaFromState(machineState));
drawItem(x, y, machineStack);
drawString(x + 21, y + 5, t("misc.refinedstorage:energy_usage_minimal", machine.getEnergyUsage()));
}
if (i == 1)
{
x = 33;
y += 30;
}
else
{
x += 60;
}
slot++;
}
if (inBounds(barX, barY, barWidth, barHeight, mouseX, mouseY))
{
drawTooltip(mouseX, mouseY, t("misc.refinedstorage:energy_stored", controller.getEnergyStored(null), controller.getMaxEnergyStored(null)));
drawTooltip(mouseX, mouseY, t("misc.refinedstorage:energy_usage", controller.getEnergyUsage()) + "\n" + t("misc.refinedstorage:energy_stored", controller.getEnergyStored(null), controller.getMaxEnergyStored(null)));
}
}
public int getOffset()
{
return (int) (scrollbar.getCurrentScroll() / 59f * (float) getRows());
}
private int getRows()
{
int max = (int) Math.ceil((float) controller.getMachines().size() / (float) 2);
return max < 0 ? 0 : max;
}
private int getVisibleRows()
{
return 2;
}
}

View File

@@ -12,7 +12,6 @@ import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.Slot;
import org.lwjgl.input.Mouse;
import refinedstorage.RefinedStorage;
import refinedstorage.block.EnumGridType;
import refinedstorage.container.ContainerGrid;
@@ -66,24 +65,6 @@ public class GuiGrid extends GuiBase
public void update(int x, int y)
{
scrollbar.setCanScroll(getRows() > getVisibleRows());
if (scrollbar.canScroll())
{
int wheel = Mouse.getDWheel();
wheel = Math.max(Math.min(-wheel, 1), -1);
float delta = 20;
if (wheel == -1)
{
scrollbar.setCurrentScroll(scrollbar.getCurrentScroll() - delta);
}
else if (wheel == 1)
{
scrollbar.setCurrentScroll(scrollbar.getCurrentScroll() + delta);
}
}
}
public int getOffset()

View File

@@ -73,6 +73,21 @@ public class Scrollbar
}
else
{
int wheel = Mouse.getDWheel();
wheel = Math.max(Math.min(-wheel, 1), -1);
float delta = 15;
if (wheel == -1)
{
setCurrentScroll(currentScroll - delta);
}
else if (wheel == 1)
{
setCurrentScroll(currentScroll + delta);
}
boolean down = Mouse.isButtonDown(0);
if (!wasClicking && down && gui.inBounds(x, y, scrollbarWidth, scrollbarHeight, mouseX, mouseY))

View File

@@ -413,6 +413,21 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
{
items.add(new StorageItem(buf));
}
machines.clear();
size = buf.readInt();
for (int i = 0; i < size; ++i)
{
TileEntity tile = worldObj.getTileEntity(new BlockPos(buf.readInt(), buf.readInt(), buf.readInt()));
if (tile instanceof TileMachine)
{
machines.add((TileMachine) tile);
}
}
}
@Override
@@ -429,5 +444,14 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
{
item.toBytes(buf, items.indexOf(item));
}
buf.writeInt(machines.size());
for (TileMachine machine : machines)
{
buf.writeInt(machine.getPos().getX());
buf.writeInt(machine.getPos().getY());
buf.writeInt(machine.getPos().getZ());
}
}
}

View File

@@ -44,7 +44,7 @@ public class TileDetector extends TileMachine implements ICompareSetting
@Override
public int getEnergyUsage()
{
return 4;
return 3;
}
@Override

View File

@@ -52,7 +52,7 @@ public class TileGrid extends TileMachine
@Override
public int getEnergyUsage()
{
return 5;
return 4;
}
@Override

View File

@@ -25,7 +25,7 @@ public class TileInterface extends TileMachine implements ICompareSetting, ISide
@Override
public int getEnergyUsage()
{
return 5;
return 4;
}
@Override

View File

@@ -45,7 +45,7 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora
@Override
public int getEnergyUsage()
{
return 1;
return 3;
}
@Override

View File

@@ -26,7 +26,7 @@ public class TileWirelessTransmitter extends TileMachine implements IInventory
@Override
public int getEnergyUsage()
{
return 4;
return 3;
}
@Override

View File

@@ -21,6 +21,7 @@ gui.refinedstorage:interface.export.explanation.2=Incr. or decr. a slot: left/ r
misc.refinedstorage:energy_stored=%d / %d RF
misc.refinedstorage:energy_usage=Usage: %d RF/t
misc.refinedstorage:energy_usage_minimal=%d RF/t
misc.refinedstorage:storage.stored=Stored: %d
misc.refinedstorage:storage.stored_capacity=Stored: %d / %d

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB