]> www.fi.muni.cz Git - slotcarman.git/blobdiff - SCX/Car.pm
More GUI work.
[slotcarman.git] / SCX / Car.pm
index 8bb7bb9a00e8c5a1f15f596b19e0587dace11eeb..75aa503c49167763e89eca986f2691f87ee1ca31 100644 (file)
@@ -10,8 +10,13 @@ sub new {
 
        my $self = {
                gui      => $args->{gui},
-               throttle => -1,
-               fuel     => -1,
+               driver   => $args->{driver} || '--',    
+               throttle => undef,
+               fuel     => 0,
+               lap      => 0,
+               laptime  => 0,
+               avg_lap  => 0,
+               car_img  => $args->{car_img},
                id       => $args->{id},
                track    => $args->{track},
        };
@@ -25,14 +30,26 @@ sub gui { return shift->{gui}; }
 
 sub track { return shift->{track}; }
 
+sub same {
+       my ($self, $key, $val) = @_;
+
+       return 1 if !defined $self->{$key} && !defined $val
+               || (defined $self->{$key} && defined $val
+                       && $self->{$key} eq $val);
+
+       $self->{$key} = $val;
+       return undef;
+}
+
 sub set_throttle {
        my ($self, $val) = @_;
 
-       return if (!defined $self->{throttle} && !defined $val)
-               || (defined $self->{throttle} && defined $val
-                       && $self->{throttle} == $val);
+       return if $self->same('throttle', $val);
 
-       $self->{throttle} = $val;
+       if ($self->track->{start_in_progress} && $val) {
+               $self->{early_start} = 1;
+               $self->gui->set_driver('Early start!');
+       }
        $self->gui->set_throttle($self->{order}, $val);
 }
 
@@ -40,11 +57,7 @@ sub set_throttle {
 sub set_fuel {
        my ($self, $val) = @_;
 
-       return if (!defined $self->{fuel} && !defined $val)
-               || (defined $self->{fuel} && defined $val
-                       && $self->{fuel} == $val);
-
-       $self->{fuel} = $val;
+       return if $self->same('fuel', $val);
        $self->gui->set_fuel($self->{order}, $val);
 }
 
@@ -59,22 +72,14 @@ sub set_backbutton {
 sub set_model {
        my ($self, $name) = @_;
 
-       return if (!defined $self->{car_icon} && !defined $name)
-               || (defined $self->{car_icon} && defined $name
-                       && $self->{car_icon} eq $name);
-
-       $self->{car_icon} = $name;
+       return if $self->same('car_img', $name);
        $self->gui->set_car_icon($self->{order}, $name);
 }
 
 sub set_lap {
        my ($self, $lap_nr) = @_;
 
-       return if (!defined $self->{lap} && !defined $lap_nr)
-               || (defined $self->{lap} && defined $lap_nr
-                       && $self->{lap} == $lap_nr);
-
-       $self->{lap} = $lap_nr;
+       return if $self->same('lap', $lap_nr);
        $self->gui->set_lap($self->{order}, defined $lap_nr ? $lap_nr : '--');
        if ($self->track->{race_running} && $self->{lap} > 1) {
                my $now = gettimeofday;
@@ -122,12 +127,8 @@ sub set_laptime {
 sub set_driver {
        my ($self, $driver_name) = @_;
 
-       return if (!defined $self->{driver} && !defined $driver_name)
-               || (defined $self->{driver} && defined $driver_name
-                       && $self->{driver} == $driver_name);
-
-       $self->{driver} = $driver_name;
-       $self->gui->set_name($self->{order}, $driver_name || '--');
+       return if $self->same('driver', $driver_name);
+       $self->gui->set_name($self->{order}, $driver_name);
 }
 
 sub enter_pit_lane {
@@ -153,8 +154,7 @@ sub set_order {
 
        $self->{order} = $pos;
        
-       $self->gui->set_name($self->{order}, $self->{driver}
-               || '--');
+       $self->gui->set_name($self->{order}, $self->{driver});
        $self->gui->set_car_icon($self->{order}, $self->{car_icon});
        $self->gui->set_throttle($self->{order}, $self->{throttle});
        $self->gui->set_lap($self->{order}, defined $self->{lap}