X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=SCX%2FCar.pm;h=683a2cc77f22023c40249438a2d29ff4136694bc;hb=8709f4aa800632f00a54eeb2c85e20b38fe9f6fa;hp=3f2b7a3b7f4cb2f1460dbf4fb5413e02525ba1b3;hpb=47a074f4d544cc734a6c053025747ec08149370b;p=slotcarman.git diff --git a/SCX/Car.pm b/SCX/Car.pm index 3f2b7a3..683a2cc 100644 --- a/SCX/Car.pm +++ b/SCX/Car.pm @@ -128,20 +128,18 @@ sub set_laptime { $self->gui->set_laptime($self->{order}, $lap_time); - if (defined $lap_time) { - if ($lap_time > 1.0 && !$self->{in_pit_lane} - && (!defined $self->{best_lap} - || $self->{best_lap} > $lap_time - )) { - - $self->{best_lap} = $lap_time; - my $global = $self->{track}->check_best_lap($lap_time, - $self->{driver} - ); - $self->gui->set_best_lap($self->{order}, $lap_time, - $global); - } - } + return if !defined $lap_time || $lap_time <= 1.0 + || $self->{in_pit_lane}; + + return if $self->{finished}; + + return if defined $self->{best_lap} && $self->{best_lap} <= $lap_time; + + $self->{best_lap} = $lap_time; + my $global = $self->{track}->check_best_lap($lap_time, + $self->{driver}); + + $self->gui->set_best_lap($self->{order}, $lap_time, $global); } sub set_driver { @@ -246,6 +244,12 @@ sub finish_line { if ($self->track->{race_running}) { $self->set_lap($self->{lap} + 1); + } elsif ($self->track->{qualification_running} && !$self->{finished}) { + $self->set_lap($self->{lap} + 1); + if ($self->{lap} > $self->track->{race_rounds}) { + $self->{finished} = 1; + $self->print_state; + } } return 1; @@ -283,6 +287,26 @@ sub recalc_distance { } } +sub recalc_qual_distance { + my ($self, $time_first) = @_; + + return if !defined $self->{best_lap} || $self->{best_lap} <= 0; + + $self->{total_time} = undef; + $self->{time_diff} = undef; + $self->{grey_diff} = undef; + $self->{lap_diff} = undef; + + if ($self->{best_lap} == $time_first) { + $self->{total_time} = $self->{best_lap}; + } else { + $self->{time_diff} = $self->{best_lap} - $time_first; + } + + $self->gui->set_distance($self->{order}, $self->{total_time}, + $self->{lap_diff}, $self->{time_diff}, $self->{grey_diff}); +} + sub greyout_distance { my ($self) = @_;