fix lap time calculations
This commit is contained in:
1 file changed
+16
-13
@@ -79,31 +79,27 @@ class Window:
|
|||||||
|
|
||||||
if self.sector != prev_sector:
|
if self.sector != prev_sector:
|
||||||
if (self.last_sector == 1 and self.sector == 3) or (self.last_sector == 2 and self.sector == 1): self.lapTimeValid = False
|
if (self.last_sector == 1 and self.sector == 3) or (self.last_sector == 2 and self.sector == 1): self.lapTimeValid = False
|
||||||
print('Now in sector ', self.sector, ' Last sector was', self.last_sector)
|
|
||||||
|
|
||||||
if self.sector == 1 and self.last_sector == 3 and self.startTime != None and prev_sector != self.sector:
|
if self.sector == 1 and self.last_sector == 3 and self.startTime != None and prev_sector != self.sector:
|
||||||
self.sectorEnd = time.time()
|
self.sectorEnd = time.time()
|
||||||
self.lapTime = round(self.sectorEnd - self.startTime, 3)
|
|
||||||
self.fastestLap = self.lapTime if (self.lapTime <= self.fastestLap or self.fastestLap == 0) and self.lapTimeValid else self.fastestLap
|
|
||||||
self.fastest_sector_times = {i: self.sector_times[i] for i in range(1, 4)} if (self.lapTime <= self.fastestLap or self.fastestLap == 0) and self.lapTimeValid else self.fastest_sector_times
|
|
||||||
self.startTime = self.sectorEnd
|
self.startTime = self.sectorEnd
|
||||||
self.sector_times[self.last_sector] = round(self.sectorEnd - self.sectorStart, 3)
|
self.sector_times[self.last_sector] = round(self.sectorEnd - self.sectorStart, 3)
|
||||||
print(f"Sector {self.last_sector}: {self.sector_times[self.last_sector]}")
|
self.sectorStart = self.sectorEnd
|
||||||
valid = "" if self.lapTimeValid else "( Invalid )"
|
self.lapTime = round(sum(self.sector_times[i] for i in range(1, 4)), 3)
|
||||||
|
fastest: bool = (self.lapTime <= self.fastestLap or self.fastestLap == 0) and self.lapTimeValid
|
||||||
|
self.fastestLap = self.lapTime if fastest else self.fastestLap
|
||||||
|
self.fastest_sector_times = {i: self.sector_times[i] for i in range(1, 4)} if fastest else self.fastest_sector_times
|
||||||
self.lapTimeValid = True
|
self.lapTimeValid = True
|
||||||
print(f"Lap Time: {self.lapTime} {valid}")
|
|
||||||
|
|
||||||
if self.sector == 2 and self.last_sector == 1 and prev_sector != self.sector:
|
if self.sector == 2 and self.last_sector == 1 and prev_sector != self.sector:
|
||||||
self.sectorEnd = time.time()
|
self.sectorEnd = time.time()
|
||||||
self.sector_times[self.last_sector] = round(self.sectorEnd - self.sectorStart, 3)
|
self.sector_times[self.last_sector] = round(self.sectorEnd - self.sectorStart, 3)
|
||||||
self.sectorStart = self.sectorEnd
|
self.sectorStart = self.sectorEnd
|
||||||
print(f"Sector {self.last_sector}: {self.sector_times[self.last_sector]}")
|
|
||||||
|
|
||||||
if self.sector == 3 and self.last_sector == 2 and prev_sector != self.sector:
|
if self.sector == 3 and self.last_sector == 2 and prev_sector != self.sector:
|
||||||
self.sectorEnd = time.time()
|
self.sectorEnd = time.time()
|
||||||
self.sector_times[self.last_sector] = round(self.sectorEnd - self.sectorStart, 3)
|
self.sector_times[self.last_sector] = round(self.sectorEnd - self.sectorStart, 3)
|
||||||
self.sectorStart = self.sectorEnd
|
self.sectorStart = self.sectorEnd
|
||||||
print(f"Sector {self.last_sector}: {self.sector_times[self.last_sector]}")
|
|
||||||
|
|
||||||
if self.sector == 1 and self.last_sector == 3 and self.startTime == None:
|
if self.sector == 1 and self.last_sector == 3 and self.startTime == None:
|
||||||
self.startTime = time.time()
|
self.startTime = time.time()
|
||||||
@@ -115,16 +111,23 @@ class Window:
|
|||||||
self.track.draw(self.screen)
|
self.track.draw(self.screen)
|
||||||
self.car.draw(self.screen)
|
self.car.draw(self.screen)
|
||||||
|
|
||||||
text = self.font.render(f"Fastest Lap: {self.fastestLap:.3f}", True, colors.Green, colors.Black)
|
|
||||||
self.screen.blit(text, text.get_rect())
|
|
||||||
for i in range(1, len(self.sector_times) + 1):
|
for i in range(1, len(self.sector_times) + 1):
|
||||||
faster = self.sector_times[i] <= self.fastest_sector_times[i]
|
faster = self.sector_times[i] <= self.fastest_sector_times[i]
|
||||||
color = colors.Green if faster else colors.Yellow
|
color = colors.Green if faster else colors.Yellow
|
||||||
diff = f"{'-' if faster else '+'}{abs(self.fastest_sector_times[i]-self.sector_times[i]):.3f}"
|
diff = f"{'-' if faster else '+'}{abs(self.fastest_sector_times[i]-self.sector_times[i]):.3f}"
|
||||||
text = self.font.render(f"Sector {i}: {self.sector_times[i]:.3f} | {diff}", True, color, colors.Black)
|
text = self.font.render(f"S{i}: {self.sector_times[i]:.3f} | {diff} | Fastest S{i}: {self.fastest_sector_times[i]:.3f}", True, color, colors.Black)
|
||||||
textRect = text.get_rect()
|
textRect = text.get_rect()
|
||||||
textRect.center = (textRect.center[0], textRect.center[1] + i * 24)
|
textRect.center = (textRect.center[0], textRect.center[1] + (i-1) * 24)
|
||||||
self.screen.blit(text, textRect)
|
self.screen.blit(text, textRect)
|
||||||
|
text = self.font.render(f"Fastest Lap: {self.fastestLap:.3f}", True, colors.Green, colors.Black)
|
||||||
|
rect = text.get_rect()
|
||||||
|
rect.center = (rect.center[0], rect.center[1] + 72)
|
||||||
|
self.screen.blit(text, rect)
|
||||||
|
color = colors.Green if self.lapTimeValid else colors.Yellow
|
||||||
|
text = self.font.render(f'Current Lap: {"Valid" if self.lapTimeValid else "Invalid"}', True, color, colors.Black)
|
||||||
|
rect = text.get_rect()
|
||||||
|
rect.center = (rect.center[0], rect.center[1] + 96)
|
||||||
|
self.screen.blit(text, rect)
|
||||||
|
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
self.clock.tick(60)
|
self.clock.tick(60)
|
||||||
Reference in new issue
Block a user