package com.opentrafficsimulation.connector;
import it.polito.appeal.traci.SumoTraciConnection;
import it.polito.appeal.traci.Vehicle;
import java.util.Iterator;
import java.util.Set;
import org.apache.log4j.BasicConfigurator;
import com.opentrafficsimulation.editor.light.LightEditor;
import com.opentrafficsimulation.editor.light.ReadTrafficLightState;
import com.opentrafficsimulation.editor.light.TrafficLighStateWindow;
import com.opentrafficsimulation.screen.simulation.SimulationScreen;
public class TraciConnector {
public SumoTraciConnection conn;
// Required for LightEditor
public static ReadTrafficLightState RTL;
public static String TLID = null;
public static String CHGID = null;
public static String CHGSTATE = null;
public static String GOTO_JUNCTION = null;
public void runSimulation(String conf) {
System.out.println("Running a new simulation using config file " + conf);
BasicConfigurator.configure();
conn = new SumoTraciConnection(
conf, // config file
12345, // random seed
false // look for geolocalization info in the map
);
try {
conn.runServer();
RTL = new ReadTrafficLightState(conn.socket);
LightEditor.getInstance().isSimulationRunnig = true;
LightEditor.getInstance().PORT_NUMBER = SimulationScreen.getInstance().portNumber;
//System.out.println("Map bounds are: " + conn.queryBounds());
for (int i = 0; i < SimulationScreen.SIMULATION_TIME; i++) {
int time = conn.getCurrentSimStep();
if (CHGID != null) {
RTL.chageTLState(CHGID, CHGSTATE);
CHGID = null;
}
if (TLID != null) {
//new TrafficLighStateWindow(TLID);
SimulationScreen.getInstance().edt.openEditor(TLID);
TLID = null;
}
if (GOTO_JUNCTION != null) {
RTL.goToJunction(GOTO_JUNCTION);
GOTO_JUNCTION = null;
}
conn.nextSimStep();
}
conn.close();
} catch (Exception e) {
LightEditor.getInstance().isSimulationRunnig = false;
e.printStackTrace();
}
}
}