1 | package sound; |
1 | package sound; |
2 | |
2 | |
3 | use KGS::Constants; |
3 | use KGS::Constants; |
4 | |
4 | |
5 | #my $audioserver = new Audio::Play(0); |
|
|
6 | my %sound; |
5 | my %sound; |
7 | $SIG{CHLD} = 'IGNORE'; |
6 | $SIG{CHLD} = 'IGNORE'; |
8 | |
7 | |
9 | for (map +(KGS::Constants::findfile "KGS/kgsueme/sounds/$_"), |
|
|
10 | qw(alarm warning move pass ring connect user_unknown gamestart resign)) { |
8 | for (qw(alarm warning move pass ring connect user_unknown gamestart resign)) { |
11 | local $/; |
9 | my $path = KGS::Constants::findfile "KGS/kgsueme/sounds/$_"; |
|
|
10 | |
12 | open my $snd, "<", $_ |
11 | open my $snd, "<", $path |
13 | or die "$_: $!"; |
12 | or die "$path: $!"; |
14 | binmode $snd; |
13 | binmode $snd; |
15 | |
14 | |
16 | $sound{$_} = new Audio::Data; |
15 | $sound{$_} = new Audio::Data; |
17 | $sound{$_}->Load($snd); |
16 | $sound{$_}->Load ($snd); |
18 | } |
17 | } |
19 | |
18 | |
20 | sub play { |
19 | sub play { |
21 | my ($annoyancy, $sound) = @_; |
20 | my ($annoyancy, $sound) = @_; |
22 | # annoyany 1 => important, annoyance 2 => useful, annoyancy 3 => not useful |
21 | # annoyany 1 => important, annoyance 2 => useful, annoyancy 3 => not useful |
23 | if (fork == 0) { |
22 | if (fork == 0) { |
24 | if (my $audioserver = new Audio::Play(1)) { |
23 | if (my $audioserver = new Audio::Play (1)) { |
25 | $audioserver->play ($sound{$sound}); |
24 | $audioserver->play ($sound{$sound}); |
26 | } |
25 | } |
27 | use POSIX (); |
26 | use POSIX (); |
28 | POSIX::_exit(0); |
27 | POSIX::_exit(0); |
29 | } |
28 | } |