round => 0,
now => 0,
qualification_setup => -100,
+ no_semaphore => $args->{no_semaphore},
};
bless $self, $class;
if ($time - $self->{qualification_setup} < 1) {
$self->{qualification_running} = 1;
+ } elsif ($self->{no_semaphore}) {
+ $self->{round} = 0;
+ $self->{race_running} = 1;
+ $self->{race_running_since} = $self->{now};
+ $self->{start_in_progress} = undef;
} else {
$self->{round} = 0;
$self->{race_running} = 0;
$self->{best_lap} = undef;
$self->{gui}->show_semaphore(undef);
- $self->{race_running} = 0;
- $self->{qualification_running} = 0;
- $self->{start_in_progress} = 0;
-
- $self->{gui}->time(undef);
- $self->{gui}->best_lap(undef);
-}
-
-sub reset {
- my ($self) = @_;
-
$self->{race_running} = 0;
$self->{qualification_running} = 0;
$self->{start_in_progress} = 0;
$self->{race_finishing} = 0;
- $self->{best_lap} = undef;
- $self->{round} = 0;
- $self->print_rounds;
- $self->{gui}->best_lap(undef);
$self->{gui}->time(undef);
+ $self->{gui}->best_lap(undef);
for my $car (0..5) {
$self->car($car)->reset;
$self->{gui}->rounds($msg);
}
-sub check_best_lap {
- my ($self, $time, $who) = @_;
+sub notify_best_lap {
+ my ($self, $id, $time, $who) = @_;
return if !defined $time || $time == 0;
|| $time < $self->{best_lap}) {
$self->{best_lap} = $time;
$self->{gui}->best_lap($time, $who);
+
+ for my $car (0..5) {
+ $self->car($car)->set_global_best($car == $id);
+ $self->car($car)->print_best_lap;
+ }
return 1;
}
return 0;