Implemented Priority System for the item routing system. Lower numbers are looked at first.

This commit is contained in:
WayofTime 2016-02-22 21:19:22 -05:00
parent 2c49c49441
commit 7104138e2b
10 changed files with 97 additions and 10 deletions

View file

@ -1,5 +1,6 @@
package WayofTime.bloodmagic.tile.routing;
import WayofTime.bloodmagic.api.Constants;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -8,6 +9,7 @@ import net.minecraft.util.EnumFacing;
public class TileFilteredRoutingNode extends TileRoutingNode implements ISidedInventory
{
public int currentActiveSlot = 0;
public int[] priorities = new int[6];
public TileFilteredRoutingNode(int size, String name)
{
@ -37,6 +39,11 @@ public class TileFilteredRoutingNode extends TileRoutingNode implements ISidedIn
{
super.readFromNBT(tag);
currentActiveSlot = tag.getInteger("currentSlot");
priorities = tag.getIntArray(Constants.NBT.ROUTING_PRIORITY);
if (priorities.length != 6)
{
priorities = new int[6];
}
}
@Override
@ -44,6 +51,7 @@ public class TileFilteredRoutingNode extends TileRoutingNode implements ISidedIn
{
super.writeToNBT(tag);
tag.setInteger("currentSlot", currentActiveSlot);
tag.setIntArray(Constants.NBT.ROUTING_PRIORITY, priorities);
}
public void swapFilters(int requestedSlot)
@ -72,4 +80,20 @@ public class TileFilteredRoutingNode extends TileRoutingNode implements ISidedIn
{
return false;
}
@Override
public int getPriority(EnumFacing side)
{
return priorities[side.getIndex()];
}
public void incrementCurrentPriotiryToMaximum(int max)
{
priorities[currentActiveSlot] = Math.min(priorities[currentActiveSlot] + 1, max);
}
public void decrementCurrentPriority()
{
priorities[currentActiveSlot] = Math.max(priorities[currentActiveSlot] - 1, 0);
}
}

View file

@ -114,6 +114,8 @@ public class TileMasterRoutingNode extends TileInventory implements IMasterRouti
}
}
int maxTransfer = 8;
for (Entry<Integer, List<IItemFilter>> outputEntry : outputMap.entrySet())
{
List<IItemFilter> outputList = outputEntry.getValue();
@ -124,7 +126,11 @@ public class TileMasterRoutingNode extends TileInventory implements IMasterRouti
List<IItemFilter> inputList = inputEntry.getValue();
for (IItemFilter inputFilter : inputList)
{
inputFilter.transferThroughInputFilter(outputFilter, 8);
maxTransfer -= inputFilter.transferThroughInputFilter(outputFilter, maxTransfer);
if (maxTransfer <= 0)
{
return;
}
}
}
}