Browse Source

Supply Detection

dominik.rieder 7 years ago
parent
commit
2730a3133a
2 changed files with 29 additions and 0 deletions
  1. 4 0
      src/classes/CpsEdge.java
  2. 25 0
      src/ui/controller/SimulationManager.java

+ 4 - 0
src/classes/CpsEdge.java

@@ -81,5 +81,9 @@ public class CpsEdge {
 	public void setB(CpsObject b) {
 		B = b;
 	}
+	
+	public boolean getState(){
+		return isWorking;
+	}
 
 }

+ 25 - 0
src/ui/controller/SimulationManager.java

@@ -20,6 +20,10 @@ public class SimulationManager {
 	}
 	
 	
+	/**
+	 * calculates the flow of the edges and the supply for objects
+	 * @param x
+	 */
 	public void calculateStateForTimeStep(int x){
 		searchForSubNets();
 		for(subNet singleSubNet: subNets){
@@ -28,7 +32,28 @@ public class SimulationManager {
 			for(CpsEdge e: singleSubNet.getEdges()){
 				e.setFlow(production);
 			}
+			for(HolonObject hl: singleSubNet.getObjects()){
+				boolean end = false;
+				int i = 0;
+				while(!end){
+					CpsEdge edge = hl.getConnectedTo().get(i);
+					if(edge.getState()){
+						if(hl.getCurrentEnergyAtTimeStep(x) + edge.getFlow() >= 0 ){
+							hl.setSupplied(true);
+						}else{
+							hl.setSupplied(false);
+						}
+						end = true;
+					}else{
+						i++;
+						if(i == singleSubNet.getObjects().size()){
+							end = true;
+						}
+					}
+				}
+			}
 		}
+		
 	}
 	
 	/**