def say_on_timer(self, old, new, addr): bl = old[addr].bestlap nbl = new[addr].bestlap if bl is None and nbl is not None: self.say(new[addr].name + ': ' + str(formattime(nbl, longfmt=False))) if bl is not None and nbl is not None and nbl < bl: self.say(new[addr].name + ': ' + str(formattime(nbl, longfmt=False)))
def handleUpdateTime(self, rtime, minutes, cu_drivers): cd = (minutes * 60 * 1000) - rtime if cd <= 0: for driver in cu_drivers: driver.stopnext = True self.starttext.setText(self.tr('Race finished')) else: self.starttext.setText(self.tr('Race: ') + str(formattime(cd)))
def handleUpdateLaps(self, rtime, laps, cu_drivers): mlaps = 0 for driver in cu_drivers: if driver.laps > mlaps: mlaps = driver.laps if driver.laps >= laps: driver.racing = False self.starttext.setText(self.tr('Race: ') + str(formattime(rtime)) + self.tr(', %n Lap(s) remaining', '', laps-mlaps))
def updateDriver(self, addr, pos=None, name=None, total=None, laps=None, laptime=None, bestlaptime=None, fuelbar=None, pits=None): try: r = self.driver_ui[addr] if pos is not None: r['pos'].setText(str(pos)) if name is not None: r['name'].setText(str(name)) if total is not None: r['total'].setText(str(formattime(total))) if laps is not None: r['laps'].setText(str(laps)) if laptime is not None: r['laptime'].setText(str(formattime(laptime, longfmt=False))) if bestlaptime is not None: r['bestlaptime'].setText(str(formattime(bestlaptime, longfmt=False))) if fuelbar is not None: r['fuelbar'].setValue(fuelbar) if pits is not None: r['pits'].setText(str(pits)) except KeyError: print('wrong addr', addr)
def addDrivers(self, drivers, cu_drivers, sort_mode): rank = [] for addr, driver in drivers.items(): rank.append(cu_drivers[addr]) if sort_mode == SORT_MODE__LAPS: rank.sort( key=lambda dr: (0, 0) if dr.bestlap is None else (-dr.laps, dr.time)) if sort_mode == SORT_MODE__LAPTIME: rank.sort(key=lambda dr: 0 if dr.bestlap is None else dr.bestlap) for crank in rank: addr = crank.num drank = rank.index(crank) + 1 driverPos = QLabel(str(drank)) driverPos.setStyleSheet(self.posCss) driverPos.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Expanding) driverPos.setFont(self.posFont) self.mainLayout.addWidget(driverPos, self.num_row, 0) name = QLabel( '<big><b>' + str(crank.name) + '</b></big><br><small>' + str(drivers[addr-1]['car']) + '</small>') name.setStyleSheet(self.nameCss) name.setTextFormat(Qt.RichText) self.mainLayout.addWidget(name, self.num_row, 1) laps = QLabel(str(crank.laps)) laps.setStyleSheet(self.posCss) laps.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Expanding) laps.setFont(self.timeFont) self.mainLayout.addWidget(laps, self.num_row, 2) dtime = '' ftime = '' if sort_mode == SORT_MODE__LAPS: ftime = formattime(crank.time) if drank == 1: dtime = ' ' else: if rank[0].time is not None: if rank[0].laps <= crank.laps: dtime = '+' + formattime(crank.time - rank[0].time, longfmt=False) else: dtime = self.tr('+%n Lap(s)', '', rank[0].laps - crank.laps) if sort_mode == SORT_MODE__LAPTIME: ftime = formattime(crank.bestlap, longfmt=False) if drank == 1: dtime = ' ' else: if rank[0].bestlap is not None: dtime = '+' + formattime((int(crank.bestlap) - float(rank[0].bestlap)), longfmt=False) fotime = QLabel(str(ftime)) fotime.setStyleSheet(self.posCss) fotime.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Expanding) fotime.setFont(self.timeFont) self.mainLayout.addWidget(fotime, self.num_row, 3) otime = QLabel(str(dtime)) otime.setStyleSheet(self.posCss) otime.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Expanding) otime.setFont(self.timeFont) self.mainLayout.addWidget(otime, self.num_row, 4) self.driver_ui[addr] = { 'pos': driverPos, 'name': name, 'laps': laps, 'fotime': fotime, 'otime': otime } self.num_row += 1
def setDrivers(self, last, next): self.lasttext.setText( self.tr('Last Driver (best laptime): ') + '\n' + last['name'] + ': ' + formattime(last['qualifying_cu_driver'].bestlap, longfmt=False)) self.nexttext.setText(self.tr('Next Driver: ') + next['name'])
def showTime(self, rtime): self.starttext.setText('Training: ' + str(formattime(rtime)))