56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
import sumolib
|
|
from Car import Car
|
|
from carInfo import Ui_carInfo
|
|
from PySide6.QtWidgets import QWidget, QLabel
|
|
|
|
class carInfo(QWidget):
|
|
def __init__(self):
|
|
super(carInfo,self).__init__()
|
|
self.ui = Ui_carInfo()
|
|
self.ui.setupUi(self)
|
|
|
|
def setVal(self,key,val):
|
|
obj = self.findChild(QLabel,key)
|
|
if(obj is None):
|
|
return
|
|
obj.setText(f"{key} : {val}")
|
|
obj.update()
|
|
|
|
class CarController:
|
|
def __init__(self,parentMap):
|
|
self.map=parentMap
|
|
self.cars=[]
|
|
|
|
def fromPath(self,path):
|
|
self.cars=[]
|
|
for vehicle in sumolib.xml.parse(path,"vehicle"):
|
|
route=vehicle.route[0].edges.split()
|
|
wId=self.infoWidget.addItem(carInfo(), vehicle.id)
|
|
self.cars.append(Car(vehicle.id,route,self.map,self,self.infoWidget.widget(wId)))
|
|
|
|
def prepareRoute(self):
|
|
for car in self.cars:
|
|
car.prepareRoute()
|
|
|
|
def getCarsOnEdge(self,edgeID): # on devrai probablement utiliser une map ici (dict en python?) mais flemme
|
|
res=[]
|
|
for car in self.cars:
|
|
cid=car.route[car.index].getID()
|
|
if(cid==edgeID):
|
|
res.append(car)
|
|
return res
|
|
|
|
def update(self):
|
|
if(self.map.net is None):
|
|
return
|
|
for car in self.cars:
|
|
car.update(1.0/60)
|
|
|
|
def draw(self,painter):
|
|
for car in self.cars:
|
|
car.draw(painter)
|
|
|
|
def setInfoWidget(self, widget):
|
|
self.infoWidget = widget
|
|
|