]> www.fi.muni.cz Git - slotcarman.git/blobdiff - SCX/GUI.pm
Time formatting moved to SCX::GUI
[slotcarman.git] / SCX / GUI.pm
index 83783ae92b47df1ca82f68e5640ec3eb76787061..c073560dce160881098a93395c3ba8b7756a6010 100755 (executable)
@@ -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;