def leaveStop(vehicleID, newTarget=None, delay=0.): v = vehicleStatus[vehicleID] if newTarget: cmdChangeTarget(newTarget, vehicleID) cmdStopNode(v.target, vehicleID, v.targetPos, delay) v.target = None v.targetPos = None v.parking = False
def _reroutePersons(edge): if edge in persons: for person in persons[edge]: if not vehicleStatus[person].slot: row = int(edge[4]) targetEdge = "footmain%sto%s" % (row, row + 1) cmdStopNode(edge.replace("slot", "-foot"), person, 1., 0.) stopAt(person, targetEdge) vehicleStatus[person].parking = False vehicleStatus[person].slot = edge
def _reroutePersons(edge): if edge in persons: for person in persons[edge]: if not vehicleStatus[person].slot: row = int(edge[4]) targetEdge = "footmain%sto%s" % (row, row+1) cmdStopNode(edge.replace("slot", "-foot"), person, 1., 0.) stopAt(person, targetEdge) vehicleStatus[person].parking = False vehicleStatus[person].slot = edge
def stopAt(vehicleID, edge, pos=None): if setting.verbose: print "stopAt", vehicleID, edge if pos == None: pos = STOP_POS if edge.endswith("out") or edge.endswith("in"): pos = 90. cmdChangeTarget(edge, vehicleID) cmdStopNode(edge, vehicleID, pos) vehicleStatus[vehicleID].target = edge vehicleStatus[vehicleID].targetPos = pos
def _checkInitialPositions(vehicleID, edge, pos): if vehicleID in vehicleStatus: vehicleStatus[vehicleID].edge = edge vehicleStatus[vehicleID].pos = pos else: vehicleStatus[vehicleID] = Status(edge, pos) if edge == "mainin": _rerouteCar(vehicleID) elif edge == "cyberin": stopAt(vehicleID, "cyberin") elif edge == "footfairin": stopAt(vehicleID, "footmainout") elif "foot" in edge: cmdStopNode("-" + edge, vehicleID) parkEdge = edge.replace("foot", "slot") if not parkEdge in persons: persons[parkEdge] = [] persons[parkEdge].append(vehicleID) vehicleStatus[vehicleID].parking = True elif edge.startswith("slot"): stopAt(vehicleID, edge, SLOT_LENGTH - 1.) occupancy[edge] = vehicleID _reroutePersons(edge)
def _checkInitialPositions(vehicleID, edge, pos): if vehicleID in vehicleStatus: vehicleStatus[vehicleID].edge = edge vehicleStatus[vehicleID].pos = pos else: vehicleStatus[vehicleID] = Status(edge, pos) if edge == "mainin": _rerouteCar(vehicleID) elif edge == "cyberin": stopAt(vehicleID, "cyberin") elif edge == "footfairin": stopAt(vehicleID, "footmainout") elif "foot" in edge: cmdStopNode("-"+edge, vehicleID) parkEdge = edge.replace("foot", "slot") if not parkEdge in persons: persons[parkEdge] = [] persons[parkEdge].append(vehicleID) vehicleStatus[vehicleID].parking = True elif edge.startswith("slot"): stopAt(vehicleID, edge, SLOT_LENGTH-1.) occupancy[edge] = vehicleID _reroutePersons(edge)