예제 #1
0
 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)))
예제 #2
0
 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)))
예제 #3
0
 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))
예제 #4
0
 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)
예제 #5
0
    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
예제 #6
0
 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'])
예제 #7
0
 def showTime(self, rtime):
     self.starttext.setText('Training: ' + str(formattime(rtime)))