]> www.fi.muni.cz Git - slotcarman.git/commitdiff
Time formatting moved to SCX::GUI
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Wed, 8 Dec 2010 11:00:11 +0000 (12:00 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Wed, 8 Dec 2010 11:00:11 +0000 (12:00 +0100)
SCX/Car.pm
SCX/GUI.pm
SCX/Track.pm

index 75aa503c49167763e89eca986f2691f87ee1ca31..4ef5543c1d089909cd38ba9093d958b5e3dd0cdb 100644 (file)
@@ -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;
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;
 
index 21f3ab499f70061e98e624f68be3dec763c5f983..c1f66a3e8890307f2b9316042db1427d7dcdde10 100644 (file)
@@ -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;