]> www.fi.muni.cz Git - slotcarman.git/blobdiff - SCX/Car.pm
Button reporting, fullscreen mode.
[slotcarman.git] / SCX / Car.pm
index 9f58b5b720f79edd614fc7c853914838403f200f..b6466be7ad12ad3b97ffbf66b82a6a0cf386376a 100644 (file)
@@ -12,10 +12,12 @@ sub new {
                gui      => $args->{gui},
                driver   => $args->{driver} || '--',    
                throttle => undef,
+               button   => undef,
                fuel     => 0,
                lap      => 0,
                laptime  => 0,
                avg_lap  => 0,
+               state    => 'greenflag',
                car_img  => $args->{car_img},
                id       => $args->{id},
                order    => $args->{id},
@@ -43,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;
@@ -59,7 +62,7 @@ sub set_throttle {
                }
        }
 
-       $self->gui->set_throttle($self->{order}, $val);
+       $self->gui->set_throttle($self->{order}, $val, $button);
 }
 
 
@@ -149,7 +152,7 @@ sub enter_pit_lane {
        return if $self->{in_pit_lane};
 
        $self->{in_pit_lane} = 1;
-       $self->gui->enter_pit_lane($self->{order});
+       $self->print_state;
 }
 
 sub leave_pit_lane {
@@ -158,7 +161,7 @@ sub leave_pit_lane {
        return if !$self->{in_pit_lane};
 
        $self->{in_pit_lane} = 0;
-       $self->gui->leave_pit_lane($self->{order});
+       $self->print_state;
 }
 
 sub set_order {
@@ -168,7 +171,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});
@@ -177,11 +181,30 @@ sub set_order {
        $self->gui->set_car_id($self->{order}, $self->{id} + 1);
        $self->gui->set_distance($self->{order},
                $self->{time_diff}, $self->{lap_diff});
+       $self->gui->set_state($self->{order}, $self->{state});
        if ($self->{in_pit_lane}) {
                $self->gui->enter_pit_lane;
        }
 }
 
+sub print_state {
+       my ($self) = @_;
+
+       if ($self->{in_pit_lane}) {
+               $self->{state} = 'pit';
+       } elsif ($self->{running}) {
+               $self->{state} = 'go';
+       } elsif ($self->{finished}) {
+               $self->{state} = 'finished';
+       } elsif ($self->{early_start}) {
+               $self->{state} = 'disqualified';
+       } else {
+               $self->{state} = 'greenflag';
+       }
+
+       $self->gui->set_state($self->{order}, $self->{state});
+}
+       
 sub reset {
        my ($self) = @_;