-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsounds.rb
40 lines (34 loc) · 1.01 KB
/
sounds.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
require 'gosu'
require './config'
require './event_handler'
class SoundManager
def initialize
@beeps = (1..3).map do |num|
Gosu::Sample.new("media/beep_#{num}.wav")
end.cycle
@pause = Gosu::Sample.new("media/double_up.wav")
@unpause = Gosu::Sample.new("media/double_down.wav")
EventHandler.register_listener(:fruit_eaten, self, :happy_beep)
EventHandler.register_listener(:gameover, self, :death_knell)
EventHandler.register_listener(:game_paused, self, :pause)
EventHandler.register_listener(:game_unpaused, self, :unpause)
end
def death_knell(context)
beep = @beeps.first.play(Config::SOUND_VOLUME, 2, true)
10.times do |x|
beep.volume = Config::SOUND_VOLUME - (x * 0.05)
beep.speed = 2 - (x * 0.08)
sleep 0.08
end
beep.stop
end
def happy_beep(context)
@beeps.next.play(Config::SOUND_VOLUME)
end
def pause(context)
@pause.play(Config::SOUND_VOLUME)
end
def unpause(context)
@unpause.play(Config::SOUND_VOLUME)
end
end