X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=SCX%2FCar.pm;h=165d09ecb66d97f934a0ae9d90302d5e097ca977;hb=cf325864a622b3c2457ca8524fc25f144cd5f7b6;hp=d48cbd37bb8f6b44616df4b1bda4bdeb9823bc79;hpb=9aec101d497a8b3549b7150b0371e18c4c843f6a;p=slotcarman.git diff --git a/SCX/Car.pm b/SCX/Car.pm index d48cbd3..165d09e 100644 --- a/SCX/Car.pm +++ b/SCX/Car.pm @@ -12,6 +12,7 @@ sub new { throttle => -1, fuel => -1, order => $args->{order}, + track => $args->{track}, }; bless $self, $class; @@ -24,6 +25,8 @@ sub new { sub gui { return shift->{gui}; } +sub track { return shift->{track}; } + sub set_throttle { my ($self, $val) = @_; @@ -31,11 +34,6 @@ sub set_throttle { || (defined $self->{throttle} && defined $val && $self->{throttle} == $val); - if ($self->{in_pit_lane} && defined $val && $val > 3) { - delete $self->{in_pit_lane}; - $self->gui->leave_pit_lane; - } - $self->{throttle} = $val; $self->gui->set_throttle($self->{order}, $val); } @@ -80,6 +78,15 @@ sub set_lap { $self->{lap} = $lap_nr; $self->gui->set_lap($self->{order}, defined $lap_nr ? $lap_nr : '--'); + if ($self->track->{race_running} && $self->{lap} > 1) { + my $now = gettimeofday; + my $avg = ($now - $self->track->{race_running_since}) + / ($self->{lap} - 1); + $self->{avg_lap} = $avg; + $self->gui->set_avg_lap($self->{order}, $avg); + } else { + $self->gui->set_avg_lap($self->{order}, '--'); + } } sub set_laptime { @@ -87,15 +94,18 @@ sub set_laptime { 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 + if ($lap_time > 1.0 && !$self->{in_pit_lane} + && (!defined $self->{best_lap} + || $self->{best_lap} > $lap_time )) { - $self->gui->set_best_lap($self->{order}, $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); } - } else { $self->gui->set_best_lap($self->{order}, '--'); $self->{best_lap} = undef; @@ -125,10 +135,21 @@ sub set_driver { sub enter_pit_lane { my ($self) = @_; + return if $self->{in_pit_lane}; + $self->{in_pit_lane} = 1; $self->gui->enter_pit_lane; } +sub leave_pit_lane { + my ($self) = @_; + + return if !$self->{in_pit_lane}; + + $self->{in_pit_lane} = 0; + $self->gui->leave_pit_lane; +} + sub set_order { my ($self, $pos) = @_; @@ -144,6 +165,8 @@ sub set_order { ? $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_fuel($self->{order}, $self->{fuel}); }