From 0427ab89f1753a44b30cbc35ce021cbbdc845109 Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Thu, 10 Aug 2017 18:52:45 +0300 Subject: fix missing source folder --- src/main/java/ihl/flexible_cable/IHLENet.java | 168 ++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 src/main/java/ihl/flexible_cable/IHLENet.java (limited to 'src/main/java/ihl/flexible_cable/IHLENet.java') diff --git a/src/main/java/ihl/flexible_cable/IHLENet.java b/src/main/java/ihl/flexible_cable/IHLENet.java new file mode 100644 index 0000000..de08204 --- /dev/null +++ b/src/main/java/ihl/flexible_cable/IHLENet.java @@ -0,0 +1,168 @@ +package ihl.flexible_cable; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +import ihl.IHLMod; +import ihl.interfaces.IEnergyNetNode; + +public class IHLENet { + + public Map grids = new HashMap(); + public Map cablesToGrids = new HashMap(); + + private int griduid=0; + + public IHLENet() + { + } + + public int getNewUniqueGridID() + { + for(int i=0;i tei = grids.get(gridID2).telist.iterator(); + while(tei.hasNext()) + { + IEnergyNetNode te = tei.next(); + te.setGrid(gridID); + } + grids.remove(gridID2); + return gridID; + } + return gridID2; + } + + + public IHLGrid getGrid(int gridID) + { + if(gridID==-1) + throw new IllegalArgumentException("Node should never ask grid with ID -1"); + if(this.grids.get(gridID)==null) + { + IHLGrid cgrid; + cgrid=new IHLGrid(); + grids.put(gridID, cgrid); + return cgrid; + } + else + { + return this.grids.get(gridID); + } + } + + public void splitGrids(int gridID, IEnergyNetNode exclude) + { + Set telist = this.grids.get(gridID).telist; + Set telist2 = new HashSet(); + telist.remove(exclude); + Iterator atei = telist.iterator(); + while(atei.hasNext()) + { + IEnergyNetNode cte = atei.next(); + atei.remove(); + telist2.add(cte); + cte.getCableList().removeAll(exclude.getCableList()); + cte.setGrid(-1); + } + Iterator atei2 = telist2.iterator(); + while(atei2.hasNext()) + { + IEnergyNetNode cte = atei2.next(); + if(cte.getGridID()==-1)//Warning! Potential future bugs are hidden here! + { + Iterator atei3 = telist2.iterator(); + while(atei3.hasNext()) + { + IEnergyNetNode cte2 = atei3.next(); + if(cte2!=cte && hasSame(cte.getCableList(),cte2.getCableList())) + { + int result=this.mergeGrids(cte.getGridID(), cte2.getGridID()); + cte.setGrid(result); + cte2.setGrid(result); + break; + } + } + } + } + } + + public void removeCableAndSplitGrids(int gridID, IHLCable cable) + { + this.grids.get(gridID).removeCableAndSplitGrids(cable); + } + + public boolean hasSame(Set set, Set set2) + { + Iterator i1 = set.iterator(); + while(i1.hasNext()) + { + IHLCable num1=i1.next(); + if(set2.contains(num1)) + { + return true; + } + } + return false; + } + + public void setOnFire(IHLCable cable) + { + Set cs = IHLMod.proxy.nodeEntityRegistry.get(cable.chainUID); + if(cs!=null) + { + for(NodeEntity ne:cs) + { + ne.setFire(10); + } + } + } + + public void removeCableEntities(IHLCable cable) + { + int uid = cable.chainUID; + Set cs = IHLMod.proxy.nodeEntityRegistry.get(uid); + if(cs!=null) + { + for(NodeEntity ne:cs) + { + if(ne!=null) + { + ne.setDead(); + } + } + } + cablesToGrids.remove(uid); + } +} \ No newline at end of file -- cgit v1.2.3