Class: RoadToRubykaigi::Manager::AudioManager

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/road_to_rubykaigi/manager/audio_manager.rb

Constant Summary collapse

SOUND_FILES =
{
  attack: %w[
    lib/road_to_rubykaigi/audio/wav/attack_03.wav
    lib/road_to_rubykaigi/audio/wav/attack_04.wav
    lib/road_to_rubykaigi/audio/wav/attack_05.wav
  ],
  bonus: %w[lib/road_to_rubykaigi/audio/wav/bonus.wav],
  crouch: %w[lib/road_to_rubykaigi/audio/wav/crouch.wav],
  defeat: %w[lib/road_to_rubykaigi/audio/wav/defeat.wav],
  game_over: %w[lib/road_to_rubykaigi/audio/wav/game_over.wav],
  jump: %w[lib/road_to_rubykaigi/audio/wav/jump.wav],
  laptop: %w[lib/road_to_rubykaigi/audio/wav/laptop.wav],
  stun: %w[lib/road_to_rubykaigi/audio/wav/stun.wav],
  walk: %w[
    lib/road_to_rubykaigi/audio/wav/walk_01.wav
    lib/road_to_rubykaigi/audio/wav/walk_02.wav
  ],
}
WALK_SOUND_INTERVAL =
0.25

Instance Method Summary collapse

Instance Method Details

#fanfareObject



33
34
35
36
37
38
39
# File 'lib/road_to_rubykaigi/manager/audio_manager.rb', line 33

def fanfare
  @audio_engine.mute
  @audio_engine.remove_source(@bass_sequencer)
  @audio_engine.remove_source(@melody_sequencer)
  @audio_engine.unmute
  @audio_engine.add_source(@fanfare_sequencer)
end

#fanfare_finished?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/road_to_rubykaigi/manager/audio_manager.rb', line 41

def fanfare_finished?
  @fanfare_sequencer.finished?
end

#game_overObject



45
46
47
48
49
50
51
52
53
54
# File 'lib/road_to_rubykaigi/manager/audio_manager.rb', line 45

def game_over
  @sources[:game_over].first.tap do |source|
    @audio_engine.remove_source(@bass_sequencer)
    @audio_engine.remove_source(@melody_sequencer)
    @audio_engine.add_source(source)
    until source.finished?
      sleep 0.1
    end
  end
end

#walkObject



56
57
58
59
60
61
62
63
# File 'lib/road_to_rubykaigi/manager/audio_manager.rb', line 56

def walk
  now = Time.now
  if (now - @last_walk_time) >= WALK_SOUND_INTERVAL
    @audio_engine.add_source(@sources[:walk][@walk_index])
    @last_walk_time = now
    @walk_index = (@walk_index + 1) % @sources[:walk].size
  end
end