From c8d41fa55ecee28a98ece5d2b5daeb1c47fed70d Mon Sep 17 00:00:00 2001 From: tgame14 Date: Sun, 20 Apr 2014 15:02:16 +0300 Subject: [PATCH] Cleanup of Item railings --- .../electrical/itemrailing/GridRailing.java | 9 ++- .../electrical/itemrailing/NodeRailing.java | 78 +++++++++++++++---- .../electrical/itemrailing/PartRailing.java | 3 +- .../electrical/itemrailing/RenderRailing.java | 17 ++++ .../itemrailing/interfaces/IItemRailing.java | 2 - .../interfaces/IItemRailingProvider.java | 14 ++++ 6 files changed, 101 insertions(+), 22 deletions(-) create mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java create mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingProvider.java diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java index 6f7215a56..d91d343fa 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java @@ -1,6 +1,7 @@ package resonantinduction.electrical.itemrailing; import calclavia.lib.grid.NodeGrid; +import calclavia.lib.grid.TickingGrid; import net.minecraft.item.ItemStack; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; @@ -11,11 +12,13 @@ import java.util.Arrays; * @since 18/03/14 * @author tgame14 */ -public class GridRailing extends NodeGrid +public class GridRailing extends TickingGrid { - public GridRailing (Class type) + public final static String CATEGORY_RAILING = "Item_Railings"; + + public GridRailing (NodeRailing railing, Class type) { - super(type); + super(railing, type); } public IItemRailing findTargetForIItemTransfer(IItemRailingTransfer itemwrapper) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index 4e16bfbe4..22891aa18 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -1,42 +1,94 @@ package resonantinduction.electrical.itemrailing; +import calclavia.lib.config.Config; import calclavia.lib.grid.Node; import calclavia.lib.render.EnumColor; +import calclavia.lib.type.Pair; import com.google.common.collect.Lists; import net.minecraft.inventory.IInventory; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; +import resonantinduction.electrical.itemrailing.interfaces.IItemRailingProvider; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; import universalelectricity.api.vector.IVectorWorld; import universalelectricity.api.vector.VectorWorld; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * @author tgame14 * @since 18/03/14 */ -public class NodeRailing extends Node implements IVectorWorld, IItemRailing +public class NodeRailing extends Node implements IVectorWorld, IItemRailing { + private int maxItemSpeed; + private byte connectionMap; private EnumColor color; - private Set itemNodeSet; + + @Config(category = GridRailing.CATEGORY_RAILING) + private static int MAX_TICKS_IN_RAILING = 5; + + /** hold a timer here per item */ + private Set> itemNodeSet; + public NodeRailing(PartRailing parent) { super(parent); - this.itemNodeSet = new HashSet(); + this.itemNodeSet = new HashSet>(); this.color = null; + this.connectionMap = Byte.parseByte("111111", 2); + this.maxItemSpeed = 20; + } + + public NodeRailing setConnection(byte connectionMap) + { + this.connectionMap = connectionMap; + return this; + } + + @Override + public void update(float deltaTime) + { + if (!world().isRemote) + { + Iterator> iterator = new HashMap(getConnections()).entrySet().iterator(); + + for (Pair pair : this.itemNodeSet) + { + if (pair.right() <= 0) + { + //TODO move to next item railing + + } + else + { + pair.setRight(pair.right() - 1); + } + + + } + + while (iterator.hasNext()) + { + Map.Entry entry = iterator.next(); + Object obj = entry.getKey(); + + if (obj instanceof NodeRailing) + { + + } + } + + } } @Override protected GridRailing newGrid() { - return new GridRailing(getClass()); + return new GridRailing(this, getClass()); } @Override @@ -91,13 +143,7 @@ public class NodeRailing extends Node im @Override public VectorWorld getWorldPos() { - return parent.getWorldPos(); - } - - @Override - public Map getConnectionMap() - { - return this.getConnections(); + return (VectorWorld) parent.getWorldPos(); } @Override @@ -117,7 +163,7 @@ public class NodeRailing extends Node im @Override public boolean isLeaf() { - return parent.getConnections().length < 2; + return connectionMap < 2; } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index defe87c35..b9dd68493 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -10,6 +10,7 @@ import net.minecraftforge.common.ForgeDirection; import resonantinduction.core.prefab.part.PartFramedConnection; import resonantinduction.electrical.Electrical; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; +import resonantinduction.electrical.itemrailing.interfaces.IItemRailingProvider; import universalelectricity.api.energy.EnergyNetworkLoader; import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IEnergyNetwork; @@ -21,7 +22,7 @@ import java.lang.reflect.Constructor; * @since 16/03/14 * @author tgame14 */ -public class PartRailing extends PartFramedConnection implements IConductor, INodeProvider +public class PartRailing extends PartFramedConnection implements IConductor, IItemRailingProvider { public static enum EnumRailing diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java new file mode 100644 index 000000000..1b14b4afe --- /dev/null +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java @@ -0,0 +1,17 @@ +package resonantinduction.electrical.itemrailing; + +import calclavia.lib.render.item.ISimpleItemRenderer; +import net.minecraft.item.ItemStack; + +/** + * @author tgame14 + * @since 20/04/14 + */ +public class RenderRailing implements ISimpleItemRenderer +{ + @Override + public void renderInventoryItem(ItemStack itemStack) + { + + } +} diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java index 935888065..a5ef23d7d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java @@ -26,8 +26,6 @@ public interface IItemRailing extends INode public VectorWorld getWorldPos(); - public Map getConnectionMap(); - public IInventory[] getInventoriesNearby(); public boolean isLeaf(); diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingProvider.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingProvider.java new file mode 100644 index 000000000..dbd5c50f6 --- /dev/null +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingProvider.java @@ -0,0 +1,14 @@ +package resonantinduction.electrical.itemrailing.interfaces; + +import calclavia.lib.grid.INodeProvider; +import universalelectricity.api.vector.IVectorWorld; +import universalelectricity.api.vector.VectorWorld; + +/** + * @author tgame14 + * @since 20/04/14 + */ +public interface IItemRailingProvider extends INodeProvider +{ + public IVectorWorld getWorldPos(); +}