Game Development Reference
In-Depth Information
7
8
def
self
.
cleanup
9
@@all_instances
.
each
do
|
instances
|
10
instances
.
each
do
|
key, instance
|
11
unless
instance
.
playing?
||
instance
.
paused?
12
instances
.
delete(key)
13
end
14
end
15
end
16
end
17
18
def
initialize
(window, sound_l, sound_r
=
sound_l)
19
@sound_l
=
Gosu
::
Sample
.
new(window, sound_l)
20
# Use same sample in mono -> stereo
21
if
sound_l
==
sound_r
22
@sound_r
=
@sound_l
23
else
24
@sound_r
=
Gosu
::
Sample
.
new(window, sound_r)
25
end
26
@instances
=
{}
27
self
.
class
.
register_instances(
@instances
)
28
end
29
30
def
paused?
(
id
=
:default
)
31
i
=
@instances
[
"
#{
id
}
_l"
]
32
i
&&
i
.
paused?
33
end
34
35
def
playing?
(
id
=
:default
)
36
i
=
@instances
[
"
#{
id
}
_l"
]
37
i
&&
i
.
playing?
38
end
39
40
def
stopped?
(
id
=
:default
)
41
@instances
[
"
#{
id
}
_l"
].
nil?
42
end
43
44
def
play
(
id
=
:default
, pan
= 0
,
45
volume
= 1
, speed
= 1
, looping
=
false
)
46
@instances
[
"
#{
id
}
_l"
] =
@sound_l
.
play_pan(
47
-0.2
,
0
, speed, looping)
48
@instances
[
"
#{
id
}
_r"
] =
@sound_r
.
play_pan(
49
0.2
,
0
, speed, looping)
50
volume_and_pan(
id
, volume, pan)
51
end
52