From: Jan "Yenya" Kasprzak Date: Mon, 6 Dec 2010 23:27:10 +0000 (+0100) Subject: Another attempt at pit lane handling. X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=slotcarman.git;a=commitdiff_plain;h=40f9541dab84b42d79b20b56154873ff479d5c03 Another attempt at pit lane handling. --- diff --git a/SCX/Car.pm b/SCX/Car.pm index f4a38a0..23caad6 100644 --- a/SCX/Car.pm +++ b/SCX/Car.pm @@ -34,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); } @@ -90,9 +85,9 @@ 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->{best_lap} = $lap_time; @@ -102,7 +97,6 @@ sub set_laptime { $self->gui->set_best_lap($self->{order}, $lap_time, $global); } - } else { $self->gui->set_best_lap($self->{order}, '--'); $self->{best_lap} = undef; @@ -132,10 +126,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) = @_; diff --git a/SCX/GUI.pm b/SCX/GUI.pm index 2148f93..93e76b7 100755 --- a/SCX/GUI.pm +++ b/SCX/GUI.pm @@ -186,7 +186,7 @@ sub enter_pit_lane { sub leave_pit_lane { my ($self, $row) = @_; - $self->set_laptime($row, '--'); + $self->set_laptime($row, 'GO!'); } sub show_semaphore { diff --git a/SCX/Reader.pm b/SCX/Reader.pm index db88e34..72dcb25 100644 --- a/SCX/Reader.pm +++ b/SCX/Reader.pm @@ -392,11 +392,14 @@ sub finish_line_packet { if $fail; my $pit_lane_entry; + my $too_fast; my @cars_finished; for my $i (0..5) { my $byte = $bytes[$i]; $pit_lane_entry = 1 if $byte == 0xF0; + $too_fast = 1 if $byte == 0xFF; + push @cars_finished, $i if $byte == 0xE7; } @@ -404,6 +407,10 @@ sub finish_line_packet { for my $car (@cars_finished) { $self->track->car($car)->enter_pit_lane; } + } else { + for my $car (@cars_finished) { + $self->track->car($car)->leave_pit_lane; + } } return $msg; # FIXME - to be implemented