Module: Carbuncle::Audio

Defined in:
gems/carbuncle-audio/mrblib/audio.rb

Class Method Summary collapse

Class Method Details

._fadesObject



5
6
7
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 5

def _fades
  @_fades ||= {}
end

._musicsObject



9
10
11
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 9

def _musics
  @_musics ||= {}
end

._pause_musicObject



22
23
24
25
26
27
28
29
30
31
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 22

def _pause_music
  return if @music_playing.present?

  @music_playing = {}
  _musics.each_key do |channel|
    music = _musics[channel]
    @music_playing[channel] = music.playing?
    music.pause if music.playing?
  end
end

._resume_musicObject



33
34
35
36
37
38
39
40
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 33

def _resume_music
  _musics.each_key do |channel|
    if @music_playing[channel]
      music.resume
    end
  end
  @music_playing = nil
end

._soundsObject



13
14
15
16
17
18
19
20
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 13

def _sounds
  @_sounds ||= []
  @_sounds.each do |sound|
    sound.dispose unless sound.playing?
  end
  @_sounds = @_sounds.filter { |i| !i.disposed? }
  @_sounds
end

.bgm_fade(time) ⇒ Object



90
91
92
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 90

def bgm_fade(time)
  music_fade(0, time)
end

.bgm_play(name, volume = 1.0, pitch = 1.0, pos = 0) ⇒ Object



78
79
80
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 78

def bgm_play(name, volume = 1.0, pitch = 1.0, pos = 0)
  music_play(name, volume, pitch, pos, 0)
end

.bgm_posObject



86
87
88
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 86

def bgm_pos
  music_position(0)
end

.bgm_stopObject



82
83
84
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 82

def bgm_stop
  music_stop(0)
end

.bgs_fade(time) ⇒ Object



106
107
108
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 106

def bgs_fade(time)
  music_fade(0, time)
end

.bgs_play(name, volume = 1.0, pitch = 1.0, pos = 0) ⇒ Object



94
95
96
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 94

def bgs_play(name, volume = 1.0, pitch = 1.0, pos = 0)
  music_play(name, volume, pitch, pos, 1)
end

.bgs_posObject



102
103
104
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 102

def bgs_pos
  music_position(1)
end

.bgs_stopObject



98
99
100
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 98

def bgs_stop
  music_stop(1)
end

.me_play(name, volume = 1.0, pitch = 1.0) ⇒ Object



110
111
112
113
114
115
116
117
118
119
120
121
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 110

def me_play(name, volume = 1.0, pitch = 1.0)
  if @me.present?
    @me.stop
    @me.dispose
  end
  _pause_music
  @me = Sound.new(name)
  @me.volume = volume
  @me.pitch = pitch
  @me.play
  self
end

.music_fade(channel, time) ⇒ Object



67
68
69
70
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 67

def music_fade(channel, time)
  _fades[channel] = time
  self
end

.music_play(name, volume = 1.0, pitch = 1.0, pos = 0, channel = 0) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 42

def music_play(name, volume = 1.0, pitch = 1.0, pos = 0, channel = 0)
  old_music = _musics[channel]
  if old_music.present?
    old_music.stop if old_music.playing?
    old_music.dispose
  end
  music = Carbuncle::Music.new(name)
  music.volume = volume
  music.pitch = pitch
  music.position = pos
  music.play
  _musics[channel] = music
  self
end

.music_position(channel) ⇒ Object



72
73
74
75
76
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 72

def music_position(channel)
  return _musics[channel].position if _musics[channel].present?

  0
end

.music_stop(channel) ⇒ Object



57
58
59
60
61
62
63
64
65
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 57

def music_stop(channel)
  old_music = _musics[channel]
  return self unless old_music.present?

  old_music.stop if old_music.playing?
  old_music.dispose
  _musics.delete(channel)
  self
end

.se_play(name, volume = 1.0, pitch = 1.0) ⇒ Object



132
133
134
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 132

def se_play(name, volume = 1.0, pitch = 1.0)
  sound_play(name, volume, pitch)
end

.se_stopObject



136
137
138
139
140
141
142
143
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 136

def se_stop
  _sounds.each do |sound|
    sound.stop
    sound.dispose
  end
  _sounds.clear
  self
end

.sound_play(name, volume = 1.0, pitch = 1.0) ⇒ Object



123
124
125
126
127
128
129
130
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 123

def sound_play(name, volume = 1.0, pitch = 1.0)
  sound = Carbuncle::Sound.new(name)
  sound.volume = volume
  sound.pitch = pitch
  sound.play
  _sounds << sound
  self
end

.update(dt) ⇒ Object



145
146
147
148
149
150
151
152
153
# File 'gems/carbuncle-audio/mrblib/audio.rb', line 145

def update(dt)
  if @me.present? && !@me.playing?
    @me.dispose
    @me = nil
    _resume_music
  end
  _musics.each_value(&:update)
  self
end