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); } }