X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=SCX%2FCar.pm;h=3f2b7a3b7f4cb2f1460dbf4fb5413e02525ba1b3;hb=47a074f4d544cc734a6c053025747ec08149370b;hp=91a244d129d83136d146329f133bade6233d8609;hpb=e5ecd9d0a9df93798930c678f4f4aa58e0e6a10a;p=slotcarman.git diff --git a/SCX/Car.pm b/SCX/Car.pm index 91a244d..3f2b7a3 100644 --- a/SCX/Car.pm +++ b/SCX/Car.pm @@ -17,15 +17,15 @@ sub new { lap => 0, laptime => 0, avg_lap => 0, - state => 'greenflag', car_img => $args->{car_img}, id => $args->{id}, - order => $args->{id}, track => $args->{track}, }; bless $self, $class; + $self->set_order($self->{id}); + return $self; } @@ -130,7 +130,6 @@ sub set_laptime { if (defined $lap_time) { if ($lap_time > 1.0 && !$self->{in_pit_lane} - && $self->track->{race_running} && (!defined $self->{best_lap} || $self->{best_lap} > $lap_time )) { @@ -186,11 +185,8 @@ sub set_order { $self->gui->set_fuel($self->{order}, $self->{fuel}); $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; - } + $self->{time_diff}, $self->{lap_diff}, $self->{grey_diff}); + $self->print_state; } sub print_state { @@ -221,6 +217,8 @@ sub reset { $self->{first_finish_time} = undef; $self->{time_diff} = undef; $self->{lap_diff} = undef; + $self->{total_time} = undef; + $self->{grey_diff} = undef; } sub finish_line { @@ -254,16 +252,19 @@ sub finish_line { } sub recalc_distance { - my ($self, $lap_first, $time_first) = @_; + my ($self, $lap_first, $time_first, $finishing) = @_; return if !defined $lap_first || !defined $self->{lap} || !defined $time_first || !defined $self->{first_finish_time}; - my $time; + $self->{total_time} = undef; + $self->{lap_diff} = undef; + $self->{time_diff} = undef; + $self->{grey_diff} = undef; if ($self->{lap} == $lap_first) { if ($self->{first_finish_time} == $time_first) { - $time = $self->{first_finish_time} + $self->{total_time} = $self->{first_finish_time} - $self->track->{race_running_since}; } else { $self->{time_diff} = $self->{first_finish_time} @@ -273,9 +274,22 @@ sub recalc_distance { $self->{lap_diff} = $lap_first - $self->{lap}; } - $self->gui->set_distance($self->{order}, $time, - $self->{lap_diff}, $self->{time_diff}); - $self->{grey_diff} = undef; + $self->gui->set_distance($self->{order}, $self->{total_time}, + $self->{lap_diff}, $self->{time_diff}, $self->{grey_diff}); + + if ($finishing) { + $self->{finished} = 1; + $self->print_state; + } +} + +sub greyout_distance { + my ($self) = @_; + + return if $self->{grey_diff}; + $self->{grey_diff} = 1; + $self->gui->set_distance($self->{order}, $self->{total_time}, + $self->{lap_diff}, $self->{time_diff}, $self->{grey_diff}); } 1;