]> www.fi.muni.cz Git - slotcarman.git/blobdiff - SCX/Car.pm
More fixes.
[slotcarman.git] / SCX / Car.pm
index 31149a20dc95d97685578fe690df20363f66a815..91a244d129d83136d146329f133bade6233d8609 100644 (file)
@@ -12,6 +12,7 @@ sub new {
                gui      => $args->{gui},
                driver   => $args->{driver} || '--',    
                throttle => undef,
+               button   => undef,
                fuel     => 0,
                lap      => 0,
                laptime  => 0,
@@ -44,9 +45,10 @@ sub same {
 }
 
 sub set_throttle {
-       my ($self, $val, $time) = @_;
+       my ($self, $val, $button, $time) = @_;
 
-       return if $self->same('throttle', $val);
+       return if $self->same('throttle', $val)
+               && $self->same('button', $button);
 
        if ($self->track->{start_in_progress} && $val) {
                $self->{early_start} = 1;
@@ -60,7 +62,7 @@ sub set_throttle {
                }
        }
 
-       $self->gui->set_throttle($self->{order}, $val);
+       $self->gui->set_throttle($self->{order}, $val, $button);
 }
 
 
@@ -98,6 +100,12 @@ sub set_lap {
        }
                
        return if $self->same('lap', $lap_nr);
+       if (defined $self->{lap} && defined $self->track->{race_rounds}
+               && $self->track->{race_rounds} > 0
+               && $self->{lap} > $self->track->{race_rounds}) {
+               $self->{finished} = 1;
+               $self->print_state;
+       }
        $self->gui->set_lap($self->{order}, $lap_nr);
        if ($self->track->{race_running} && $self->{lap} > 1) {
                my $now = $self->{last_finish_time};
@@ -169,7 +177,8 @@ sub set_order {
        
        $self->gui->set_name($self->{order}, $self->{driver});
        $self->gui->set_car_icon($self->{order}, $self->{car_img});
-       $self->gui->set_throttle($self->{order}, $self->{throttle});
+       $self->gui->set_throttle($self->{order}, $self->{throttle},
+               $self->{button});
        $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});
@@ -189,8 +198,6 @@ sub print_state {
 
        if ($self->{in_pit_lane}) {
                $self->{state} = 'pit';
-       } elsif ($self->{running}) {
-               $self->{state} = 'go';
        } elsif ($self->{finished}) {
                $self->{state} = 'finished';
        } elsif ($self->{early_start}) {
@@ -207,6 +214,7 @@ sub reset {
 
        $self->set_lap(0);
        $self->set_laptime(undef);
+       $self->{finished} = 0;
        $self->{in_pit_lane} = 0;
        $self->{early_start} = undef;
        $self->{last_finish_time} = undef;
@@ -267,6 +275,7 @@ sub recalc_distance {
 
        $self->gui->set_distance($self->{order}, $time,
                $self->{lap_diff}, $self->{time_diff});
+       $self->{grey_diff} = undef;
 }
 
 1;