]> www.fi.muni.cz Git - slotcarman.git/blobdiff - SCX/Reader.pm
Rework for OO infrastructure
[slotcarman.git] / SCX / Reader.pm
index c60ec95ea6f7fe65a949f90381efb6b44a690e0c..ea012b49ce1e2dfbf9354797028505fedd813930 100644 (file)
@@ -42,7 +42,7 @@ sub new {
                log_gen   => $log_gen,
                log_start => $now,
                starttime => $now,
-               callback  => $callback,
+               track     => $track,
                bytes     => [],
        };
 
@@ -243,23 +243,17 @@ sub fuel_level_packet {
                || $bytes[2] & 0x0F > 8
                || ($bytes[5] != 0xAA && $bytes[5] != 0xFF);
 
-=comment
-               my @fuel = (0,
-                       $data[1] >> 4, $data[1] & 0x0f,
-                       $data[2] >> 4, $data[2] & 0x0f,
-                       $data[3] >> 4, $data[3] & 0x0f,
-               );
-               for my $car (1..6) {
-                       next if defined $controllers[$car-1]
-                               &&$controllers[$car-1] == $fuel[$car];
-                       
-                       my $progressbar = $builder->get_object(
-                               'progressbar_fuel'.$car);
-                       $progressbar->set_fraction($fuel[$car]/8);
-               }
-=cut
+       my @fuel = (
+               $bytes[1] >> 4, $bytes[1] & 0x0f,
+               $bytes[2] >> 4, $bytes[2] & 0x0f,
+               $bytes[3] >> 4, $bytes[3] & 0x0f,
+       );
 
-       return $msg; # FIXME - to be implemented
+       for my $car (0..5) {
+               $track->car($car)->set_fuel($fuel[$car]);
+       }
+
+       return $msg;
 }
 
 
@@ -362,31 +356,30 @@ sub controller_status_packet {
        my $msg = 'Strange controller_status packet'
                if $fail;
 
-=comment
-               for my $controller (1..6) {
-                       my $byte = $data[$controller];
-                       next if defined $controllers[$controller-1]
-                               && $controllers[$controller-1] == $byte;
-                       $controllers[$controller-1] = $byte;
-
-                       my $progressbar = $builder->get_object(
-                               'progressbar_controller'.$controller);
-                       if ($byte == 0xaa) {
-                               $progressbar->set_text('inactive');
-                               $progressbar->set_fraction(0);
-                               next;
-                       }
-                       my $light = !($byte & 0x20);
-                       my $backbutton = !($byte & 0x10);
-                       my $speed = $byte & 0x0f;
-
-                       my $text = ($backbutton ? '+' : '') . $speed;
-                       $progressbar->set_text($text);
-                       $progressbar->set_fraction($speed / 12);
+       my @fuel = (
+               $bytes[1] >> 4, $bytes[1] & 0x0f,
+               $bytes[2] >> 4, $bytes[2] & 0x0f,
+               $bytes[3] >> 4, $bytes[3] & 0x0f,
+       );
+
+       for my $car (0..5) {
+               my $byte = $bytes[$car];
+
+               if ($byte == 0xAA) {
+                       $track->car($car)->set_throttle(undef);
+                       next;
                }
-=cut
 
-       return $msg; # FIXME - to be implemented
+               my $light = !($byte & 0x20);
+               my $backbutton = !($byte & 0x10);
+               my $throttle = $byte & 0x0f;
+
+               $track->car($car)->set_throttle($throttle);
+               $track->car($car)->set_light($light);
+               $track->car($car)->set_backbutton($backbutton);
+       }
+
+       return $msg;
 }
 
 1;