From a8bf3e85d783e5adbade7074e3cd15487d8ee86b Mon Sep 17 00:00:00 2001 From: hodasemi Date: Fri, 20 Jan 2023 05:49:57 +0100 Subject: [PATCH] Add proper reset function --- .../elements/leaderboard/leaderboard_entry.rs | 18 ++++++++++-------- src/overlay/elements/leaderboard/mod.rs | 8 ++++++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/overlay/elements/leaderboard/leaderboard_entry.rs b/src/overlay/elements/leaderboard/leaderboard_entry.rs index 6d5a9db..01bdf30 100644 --- a/src/overlay/elements/leaderboard/leaderboard_entry.rs +++ b/src/overlay/elements/leaderboard/leaderboard_entry.rs @@ -126,6 +126,14 @@ impl LeaderBoardEntry { self.place_label.set_text(self.place) } + pub fn reset_time(&mut self) -> Result<()> { + self.behind = BehindLeader::Time(f64::MIN); + self.best_lap = f64::MIN; + self.time_behind_next = f64::MIN; + + self.time_label.set_text("---") + } + pub fn update_time_behind_leader(&mut self, behind: BehindLeader) -> Result<()> { if self.behind != behind { self.behind = behind; @@ -149,13 +157,7 @@ impl LeaderBoardEntry { } } BehindLeader::Laps(laps_behind) => { - let text = if laps_behind == 1 { - format!("+{} Lap", laps_behind) - } else { - format!("+{} Laps", laps_behind) - }; - - self.time_label.set_text(text)?; + self.time_label.set_text(format!("+{}", laps_behind))?; } } } @@ -167,7 +169,7 @@ impl LeaderBoardEntry { if self.best_lap != time { self.best_lap = time; - if self.best_lap < 0.0 { + if self.best_lap <= 0.0 { self.time_label.set_text("---")?; } else { let text = if self.best_lap > 60.0 { diff --git a/src/overlay/elements/leaderboard/mod.rs b/src/overlay/elements/leaderboard/mod.rs index 075c9fb..141e3a6 100644 --- a/src/overlay/elements/leaderboard/mod.rs +++ b/src/overlay/elements/leaderboard/mod.rs @@ -276,7 +276,7 @@ impl DataReceiver for LeaderBoard { match phase { GamePhase::Practice | GamePhase::Qualifying | GamePhase::TestDay => { for entry in self.leaderboard_entries.iter_mut() { - entry.update_best_lap(-1.0)?; + entry.reset_time()?; } self.leaderboard.enable()?; @@ -284,7 +284,11 @@ impl DataReceiver for LeaderBoard { GamePhase::Race => { for entry in self.leaderboard_entries.iter_mut() { - entry.update_time_behind_leader(BehindLeader::Time(0.0))?; + entry.reset_time()?; + } + + for entry in self.deltaboard_entries.iter_mut() { + entry.reset_time()?; } self.leaderboard.enable()?;