This commit is contained in:
Aidan C. Brady 2015-04-06 10:12:59 -04:00
parent 6c5f0e1a6e
commit a61974a681
2 changed files with 440 additions and 329 deletions

View file

@ -46,12 +46,14 @@ public class GuiDigitalMinerConfig extends GuiMekanism
// Scrollbar dimensions
private final int scrollX = 154;
private final int scrollY = 18;
private final int scrollW = 12;
private final int scrollH = 138;
// Filter dimensions
private final int filterX = 56;
private final int filterY = 18;
private final int filterW = 96;
private final int filterH = 29;
@ -86,6 +88,7 @@ public class GuiDigitalMinerConfig extends GuiMekanism
final int scrollSize = tileEntity.filters.size() - 4;
return (int)((scrollSize + 0.5) * scroll);
}
return 0;
}
@ -227,7 +230,9 @@ public class GuiDigitalMinerConfig extends GuiMekanism
// Check for sorting button
final int arrowX = filterX + filterW - 12;
if(getFilterIndex() + i > 0)
{
if(xAxis >= arrowX && xAxis <= arrowX + 10 && yAxis >= yStart + 14 && yAxis <= yStart + 20)
{
// Process up button click
@ -237,9 +242,13 @@ public class GuiDigitalMinerConfig extends GuiMekanism
Mekanism.packetHandler.sendToServer(new TileEntityMessage(Coord4D.get(tileEntity), data));
SoundHandler.playSound("gui.button.press");
return;
}
}
if(getFilterIndex() + i < tileEntity.filters.size() - 1)
{
if(xAxis >= arrowX && xAxis <= arrowX + 10 && yAxis >= yStart + 21 && yAxis <= yStart + 27)
{
// Process down button click
@ -249,8 +258,10 @@ public class GuiDigitalMinerConfig extends GuiMekanism
Mekanism.packetHandler.sendToServer(new TileEntityMessage(Coord4D.get(tileEntity), data));
SoundHandler.playSound("gui.button.press");
return;
}
}
if(xAxis >= 56 && xAxis <= 152 && yAxis >= yStart && yAxis <= yStart+29)
{
@ -348,6 +359,7 @@ public class GuiDigitalMinerConfig extends GuiMekanism
public void handleMouseInput()
{
super.handleMouseInput();
int i = Mouse.getEventDWheel();
if(i != 0 && needsScrollBars())
@ -355,20 +367,28 @@ public class GuiDigitalMinerConfig extends GuiMekanism
final int j = tileEntity.filters.size() - 4;
if(i > 0)
{
i = 1;
}
if(i < 0)
{
i = -1;
}
scroll = (float)(scroll - (double) i / (double) j);
if(scroll < 0.0F)
{
scroll = 0.0F;
}
if(scroll > 1.0F)
{
scroll = 1.0F;
}
}
}
@Override
public void initGui()

View file

@ -54,18 +54,21 @@ public class GuiLogisticalSorter extends GuiMekanism
/** Amount scrolled in filter list (0 = top, 1 = bottom) */
public float scroll;
/** True if the scrollbar is being dragged */
public boolean isDragging = false;
// Scrollbar dimensions
private final int scrollX = 154;
private final int scrollY = 18;
private final int scrollW = 12;
private final int scrollH = 138;
// Filter dimensions
private final int filterX = 56;
private final int filterY = 18;
private final int filterW = 96;
private final int filterH = 29;
@ -74,6 +77,7 @@ public class GuiLogisticalSorter extends GuiMekanism
public int stackSwitch = 0;
public Map<TOreDictFilter, StackData> oreDictStacks = new HashMap<TOreDictFilter, StackData>();
public Map<TModIDFilter, StackData> modIDStacks = new HashMap<TModIDFilter, StackData>();
public GuiLogisticalSorter(EntityPlayer player, TileEntityLogisticalSorter entity)
@ -103,6 +107,7 @@ public class GuiLogisticalSorter extends GuiMekanism
final int scrollSize = tileEntity.filters.size() - 4;
return (int)((scrollSize + 0.5) * scroll);
}
return 0;
}
@ -113,69 +118,100 @@ public class GuiLogisticalSorter extends GuiMekanism
// Decrease timer for stack display rotation
if(stackSwitch > 0)
{
stackSwitch--;
}
// Update displayed stacks
if(stackSwitch == 0)
{
for(final Map.Entry<TOreDictFilter, StackData> entry : oreDictStacks.entrySet())
{
if(entry.getValue().iterStacks != null && entry.getValue().iterStacks.size() > 0)
{
if(entry.getValue().stackIndex == -1 || entry.getValue().stackIndex == entry.getValue().iterStacks.size() - 1)
{
entry.getValue().stackIndex = 0;
else
if( entry.getValue().stackIndex < entry.getValue().iterStacks.size() - 1 )
}
else if(entry.getValue().stackIndex < entry.getValue().iterStacks.size() - 1)
{
entry.getValue().stackIndex++;
}
entry.getValue().renderStack = entry.getValue().iterStacks.get(entry.getValue().stackIndex);
}
}
for(final Map.Entry<TModIDFilter, StackData> entry : modIDStacks.entrySet())
{
if(entry.getValue().iterStacks != null && entry.getValue().iterStacks.size() > 0)
{
if(entry.getValue().stackIndex == -1 || entry.getValue().stackIndex == entry.getValue().iterStacks.size() - 1)
{
entry.getValue().stackIndex = 0;
else
if( entry.getValue().stackIndex < entry.getValue().iterStacks.size() - 1 )
}
else if(entry.getValue().stackIndex < entry.getValue().iterStacks.size() - 1)
{
entry.getValue().stackIndex++;
}
entry.getValue().renderStack = entry.getValue().iterStacks.get(entry.getValue().stackIndex);
}
}
stackSwitch = 20;
}
else
{
else {
for(final Map.Entry<TOreDictFilter, StackData> entry : oreDictStacks.entrySet())
{
if(entry.getValue().iterStacks != null && entry.getValue().iterStacks.size() == 0)
{
entry.getValue().renderStack = null;
}
}
for(final Map.Entry<TModIDFilter, StackData> entry : modIDStacks.entrySet())
{
if(entry.getValue().iterStacks != null && entry.getValue().iterStacks.size() == 0)
{
entry.getValue().renderStack = null;
}
}
}
final Set<TOreDictFilter> oreDictFilters = new HashSet<TOreDictFilter>();
final Set<TModIDFilter> modIDFilters = new HashSet<TModIDFilter>();
for(int i = 0; i < 4; i++)
{
if(tileEntity.filters.get(getFilterIndex() + i) instanceof TOreDictFilter)
{
oreDictFilters.add((TOreDictFilter) tileEntity.filters.get(getFilterIndex() + i));
else
if( tileEntity.filters.get( getFilterIndex() + i ) instanceof TModIDFilter )
}
else if(tileEntity.filters.get(getFilterIndex() + i) instanceof TModIDFilter)
{
modIDFilters.add((TModIDFilter) tileEntity.filters.get(getFilterIndex() + i));
}
}
for(final TransporterFilter filter : tileEntity.filters)
{
if(filter instanceof TOreDictFilter && !oreDictFilters.contains(filter))
{
if(oreDictStacks.containsKey(filter))
{
oreDictStacks.remove(filter);
}
else
if( filter instanceof TModIDFilter && !modIDFilters.contains( filter ) )
}
else if(filter instanceof TModIDFilter && !modIDFilters.contains(filter))
{
if(modIDStacks.containsKey(filter))
{
modIDStacks.remove(filter);
}
}
}
}
@Override
public void mouseClicked(int mouseX, int mouseY, int mouseBtn)
@ -190,16 +226,20 @@ public class GuiLogisticalSorter extends GuiMekanism
{
// Check for scrollbar interaction
if(xAxis >= 154 && xAxis <= 166 && yAxis >= getScroll() + 18 && yAxis <= getScroll() + 18 + 15)
{
if(needsScrollBars())
{
dragOffset = yAxis - (getScroll() + 18);
isDragging = true;
}
else
else {
scroll = 0;
}
}
// Check for filter interaction
for(int i = 0; i < 4; i++)
{
if(tileEntity.filters.get(getFilterIndex() + i) != null)
{
final int yStart = i * 29 + 18;
@ -208,7 +248,9 @@ public class GuiLogisticalSorter extends GuiMekanism
{
// Check for sorting button
final int arrowX = filterX + filterW - 12;
if(getFilterIndex() + i > 0)
{
if(xAxis >= arrowX && xAxis <= arrowX + 10 && yAxis >= yStart + 14 && yAxis <= yStart + 20)
{
// Process up button click
@ -218,9 +260,13 @@ public class GuiLogisticalSorter extends GuiMekanism
Mekanism.packetHandler.sendToServer(new TileEntityMessage(Coord4D.get(tileEntity), data));
SoundHandler.playSound("gui.button.press");
return;
}
}
if(getFilterIndex() + i < tileEntity.filters.size() - 1)
{
if(xAxis >= arrowX && xAxis <= arrowX + 10 && yAxis >= yStart + 21 && yAxis <= yStart + 27)
{
// Process down button click
@ -230,37 +276,33 @@ public class GuiLogisticalSorter extends GuiMekanism
Mekanism.packetHandler.sendToServer(new TileEntityMessage(Coord4D.get(tileEntity), data));
SoundHandler.playSound("gui.button.press");
return;
}
}
final TransporterFilter filter = tileEntity.filters.get(getFilterIndex() + i);
if(filter instanceof TItemStackFilter)
{
SoundHandler.playSound("gui.button.press");
Mekanism.packetHandler.sendToServer( new LogisticalSorterGuiMessage( SorterGuiPacket.SERVER_INDEX, Coord4D
.get( tileEntity ), 1, getFilterIndex() + i, 0 ) );
Mekanism.packetHandler.sendToServer(new LogisticalSorterGuiMessage(SorterGuiPacket.SERVER_INDEX, Coord4D.get(tileEntity), 1, getFilterIndex() + i, 0));
}
else
if( filter instanceof TOreDictFilter )
else if(filter instanceof TOreDictFilter)
{
SoundHandler.playSound("gui.button.press");
Mekanism.packetHandler.sendToServer( new LogisticalSorterGuiMessage( SorterGuiPacket.SERVER_INDEX, Coord4D
.get( tileEntity ), 2, getFilterIndex() + i, 0 ) );
Mekanism.packetHandler.sendToServer(new LogisticalSorterGuiMessage(SorterGuiPacket.SERVER_INDEX, Coord4D.get(tileEntity), 2, getFilterIndex() + i, 0));
}
else
if( filter instanceof TMaterialFilter )
else if(filter instanceof TMaterialFilter)
{
SoundHandler.playSound("gui.button.press");
Mekanism.packetHandler.sendToServer( new LogisticalSorterGuiMessage( SorterGuiPacket.SERVER_INDEX, Coord4D
.get( tileEntity ), 3, getFilterIndex() + i, 0 ) );
Mekanism.packetHandler.sendToServer(new LogisticalSorterGuiMessage(SorterGuiPacket.SERVER_INDEX, Coord4D.get(tileEntity), 3, getFilterIndex() + i, 0));
}
else
if( filter instanceof TModIDFilter )
else if(filter instanceof TModIDFilter)
{
SoundHandler.playSound("gui.button.press");
Mekanism.packetHandler.sendToServer( new LogisticalSorterGuiMessage( SorterGuiPacket.SERVER_INDEX, Coord4D
.get( tileEntity ), 5, getFilterIndex() + i, 0 ) );
Mekanism.packetHandler.sendToServer(new LogisticalSorterGuiMessage(SorterGuiPacket.SERVER_INDEX, Coord4D.get(tileEntity), 5, getFilterIndex() + i, 0));
}
}
}
}
@ -287,7 +329,9 @@ public class GuiLogisticalSorter extends GuiMekanism
}
if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) && mouseBtn == 0)
{
mouseBtn = 2;
}
// Check for default colour button
if(xAxis >= 13 && xAxis <= 29 && yAxis >= 137 && yAxis <= 153)
@ -311,8 +355,10 @@ public class GuiLogisticalSorter extends GuiMekanism
final int yAxis = mouseY - guiTop;
if(isDragging)
{
scroll = Math.min(Math.max((yAxis - 18 - dragOffset) / 123F, 0), 1);
}
}
@Override
protected void mouseMovedOrUp(int mouseX, int mouseY, int type)
@ -333,6 +379,7 @@ public class GuiLogisticalSorter extends GuiMekanism
public void handleMouseInput()
{
super.handleMouseInput();
int i = Mouse.getEventDWheel();
if(i != 0 && needsScrollBars())
@ -340,20 +387,28 @@ public class GuiLogisticalSorter extends GuiMekanism
final int j = tileEntity.filters.size() - 4;
if(i > 0)
{
i = 1;
}
if(i < 0)
{
i = -1;
}
scroll = (float)(scroll - (double) i / (double) j);
if(scroll < 0.0F)
{
scroll = 0.0F;
}
if(scroll > 1.0F)
{
scroll = 1.0F;
}
}
}
@Override
public void initGui()
@ -371,8 +426,10 @@ public class GuiLogisticalSorter extends GuiMekanism
super.actionPerformed(guibutton);
if(guibutton.id == BUTTON_NEW)
{
Mekanism.packetHandler.sendToServer(new LogisticalSorterGuiMessage(SorterGuiPacket.SERVER, Coord4D.get(tileEntity), 4, 0, 0));
}
}
@Override
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
@ -397,6 +454,7 @@ public class GuiLogisticalSorter extends GuiMekanism
// Draw filters
for(int i = 0; i < 4; i++)
{
if(tileEntity.filters.get(getFilterIndex() + i) != null)
{
final TransporterFilter filter = tileEntity.filters.get(getFilterIndex() + i);
@ -416,36 +474,32 @@ public class GuiLogisticalSorter extends GuiMekanism
}
fontRendererObj.drawString(MekanismUtils.localize("gui.itemFilter"), 78, yStart + 2, 0x404040);
fontRendererObj.drawString( filter.color != null ? filter.color.getName() : MekanismUtils.localize( "gui.none" ), 78,
yStart + 11, 0x404040 );
fontRendererObj.drawString(filter.color != null ? filter.color.getName() : MekanismUtils.localize("gui.none"), 78, yStart + 11, 0x404040);
}
else
if( filter instanceof TOreDictFilter )
else if(filter instanceof TOreDictFilter)
{
final TOreDictFilter oreFilter = (TOreDictFilter) filter;
if(!oreDictStacks.containsKey(oreFilter))
{
updateStackList(oreFilter);
}
if(oreDictStacks.get(filter).renderStack != null)
try
{
try {
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_LIGHTING);
itemRender.renderItemAndEffectIntoGUI( fontRendererObj, mc.getTextureManager(),
oreDictStacks.get( filter ).renderStack, 59, yStart + 3 );
itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), oreDictStacks.get(filter).renderStack, 59, yStart + 3);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
} catch(final Exception e) {}
}
catch( final Exception e )
{}
fontRendererObj.drawString(MekanismUtils.localize("gui.oredictFilter"), 78, yStart + 2, 0x404040);
fontRendererObj.drawString( filter.color != null ? filter.color.getName() : MekanismUtils.localize( "gui.none" ), 78,
yStart + 11, 0x404040 );
fontRendererObj.drawString(filter.color != null ? filter.color.getName() : MekanismUtils.localize("gui.none"), 78, yStart + 11, 0x404040);
}
else
if( filter instanceof TMaterialFilter )
else if(filter instanceof TMaterialFilter)
{
final TMaterialFilter itemFilter = (TMaterialFilter) filter;
@ -453,51 +507,58 @@ public class GuiLogisticalSorter extends GuiMekanism
{
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_LIGHTING);
itemRender.renderItemAndEffectIntoGUI( fontRendererObj, mc.getTextureManager(), itemFilter.materialItem, 59,
yStart + 3 );
itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), itemFilter.materialItem, 59, yStart + 3);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
}
fontRendererObj.drawString(MekanismUtils.localize("gui.materialFilter"), 78, yStart + 2, 0x404040);
fontRendererObj.drawString( filter.color != null ? filter.color.getName() : MekanismUtils.localize( "gui.none" ), 78,
yStart + 11, 0x404040 );
fontRendererObj.drawString(filter.color != null ? filter.color.getName() : MekanismUtils.localize("gui.none"), 78, yStart + 11, 0x404040);
}
else
if( filter instanceof TModIDFilter )
else if(filter instanceof TModIDFilter)
{
final TModIDFilter modFilter = (TModIDFilter) filter;
if(!modIDStacks.containsKey(modFilter))
{
updateStackList(modFilter);
}
if(modIDStacks.get(filter).renderStack != null)
try
{
try {
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_LIGHTING);
itemRender.renderItemAndEffectIntoGUI( fontRendererObj, mc.getTextureManager(),
modIDStacks.get( filter ).renderStack, 59, yStart + 3 );
itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), modIDStacks.get(filter).renderStack, 59, yStart + 3);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
} catch(final Exception e) {}
}
catch( final Exception e )
{}
fontRendererObj.drawString(MekanismUtils.localize("gui.modIDFilter"), 78, yStart + 2, 0x404040);
fontRendererObj.drawString( filter.color != null ? filter.color.getName() : MekanismUtils.localize( "gui.none" ), 78,
yStart + 11, 0x404040 );
fontRendererObj.drawString(filter.color != null ? filter.color.getName() : MekanismUtils.localize("gui.none"), 78, yStart + 11, 0x404040);
}
// Draw hovertext for sorting buttons
final int arrowX = filterX + filterW - 12;
if(getFilterIndex() + i > 0)
{
if(xAxis >= arrowX && xAxis <= arrowX + 10 && yAxis >= yStart + 14 && yAxis <= yStart + 20)
{
drawCreativeTabHoveringText(MekanismUtils.localize("gui.moveUp"), xAxis, yAxis);
}
}
if(getFilterIndex() + i < tileEntity.filters.size() - 1)
{
if(xAxis >= arrowX && xAxis <= arrowX + 10 && yAxis >= yStart + 21 && yAxis <= yStart + 27)
{
drawCreativeTabHoveringText(MekanismUtils.localize("gui.moveDown"), xAxis, yAxis);
}
}
}
}
if(tileEntity.color != null)
{
@ -515,16 +576,25 @@ public class GuiLogisticalSorter extends GuiMekanism
// Draw tooltips for buttons
if(xAxis >= 13 && xAxis <= 29 && yAxis >= 137 && yAxis <= 153)
{
if(tileEntity.color != null)
{
drawCreativeTabHoveringText(tileEntity.color.getName(), xAxis, yAxis);
else
}
else {
drawCreativeTabHoveringText(MekanismUtils.localize("gui.none"), xAxis, yAxis);
}
}
if(xAxis >= 12 && xAxis <= 26 && yAxis >= 110 && yAxis <= 124)
{
drawCreativeTabHoveringText(MekanismUtils.localize("gui.autoEject"), xAxis, yAxis);
}
if(xAxis >= 12 && xAxis <= 26 && yAxis >= 84 && yAxis <= 98)
{
drawCreativeTabHoveringText(MekanismUtils.localize("gui.logisticalSorter.roundRobin"), xAxis, yAxis);
}
super.drawGuiContainerForegroundLayer(mouseX, mouseY);
}
@ -548,6 +618,7 @@ public class GuiLogisticalSorter extends GuiMekanism
// Draw filter backgrounds
for(int i = 0; i < 4; i++)
{
if(tileEntity.filters.get(getFilterIndex() + i) != null)
{
final TransporterFilter filter = tileEntity.filters.get(getFilterIndex() + i);
@ -558,50 +629,66 @@ public class GuiLogisticalSorter extends GuiMekanism
// Change colour based on filter type
if(filter instanceof TItemStackFilter)
{
MekanismRenderer.color(EnumColor.INDIGO, 1.0F, 2.5F);
else
if( filter instanceof TOreDictFilter )
}
else if(filter instanceof TOreDictFilter)
{
MekanismRenderer.color(EnumColor.BRIGHT_GREEN, 1.0F, 2.5F);
else
if( filter instanceof TMaterialFilter )
}
else if(filter instanceof TMaterialFilter)
{
MekanismRenderer.color(EnumColor.PURPLE, 1.0F, 4F);
else
if( filter instanceof TModIDFilter )
}
else if(filter instanceof TModIDFilter)
{
MekanismRenderer.color(EnumColor.PINK, 1.0F, 2.5F);
}
drawTexturedModalRect(guiLeft + filterX, guiTop + yStart, mouseOver ? 0 : filterW, 166, filterW, filterH);
MekanismRenderer.resetColor();
// Draw sort buttons
final int arrowX = filterX + filterW - 12;
if(getFilterIndex() + i > 0)
{
mouseOver = xAxis >= arrowX && xAxis <= arrowX + 10 && yAxis >= yStart + 14 && yAxis <= yStart + 20;
drawTexturedModalRect(guiLeft + arrowX, guiTop + yStart + 14, 190, mouseOver ? 143 : 115, 11, 7);
}
if(getFilterIndex() + i < tileEntity.filters.size() - 1)
{
mouseOver = xAxis >= arrowX && xAxis <= arrowX + 10 && yAxis >= yStart + 21 && yAxis <= yStart + 27;
drawTexturedModalRect(guiLeft + arrowX, guiTop + yStart + 21, 190, mouseOver ? 157 : 129, 11, 7);
}
}
}
// Draw gui buttons
if(xAxis >= 12 && xAxis <= 26 && yAxis >= 110 && yAxis <= 124)
{
drawTexturedModalRect(guiLeft + 12, guiTop + 110, 176, 0, 14, 14);
else
}
else {
drawTexturedModalRect(guiLeft + 12, guiTop + 110, 176, 14, 14, 14);
}
if(xAxis >= 12 && xAxis <= 26 && yAxis >= 84 && yAxis <= 98)
{
drawTexturedModalRect(guiLeft + 12, guiTop + 84, 176 + 14, 0, 14, 14);
else
}
else {
drawTexturedModalRect(guiLeft + 12, guiTop + 84, 176 + 14, 14, 14, 14);
}
}
private void updateStackList(TOreDictFilter filter)
{
if(!oreDictStacks.containsKey(filter))
{
oreDictStacks.put(filter, new StackData());
}
oreDictStacks.get(filter).iterStacks = OreDictCache.getOreDictStacks(filter.oreDictName, false);
@ -613,7 +700,9 @@ public class GuiLogisticalSorter extends GuiMekanism
private void updateStackList(TModIDFilter filter)
{
if(!modIDStacks.containsKey(filter))
{
modIDStacks.put(filter, new StackData());
}
modIDStacks.get(filter).iterStacks = OreDictCache.getModIDStacks(filter.modID, false);
@ -625,7 +714,9 @@ public class GuiLogisticalSorter extends GuiMekanism
public static class StackData
{
public List<ItemStack> iterStacks;
public int stackIndex;
public ItemStack renderStack;
}