From: Jan "Yenya" Kasprzak Date: Wed, 8 Dec 2010 11:00:11 +0000 (+0100) Subject: Time formatting moved to SCX::GUI X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=slotcarman.git;a=commitdiff_plain;h=345e8e96dea605056d0c35461c4f16234c247fba Time formatting moved to SCX::GUI --- diff --git a/SCX/Car.pm b/SCX/Car.pm index 75aa503..4ef5543 100644 --- a/SCX/Car.pm +++ b/SCX/Car.pm @@ -88,15 +88,18 @@ sub set_lap { $self->{avg_lap} = $avg; $self->gui->set_avg_lap($self->{order}, $avg); } else { - $self->gui->set_avg_lap($self->{order}, '--'); + $self->gui->set_avg_lap($self->{order}, undef); } } sub set_laptime { my ($self, $lap_time) = @_; + return if $self->same('laptime', $lap_time); + + $self->gui->set_laptime($self->{order}, $lap_time); + if (defined $lap_time) { - $lap_time = sprintf("%.2f", $lap_time); if ($lap_time > 1.0 && !$self->{in_pit_lane} && (!defined $self->{best_lap} || $self->{best_lap} > $lap_time @@ -110,18 +113,9 @@ sub set_laptime { $global); } } else { - $self->gui->set_best_lap($self->{order}, '--'); + $self->gui->set_best_lap($self->{order}, $lap_time); $self->{best_lap} = undef; } - - return if (!defined $self->{laptime} && !defined $lap_time) - || (defined $self->{laptime} && defined $lap_time - && $self->{laptime} == $lap_time); - - $self->{laptime} = $lap_time; - - $self->gui->set_laptime($self->{order}, defined $lap_time - ? $lap_time : '--'); } sub set_driver { @@ -157,15 +151,14 @@ sub set_order { $self->gui->set_name($self->{order}, $self->{driver}); $self->gui->set_car_icon($self->{order}, $self->{car_icon}); $self->gui->set_throttle($self->{order}, $self->{throttle}); - $self->gui->set_lap($self->{order}, defined $self->{lap} - ? $self->{lap} : '--'); - $self->gui->set_laptime($self->{order}, defined $self->{laptime} - ? $self->{laptime} : '--'); - $self->gui->set_best_lap($self->{order}, defined $self->{best_lap} - ? $self->{best_lap} : '--'); - $self->gui->set_avg_lap($self->{order}, defined $self->{avg_lap} - ? $self->{avg_lap} : '--'); + $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_avg_lap($self->{order}, $self->{avg_lap}); $self->gui->set_fuel($self->{order}, $self->{fuel}); + if ($self->{in_pit_lane}) { + $self->gui->enter_pit_lane; + } } 1; diff --git a/SCX/GUI.pm b/SCX/GUI.pm index 83783ae..c073560 100755 --- a/SCX/GUI.pm +++ b/SCX/GUI.pm @@ -220,19 +220,19 @@ sub set_lap { sub set_laptime { my ($self, $row, $text) = @_; - $self->set_label('label_laptime', $row, $text); + $self->set_label('label_laptime', $row, format_lap_time($text)); } sub set_avg_lap { my ($self, $row, $text) = @_; - $self->set_label('label_avg_lap', $row, $text); + $self->set_label('label_avg_lap', $row, format_lap_time($text)); } sub set_best_lap { my ($self, $row, $text) = @_; - $self->set_label('label_best_lap', $row, $text); + $self->set_label('label_best_lap', $row, format_lap_time($text)); } sub set_name { @@ -243,12 +243,13 @@ sub set_name { sub enter_pit_lane { my ($self, $row) = @_; - $self->set_laptime($row, 'PIT'); + $self->set_label('label_laptime', $row, 'PIT'); } sub leave_pit_lane { my ($self, $row) = @_; - $self->set_laptime($row, 'GO!'); + + $self->set_label('label_laptime', $row, 'GO!'); } sub show_semaphore { @@ -274,17 +275,41 @@ sub rounds { sub time { my ($self, $text) = @_; - $self->set_label('label_time_global', undef, $text); + $self->set_label('label_time_global', undef, format_race_time($text)); } sub best_lap { my ($self, $time, $who) = @_; - my $text = $time; + my $text = format_lap_time($time); $text .= ' by ' . $who if defined $who; $self->set_label('label_best_lap_global', undef, $text); } +sub format_race_time { + my ($seconds) = @_; + + return '--' if !defined $seconds; + + my $hours = int($seconds / 3600); + $seconds -= 3600 * $hours; + + my $mins = int($seconds / 60); + $seconds -= 60 * $mins; + + return $hours + ? sprintf('%d:%02d:%05.2f', $hours, $mins, $seconds) + : sprintf('%d:%05.2f', $mins, $seconds); +} + +sub format_lap_time { + my ($seconds) = @_; + + return defined $seconds + ? sprintf('%.2f', $seconds) + : '--'; +} + 1; diff --git a/SCX/Track.pm b/SCX/Track.pm index 21f3ab4..c1f66a3 100644 --- a/SCX/Track.pm +++ b/SCX/Track.pm @@ -88,15 +88,14 @@ sub race_setup { $self->{gui}->rounds('0'); $self->{race_rounds} = 0; } - $self->{race_time} = 0; $self->{best_lap} = undef; $self->{gui}->show_semaphore(undef); $self->{race_running} = 0; $self->{start_in_progress} = 0; - $self->{gui}->time('00:00'); - $self->{gui}->best_lap('0.00'); + $self->{gui}->time(undef); + $self->{gui}->best_lap(undef); for my $car (0..5) { $self->car($car)->set_order($car); @@ -113,7 +112,7 @@ sub check_best_lap { if (!defined $self->{best_lap} || $time < $self->{best_lap}) { $self->{best_lap} = $time; - $self->{gui}->best_lap(sprintf("%.2f", $time), $who); + $self->{gui}->best_lap($time, $who); return 1; } return 0; @@ -128,10 +127,10 @@ sub qualification_start { $self->car($car)->set_laptime(undef); } - $self->{qualification_running}; + $self->{qualification_running} = 1; $self->{gui}->lap('Qualification'); - $self->{gui}->time('00:00'); - $self->{gui}->best_lap('0:00'); + $self->{gui}->time(undef); + $self->{gui}->best_lap(undef); } 1;