From b78e60e309a2ae2eb0197f866f7febd2b7cafa5c Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Sun, 8 May 2011 23:01:16 +0200 Subject: [PATCH] Highlight the best lap --- SCX/Car.pm | 20 ++++++++++++++++---- SCX/GUI.pm | 8 ++++++-- SCX/Track.pm | 9 +++++++-- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/SCX/Car.pm b/SCX/Car.pm index 1a74c6b..2bb6761 100644 --- a/SCX/Car.pm +++ b/SCX/Car.pm @@ -121,8 +121,9 @@ sub set_laptime { my ($self, $lap_time) = @_; if (!defined $lap_time) { - $self->gui->set_best_lap($self->{order}, undef); $self->{best_lap} = undef; + $self->{global_best_lap} = undef; + $self->print_best_lap; } return if $self->same('laptime', $lap_time); @@ -137,10 +138,21 @@ sub set_laptime { return if defined $self->{best_lap} && $self->{best_lap} <= $lap_time; $self->{best_lap} = $lap_time; - my $global = $self->{track}->check_best_lap($lap_time, + $self->print_best_lap; + $self->{track}->notify_best_lap($self->{id}, $lap_time, $self->{driver}); +} + +sub print_best_lap { + my ($self) = @_; + $self->gui->set_best_lap($self->{order}, $self->{best_lap}, + $self->{global_best_lap}); +} + +sub set_global_best { + my ($self, $val) = @_; - $self->gui->set_best_lap($self->{order}, $lap_time, $global); + $self->{global_best_lap} = $val ? 1 : undef; } sub set_driver { @@ -179,12 +191,12 @@ sub set_order { $self->{button}); $self->gui->set_lap($self->{order}, $self->{lap}); $self->gui->set_laptime($self->{order}, $self->{laptime}); - $self->gui->set_best_lap($self->{order}, $self->{best_lap}); $self->gui->set_fuel($self->{order}, $self->{fuel}); $self->gui->set_car_id($self->{order}, $self->{id} + 1); $self->gui->set_distance($self->{order}, $self->{time_diff}, $self->{lap_diff}, $self->{grey_diff}); $self->print_state; + $self->print_best_lap; } sub print_state { diff --git a/SCX/GUI.pm b/SCX/GUI.pm index af9f769..3ad230c 100755 --- a/SCX/GUI.pm +++ b/SCX/GUI.pm @@ -293,9 +293,13 @@ sub set_laptime { } sub set_best_lap { - my ($self, $row, $text) = @_; + my ($self, $row, $text, $overall_best) = @_; - $self->set_label('label_best_lap', $row, format_lap_time($text)); + $text = format_lap_time($text); + if ($overall_best) { + $text = '' . $text . ''; + } + $self->set_label('label_best_lap', $row, $text); } sub set_name { diff --git a/SCX/Track.pm b/SCX/Track.pm index 6ed3d82..097dde8 100644 --- a/SCX/Track.pm +++ b/SCX/Track.pm @@ -145,8 +145,8 @@ sub print_rounds { $self->{gui}->rounds($msg); } -sub check_best_lap { - my ($self, $time, $who) = @_; +sub notify_best_lap { + my ($self, $id, $time, $who) = @_; return if !defined $time || $time == 0; @@ -157,6 +157,11 @@ sub check_best_lap { || $time < $self->{best_lap}) { $self->{best_lap} = $time; $self->{gui}->best_lap($time, $who); + + for my $car (0..5) { + $self->car($car)->set_global_best($car == $id); + $self->car($car)->print_best_lap; + } return 1; } return 0; -- 2.43.0