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},
}
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;
}
}
- $self->gui->set_throttle($self->{order}, $val);
+ $self->gui->set_throttle($self->{order}, $val, $button);
}
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 {
return if !$self->{in_pit_lane};
$self->{in_pit_lane} = 0;
- $self->gui->leave_pit_lane($self->{order});
+ $self->print_state;
}
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});
$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) = @_;