return if $self->{race_running} || $self->{start_in_progress}
|| $self->{qualification_running};
+ $self->{round} = 0;
$self->{race_running} = 0;
$self->{start_in_progress} = 1;
$self->{semaphore} = 0;
} (0..5);
my $lap_max = $laps[$new_order[0]];
- if (defined $lap_max && $lap_max != $self->{round}
+ if (defined $lap_max && $self->{round} && $lap_max != $self->{round}
&& (!$self->{race_rounds}
|| $lap_max <= $self->{race_rounds})) {
$self->{round} = $lap_max;
sub finish_line {
my ($self, $time, $regular, @cars) = @_;
- my @processed;
+ my %processed;
+ my $was_processed;
+
for my $car (@cars) {
- push @processed, $car
- if $self->car($car)->finish_line($time, $regular);
+ if ($self->car($car)->finish_line($time, $regular)) {
+ $processed{$car} = 1;
+ $was_processed = 1;
+ }
}
- if (@processed) {
+
+ if ($was_processed) {
my ($first_car, $lap_max, $time_min)
= $self->recalc_order($time);
- for my $car (@processed) {
- $self->car($car)->recalc_distance($lap_max, $time_min);
+ for my $car (0..5) {
+ if ($processed{$car}) {
+ $self->car($car)->recalc_distance(
+ $lap_max, $time_min
+ );
+ } else {
+ #$self->car($car)->greyout_distance;
+ }
}
}
}