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;