#!/usr/bin/perl -w package SCX::Car; use strict; sub new { my ($class, $args) = @_; my $self = { gui => $args->{gui}, throttle => -1, fuel => -1, order => $args->{order}, }; bless $self, $class; $self->set_throttle(undef); $self->set_fuel(undef); return $self; } sub gui { return shift->{gui}; } sub set_throttle { my ($self, $val) = @_; return if (!defined $self->{throttle} && !defined $val) || (defined $self->{throttle} && defined $val && $self->{throttle} == $val); $self->{throttle} = $val; $self->gui->set_throttle($self->{order}, $val); } sub set_fuel { my ($self, $val) = @_; return if (!defined $self->{fuel} && !defined $val) || (defined $self->{fuel} && defined $val && $self->{fuel} == $val); $self->{fuel} = $val; $self->gui->set_fuel($self->{order}, $val); } sub set_light { # TODO } sub set_backbutton { # TODO } sub set_model { my ($self, $name) = @_; return if (!defined $self->{car_icon} && !defined $name) || (defined $self->{car_icon} && defined $name && $self->{car_icon} ne $name); $self->{car_icon} = $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; $self->gui->set_lap($self->{order}, $lap_nr || 'N/A'); } sub set_laptime { my ($self, $lap_time) = @_; if (defined $lap_time) { $lap_time = sprintf("%.2f", $lap_time); if (!defined $self->{best_lap} || $self->{best_lap} > $lap_time) { $self->gui->set_best_lap($self->{order}, $lap_time); $self->{best_lap} = $lap_time; } } return if (!defined $self->{laptime} && !defined $lap_time) || (defined $self->{laptime} && defined $lap_time && $self->{laptime} != $lap_time); $self->{laptime} = $lap_time; $self->gui->set_laptime($self->{order}, $lap_time || 'N/A'); } 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_driver($self->{order}, $driver_name || 'N/A'); } 1;