$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
$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 {
$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;
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 {
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 {
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;
$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);
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;
$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;