#!/usr/bin/perl -w package SCX::Sound; use strict; sub new { my ($class, $args) = @_; my $self = { data_dir => $args->{data_dir} || './sounds/', muted => 1, }; bless $self, $class; return $self; } sub _play { my ($self, @names) = @_; return if $self->{muted}; @names = map { $self->{data_dir} . '/' . $_ . '.wav' } @names; system (join(' ', 'aplay', @names). ' &'); } sub mute { shift->{muted} = 1; } sub unmute { shift->{muted} = 0; } sub start { shift->_play('start'); } sub filled { shift->_play('filled'); } sub winner { my ($self, $car_id) = @_; $self->_play('winner', $car_id, 'winner'); } sub box { my ($self, $car_id) = @_; $self->_play('box', $car_id, 'box'); } sub best_lap { my ($self, $car_id) = @_; $self->_play('bestlap', $car_id); } 1;