/************************************************************************************ * Copyright (C) 2008 by Politehnica University of Bucharest and Rutgers University * All rights reserved. * Refer to LICENSE for terms and conditions of use. ***********************************************************************************/ package vnsim.vehicular.routePlan; import java.io.File; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.Random; import java.util.logging.Logger; import vnsim.core.Engine; import vnsim.gui.Display; import vnsim.gui.MapLoader; import vnsim.map.object.Globals; import vnsim.map.object.Map; import vnsim.map.object.Point; import vnsim.map.utils.GPSutil; import vnsim.vehicular.generator.*; import vnsim.vehicular.routePlan.selfRouted.RoadAreaUtils; import vnsim.vehicular.scenarios.EntryExitScenario; import vnsim.vehicular.scenarios.EntryScenario; import vnsim.vehicular.scenarios.Route; import vnsim.vehicular.scenarios.Scenario; import vnsim.vehicular.scenarios.ScenarioMap; import vnsim.vehicular.simulator.Location; import vnsim.vehicular.simulator.RouteSegment; public class MakeScenarios { /** Logger used by this class */ private static final transient Logger logger = Logger.getLogger("vnsim.vehicular.routePlan.MakeScenarios"); public static RouteComputingUtils rc = new RouteComputingUtils(); public static void setBestRoute(Scenario s,ArrayList entries,ArrayList exits) { int i,j; EntryScenario es; EntryExitScenario ees; Route r; for (i = 0; i < entries.size(); i++) { es = new EntryScenario(entries.get(i)); for (j = 0; j < exits.size(); j++) { ees = new EntryExitScenario(entries.get(i), exits.get(j)); ees.percentsEachRoute.add(new Integer(100)); r = new Route(); r.entry = entries.get(i); r.exit = exits.get(j); r.route = new ArrayList(); try { r = rc.bestRoute(r.entry, r.exit); } catch (Exception e) { } if (r == null) { r = new Route(); r.entry = entries.get(i); r.exit = exits.get(j); r.route = new ArrayList(); System.out.println("No route for " + r.entry + " to " + r.exit); } ees.routes.add(r); es.entryExits.add(ees); s.allRoutes.add(r); } for (j = 0; j < es.entryExits.size(); j++) { es.entryExits.get(j).percentOfFlow = (int) (100); } s.entryScenarios.add(es); } } public static Scenario createSmallReservation(String name, Location entry, Location exit) { Scenario s; ArrayList entries = new ArrayList(); ArrayList exits = new ArrayList(); Mobility.events = new SortedEventsVector(); String mapFileName = System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "map" + File.separatorChar + name + ".map"; ArrayList allRoutes = new ArrayList(); ArrayList driverTypes = new ArrayList(); driverTypes.add("very calm"); driverTypes.add("regular"); driverTypes.add("aggresive"); entries.add(entry); exits.add(exit); s = new Scenario(mapFileName, entries, exits, driverTypes, allRoutes, name); EntryScenario es; EntryExitScenario ees; int i, j; Route r; for (i = 0; i < entries.size(); i++) { es = new EntryScenario(entries.get(i)); es.flow = 400; int period=(int)((double)3600*Globals.executionFPS / (double)es.flow); NewCarEvent nce=new NewCarEvent(period,i, period); Mobility.events.addEvent(nce); es.percentsDriverTypes.add(new Integer(33)); es.percentsDriverTypes.add(new Integer(33)); es.percentsDriverTypes.add(new Integer(34)); for (j = 0; j < exits.size(); j++) { { ees = new EntryExitScenario(entries.get(i), exits.get(j)); ees.percentsEachRoute.add(new Integer(100)); r = new Route(); r.entry = entries.get(i); r.exit = exits.get(j); r.route = new ArrayList(); try { r = rc.bestRoute(r.entry, r.exit); } catch (Exception e) { } ees.routes.add(r); es.entryExits.add(ees); s.allRoutes.add(r); } } for (j = 0; j < es.entryExits.size(); j++) { es.entryExits.get(j).percentOfFlow = (int) (100); } s.entryScenarios.add(es); } try { ObjectOutputStream outStr = new ObjectOutputStream( new FileOutputStream(System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "fsc" + File.separatorChar + name + ".fsc")); outStr.writeObject(s); } catch (Exception e) { e.printStackTrace(); } ScenarioMap unconfigured = new ScenarioMap(s); unconfigured.imageFileName = new String("Small"+name+"Img.jpg"); try { ObjectOutputStream outStr = new ObjectOutputStream( new FileOutputStream(System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "smf" + File.separatorChar + name + ".smf")); outStr.writeObject(unconfigured); } catch (Exception e) { e.printStackTrace(); } Mobility.entryScenarios = s.entryScenarios; return s; } public static Scenario createScenario(String name, ArrayList entries, ArrayList exits, ArrayList entryFlows) { String mapFileName = System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "map" + File.separatorChar + name + ".map"; ArrayList allRoutes = new ArrayList(); ArrayList driverTypes = new ArrayList(); driverTypes.add("very calm"); driverTypes.add("regular"); driverTypes.add("aggresive"); Scenario s = new Scenario(mapFileName, entries, exits, driverTypes, allRoutes, name); if (entryFlows.size() != entries.size()) { System.out.println("nb of flows do not match the nb of entries"); return null; } EntryScenario es; EntryExitScenario ees; int i, j; Route r; for (i = 0; i < entries.size(); i++) { es = new EntryScenario(entries.get(i)); es.flow = entryFlows.get(i); int period=(int)((double)3600*Globals.executionFPS / (double)es.flow); NewCarEvent nce=new NewCarEvent(period,i, period); Mobility.events.addEvent(nce); es.percentsDriverTypes.add(new Integer(33)); es.percentsDriverTypes.add(new Integer(33)); es.percentsDriverTypes.add(new Integer(34)); for (j = 0; j < exits.size(); j++) { { if (entries.get(i).equals(exits.get(j))) { continue; } ees = new EntryExitScenario(entries.get(i), exits.get(j)); ees.percentsEachRoute.add(new Integer(100)); r = new Route(); r.entry = entries.get(i); r.exit = exits.get(j); r.route = new ArrayList(); try { r = rc.bestRoute(r.entry, r.exit); } catch (Exception e) { } ees.routes.add(r); es.entryExits.add(ees); s.allRoutes.add(r); } } for (j = 0; j < es.entryExits.size(); j++) { es.entryExits.get(j).percentOfFlow = (int) (100 / es.entryExits .size()); } s.entryScenarios.add(es); } try { ObjectOutputStream outStr = new ObjectOutputStream( new FileOutputStream(System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "fsc" + File.separatorChar + name + ".fsc")); outStr.writeObject(s); } catch (Exception e) { e.printStackTrace(); } ScenarioMap unconfigured = new ScenarioMap(s); unconfigured.imageFileName = new String("Small" + name + "Img.jpg"); try { ObjectOutputStream outStr = new ObjectOutputStream( new FileOutputStream(System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "smf" + File.separatorChar + name + ".smf")); outStr.writeObject(unconfigured); } catch (Exception e) { e.printStackTrace(); } Mobility.entryScenarios = s.entryScenarios; return s; } public static void createScenarioHighway() { Scenario s; Location entry, exit; ArrayList entries = new ArrayList(); ArrayList exits = new ArrayList(); String mapFileName = System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "map" + File.separatorChar + "NJSmall.map"; String name = "NJSmall"; ArrayList allRoutes = new ArrayList(); ArrayList driverTypes = new ArrayList(); driverTypes.add("very calm"); driverTypes.add("regular"); driverTypes.add("aggresive"); entries.add(new Location(1, 1)); entries.add(new Location(12, 372)); entries.add(new Location(2, 1)); entries.add(new Location(2, 514)); entries.add(new Location(20, 1)); entries.add(new Location(18, 110)); entries.add(new Location(19, 46)); entries.add(new Location(14, 966)); entries.add(new Location(22, 2)); entries.add(new Location(22, 110)); entries.add(new Location(15, 3)); entries.add(new Location(31, 4)); entries.add(new Location(8, 355)); entries.add(new Location(6, 634)); entries.add(new Location(30, 1148)); entries.add(new Location(31, 865)); entries.add(new Location(13, 822)); entries.add(new Location(7, 570)); entries.add(new Location(24, 455)); entries.add(new Location(16, 371)); entries.add(new Location(21, 3)); entries.add(new Location(4, 3211)); entries.add(new Location(4, 5)); entries.add(new Location(5, 869)); exits.add(new Location(1, 1)); exits.add(new Location(12, 372)); exits.add(new Location(2, 1)); exits.add(new Location(2, 514)); exits.add(new Location(20, 1)); exits.add(new Location(18, 110)); exits.add(new Location(19, 46)); exits.add(new Location(14, 966)); exits.add(new Location(22, 2)); exits.add(new Location(22, 110)); exits.add(new Location(15, 3)); exits.add(new Location(31, 4)); exits.add(new Location(8, 355)); exits.add(new Location(6, 634)); exits.add(new Location(30, 1148)); exits.add(new Location(31, 865)); exits.add(new Location(13, 822)); exits.add(new Location(7, 570)); exits.add(new Location(24, 455)); exits.add(new Location(16, 371)); exits.add(new Location(21, 3)); exits.add(new Location(4, 3211)); exits.add(new Location(4, 5)); exits.add(new Location(5, 869)); s = new Scenario(mapFileName, entries, exits, driverTypes, allRoutes, name); EntryScenario es; EntryExitScenario ees; int i, j; Route r; for (i = 0; i < entries.size(); i++) { es = new EntryScenario(entries.get(i)); es.flow = 400; es.percentsDriverTypes.add(new Integer(33)); es.percentsDriverTypes.add(new Integer(33)); es.percentsDriverTypes.add(new Integer(34)); Point p1, p2; for (j = 0; j < exits.size(); j++) { if (i == j) { continue; } else { p1 = Globals.map.roads.get(entries.get(i).roadIdx).points .get(entries.get(i).ptIdx); p2 = Globals.map.roads.get(exits.get(j).roadIdx).points .get(exits.get(j).ptIdx); float y1, y2, x1, x2; y2 = (float) GPSutil.getMetersLatitude( Globals.map.minPoint, p2); x2 = (float) GPSutil.getMetersLongitude( Globals.map.minPoint, p2); y1 = (float) GPSutil.getMetersLatitude( Globals.map.minPoint, p1); x1 = (float) GPSutil.getMetersLongitude( Globals.map.minPoint, p1); double d = Math .sqrt((double) ((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))); if (d > 1000.0) { System.out.println("Pt entry " + i + " si exit " + j); ees = new EntryExitScenario(entries.get(i), exits .get(j)); ees.percentsEachRoute.add(new Integer(100)); r = new Route(); r.entry = entries.get(i); r.exit = exits.get(j); r.route = new ArrayList(); r = rc.bestRoute(r.entry, r.exit); if (r == null) { r = new Route(); r.entry = entries.get(i); r.exit = exits.get(j); r.route = new ArrayList(); System.out.println("No route for " + r.entry + " to " + r.exit); } ees.routes.add(r); s.allRoutes.add(r); es.entryExits.add(ees); } } } for (j = 0; j < es.entryExits.size(); j++) { es.entryExits.get(j).percentOfFlow = (int) (100 / es.entryExits .size()); } s.entryScenarios.add(es); } try { ObjectOutputStream outStr = new ObjectOutputStream( new FileOutputStream(System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "fsc" + File.separatorChar + "NJSmall.fsc")); outStr.writeObject(s); } catch (Exception e) { e.printStackTrace(); } ScenarioMap unconfigured = new ScenarioMap(s); unconfigured.imageFileName = new String("NJSmallImg.jpg"); try { ObjectOutputStream outStr = new ObjectOutputStream( new FileOutputStream(System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "smf" + File.separatorChar + "NJSmall.smf")); outStr.writeObject(unconfigured); } catch (Exception e) { e.printStackTrace(); } System.out.println("GATA"); } public static void createScenarioDownTown() { Scenario s; Location entry, exit; ArrayList entries = new ArrayList(); ArrayList exits = new ArrayList(); String mapFileName = System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "map" + File.separatorChar + "DowntownRoutingFull.map"; String name = "DowntownRoutingFull"; ArrayList allRoutes = new ArrayList(); ArrayList driverTypes = new ArrayList(); driverTypes.add("very calm"); driverTypes.add("regular"); driverTypes.add("aggresive"); entries.add(new Location(14, 228)); entries.add(new Location(1, 64)); entries.add(new Location(2, 240)); entries.add(new Location(0, 240)); entries.add(new Location(9, 256)); entries.add(new Location(10, 224)); entries.add(new Location(4, 224)); entries.add(new Location(5, 256)); entries.add(new Location(3, 240)); entries.add(new Location(8, 144)); entries.add(new Location(6, 136)); entries.add(new Location(22, 79)); entries.add(new Location(21, 64)); entries.add(new Location(20, 64)); entries.add(new Location(3, 0)); entries.add(new Location(5, 0)); entries.add(new Location(4, 0)); entries.add(new Location(10, 0)); entries.add(new Location(9, 0)); entries.add(new Location(0, 0)); entries.add(new Location(2, 0)); entries.add(new Location(16, 0)); entries.add(new Location(14, 0)); entries.add(new Location(18, 208)); entries.add(new Location(17, 200)); entries.add(new Location(15, 208)); entries.add(new Location(11, 207)); entries.add(new Location(13, 223)); entries.add(new Location(18, 0)); entries.add(new Location(13, 0)); entries.add(new Location(15, 0)); entries.add(new Location(11, 0)); // ///////////////////////////////// exits.add(new Location(14, 228)); exits.add(new Location(1, 64)); exits.add(new Location(2, 240)); exits.add(new Location(0, 240)); exits.add(new Location(9, 256)); exits.add(new Location(10, 224)); exits.add(new Location(4, 224)); exits.add(new Location(5, 256)); exits.add(new Location(3, 240)); exits.add(new Location(8, 144)); exits.add(new Location(6, 136)); exits.add(new Location(22, 79)); exits.add(new Location(21, 64)); exits.add(new Location(20, 64)); exits.add(new Location(3, 0)); exits.add(new Location(5, 0)); exits.add(new Location(4, 0)); exits.add(new Location(10, 0)); exits.add(new Location(9, 0)); exits.add(new Location(0, 0)); exits.add(new Location(2, 0)); exits.add(new Location(16, 0)); exits.add(new Location(14, 0)); exits.add(new Location(18, 208)); exits.add(new Location(17, 200)); exits.add(new Location(15, 208)); exits.add(new Location(11, 207)); exits.add(new Location(13, 223)); exits.add(new Location(18, 0)); exits.add(new Location(13, 0)); exits.add(new Location(15, 0)); exits.add(new Location(11, 0)); s = new Scenario(mapFileName, entries, exits, driverTypes, allRoutes, name); EntryScenario es; EntryExitScenario ees; int i, j; Route r; for (i = 0; i < entries.size(); i++) { es = new EntryScenario(entries.get(i)); es.flow = 200; es.percentsDriverTypes.add(new Integer(33)); es.percentsDriverTypes.add(new Integer(33)); es.percentsDriverTypes.add(new Integer(34)); Point p1, p2; for (j = 0; j < exits.size(); j++) { if (i == j) { continue; } else { p1 = Globals.map.roads.get(entries.get(i).roadIdx).points .get(entries.get(i).ptIdx); p2 = Globals.map.roads.get(exits.get(j).roadIdx).points .get(exits.get(j).ptIdx); float y1, y2, x1, x2; y2 = (float) GPSutil.getMetersLatitude( Globals.map.minPoint, p2); x2 = (float) GPSutil.getMetersLongitude( Globals.map.minPoint, p2); y1 = (float) GPSutil.getMetersLatitude( Globals.map.minPoint, p1); x1 = (float) GPSutil.getMetersLongitude( Globals.map.minPoint, p1); double d = Math .sqrt((double) ((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))); if (d > 250.0) { System.out.println("Pt entry " + i + " si exit " + j); ees = new EntryExitScenario(entries.get(i), exits .get(j)); ees.percentsEachRoute.add(new Integer(100)); r = new Route(); r.entry = entries.get(i); r.exit = exits.get(j); r.route = new ArrayList(); r = rc.bestRoute(r.entry, r.exit); if (r == null) { r = new Route(); r.entry = entries.get(i); r.exit = exits.get(j); r.route = new ArrayList(); System.out.println("No route for " + r.entry + " to " + r.exit); } ees.routes.add(r); s.allRoutes.add(r); es.entryExits.add(ees); } } } for (j = 0; j < es.entryExits.size(); j++) { es.entryExits.get(j).percentOfFlow = (int) (100 / es.entryExits .size()); } s.entryScenarios.add(es); } try { ObjectOutputStream outStr = new ObjectOutputStream( new FileOutputStream(System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "fsc" + File.separatorChar + "DowntownRoutingFull.fsc")); outStr.writeObject(s); } catch (Exception e) { e.printStackTrace(); } ScenarioMap unconfigured = new ScenarioMap(s); unconfigured.imageFileName = new String("DowntownRoutingImg.jpg"); try { ObjectOutputStream outStr = new ObjectOutputStream( new FileOutputStream(System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "smf" + File.separatorChar + "DowntownRoutingFull.smf")); outStr.writeObject(unconfigured); } catch (Exception e) { e.printStackTrace(); } System.out.print("gata"); } public static void createScenarioHighwaySmall() { Scenario s; Location entry, exit; ArrayList entries = new ArrayList(); ArrayList exits = new ArrayList(); String mapFileName = System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "map" + File.separatorChar + "Highway.map"; String name = "Highway"; ArrayList allRoutes = new ArrayList(); ArrayList driverTypes = new ArrayList(); driverTypes.add("very calm"); driverTypes.add("regular"); driverTypes.add("aggresive"); entries.add(new Location(0, 310)); entries.add(new Location(0, 0)); entries.add(new Location(2, 310)); entries.add(new Location(2, 0)); exits.add(new Location(0, 310)); exits.add(new Location(0, 0)); exits.add(new Location(2, 310)); exits.add(new Location(2, 0)); s = new Scenario(mapFileName, entries, exits, driverTypes, allRoutes, name); EntryScenario es; EntryExitScenario ees; int i, j; Route r; for (i = 0; i < entries.size(); i++) { es = new EntryScenario(entries.get(i)); es.flow = 400; es.percentsDriverTypes.add(new Integer(33)); es.percentsDriverTypes.add(new Integer(33)); es.percentsDriverTypes.add(new Integer(34)); Point p1, p2; for (j = 0; j < exits.size(); j++) { if (i == j) { continue; } else { p1 = Globals.map.roads.get(entries.get(i).roadIdx).points .get(entries.get(i).ptIdx); p2 = Globals.map.roads.get(exits.get(j).roadIdx).points .get(exits.get(j).ptIdx); float y1, y2, x1, x2; y2 = (float) GPSutil.getMetersLatitude( Globals.map.minPoint, p2); x2 = (float) GPSutil.getMetersLongitude( Globals.map.minPoint, p2); y1 = (float) GPSutil.getMetersLatitude( Globals.map.minPoint, p1); x1 = (float) GPSutil.getMetersLongitude( Globals.map.minPoint, p1); double d = Math .sqrt((double) ((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))); if (d > 1000.0) { System.out.println("Pt entry " + i + " si exit " + j); ees = new EntryExitScenario(entries.get(i), exits .get(j)); ees.percentsEachRoute.add(new Integer(100)); r = new Route(); r.entry = entries.get(i); r.exit = exits.get(j); r.route = new ArrayList(); r = rc.bestRoute(r.entry, r.exit); if (r == null) { r = new Route(); r.entry = entries.get(i); r.exit = exits.get(j); r.route = new ArrayList(); System.out.println("No route for " + r.entry + " to " + r.exit); } ees.routes.add(r); s.allRoutes.add(r); es.entryExits.add(ees); } } } for (j = 0; j < es.entryExits.size(); j++) { es.entryExits.get(j).percentOfFlow = (int) (100 / es.entryExits .size()); } s.entryScenarios.add(es); } try { ObjectOutputStream outStr = new ObjectOutputStream( new FileOutputStream(System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "fsc" + File.separatorChar + "HighwaySmall.fsc")); outStr.writeObject(s); } catch (Exception e) { e.printStackTrace(); } ScenarioMap unconfigured = new ScenarioMap(s); unconfigured.imageFileName = new String("HighwaySmallImg.jpg"); try { ObjectOutputStream outStr = new ObjectOutputStream( new FileOutputStream(System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "smf" + File.separatorChar + "HighwaySmall.smf")); outStr.writeObject(unconfigured); } catch (Exception e) { e.printStackTrace(); } System.out.println("GATA"); } /** * Crates a Map object from "name.RT1" and "name.RT2" files and splits the * map. It also displays the map if "withRun" is true. */ public static void splitMap() { RoadAreaUtils mapSpliter = new RoadAreaUtils(); int i; if(Globals.map==null) System.out.println("NULLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL"); Globals.map.getMinAndMaxPoint(); mapSpliter.splitMap(); mapSpliter.selectDistinctRoadAreas(); mapSpliter.mergeAreas(); Random gen = new Random(System.currentTimeMillis()); for (i = 0; i < mapSpliter.distinctAreas.size(); i++) { mapSpliter.distinctAreas.get(i).setColor(gen.nextFloat(),gen.nextFloat(),gen.nextFloat()); } for (i = 0; i < mapSpliter.mainRoads.size(); i++) { System.out.println("Road: " + Globals.map.roads.get( mapSpliter.mainRoads.get(i).intValue()).getName()); } Globals.map.mapSpliter = mapSpliter; } public static void createMap(String name, boolean withRun, boolean withFileSave, int type) throws Exception { String file2 = null; if (name.endsWith(".rt1")) { file2 = name.substring(0, name.length() - 4) + ".rt2"; } else if (name.endsWith(".RT1")) { file2 = name.substring(0, name.length() - 4) + ".RT2"; } else { logger.severe("ERROR: file not rt1 or RT1:" + name); throw new Exception("ERROR: file not rt1 or RT1:" + name); } Globals.map = new Map(System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "rt" + File.separatorChar + name, System.getProperty("user.home") + File.separatorChar + "maps" + File.separatorChar + "rt" + File.separatorChar + file2); splitMap(); // RoadAreaUtils mapSpliter = new RoadAreaUtils(); // // int i; // Globals.map.getMinAndMaxPoint(); // mapSpliter.splitMap(); // mapSpliter.selectDistinctRoadAreas(); // mapSpliter.mergeAreas(); // Random gen = new Random(System.currentTimeMillis()); // for (i = 0; i < mapSpliter.distinctAreas.size(); i++) // { // mapSpliter.distinctAreas.get(i).setColor(gen.nextFloat(), // gen.nextFloat(), gen.nextFloat()); // } // for (i = 0; i < mapSpliter.mainRoads.size(); i++) // { // System.out.println("Road: " // + Globals.map.roads.get( // mapSpliter.mainRoads.get(i).intValue()).getName()); // } // // Globals.map.mapSpliter = mapSpliter; String dir = System.getProperty("user.home")+File.separatorChar+"maps"+File.separatorChar+"map"; File dirF = new File(dir); if (!dirF.exists()) dirF.mkdirs(); else if (!dirF.isDirectory()) { dirF.renameTo(new File(dir+"~")); dirF = new File(dir); dirF.delete(); dirF.mkdirs(); } File outSave = new File(dir + File.separatorChar + name.substring(0, name.length() - 4) + ".map"); try { MapLoader.loadExtraInfo(name.substring(0, name.length() - 4) + ".rtx.txt"); } catch (Exception ex) { System.out.println("Extra info not loaded: check file! "); } Globals.map.createTrafficLights(new Random()); // DelayRecord.initDelays(); if (withFileSave) { logger.info("Starting file writting.."); try { ObjectOutputStream ois = new ObjectOutputStream( new FileOutputStream(outSave)); ois.writeObject(Globals.map); } catch (Exception e) { e.printStackTrace(); } logger.info("Writting to file ended!"); } if (withRun) // like vnsim.vehicular.scenarios.Main.startGui() { Globals.engine = new Engine(true, true); Engine.simulationType=type; Globals.engine.init(); Globals.demo = new Display(); Globals.demo.setVisible(true); } } }