mkxp-sunshine/scripts/Audio.rb
2026-08-12 15:47:37 +03:00

138 lines
No EOL
3.7 KiB
Ruby

# Legacy shit
module Audio
@music_group = self.create_group
@sounds_group = self.create_group
@bgm_playback = nil
@bgm_pos = 0
@bgs_playback = nil
@me_playback = nil
@se_playbacks = []
class << self
def bgm_play(path, volume = 100, pitch = 100)
if (@bgm_playback && @bgm_playback.path == path)
return
end
bgm_stop
@bgm_pos = 0
@bgm_playback = self.create_sound(path, false, @music_group)
@bgm_playback.play(-1, volume / 100.0, pitch / 100.0)
end
def bgm_fade(time)
if !@bgm_playback
return
end
@bgm_pos = @bgm_playback.position
@bgm_playback.fade_out(time / 60.0)
end
def bgm_fade_in(time)
if !@bgm_playback
return
end
@bgm_playback.fade_in(time / 60.0, -1)
@bgm_playback.position = @bgm_pos
end
def bgm_stop
if @bgm_playback
@bgm_playback.stop
end
end
def bgm_pos
if @bgm_playback
@bgm_playback.position
end
0
end
def bgs_play(path, volume = 100, pitch = 100)
bgs_stop
if (@bgs_playback)
@bgs_playback.fade_out(0.02)
end
@bgs_playback = self.create_sound(path, false, @sounds_group)
@bgs_playback.play(-1, volume / 100.0, pitch / 100.0)
end
def bgs_fade(time)
@bgs_playback.fade_out(time / 60.0)
end
def bgs_stop
if @bgs_playback
@bgs_playback.stop
end
end
def bgs_pos
if @bgs_playback
@bgs_playback.position
end
0
end
def me_play(path, volume = 100, pitch = 100)
if @bgm_playback && @bgm_playback.playing
@bgm_pos = @bgm_playback.position
end
bgm_fade(20);
@me_playback = self.create_sound(path, true, @sounds_group)
@me_playback.play(0, volume / 100.0, pitch / 100.0)
end
def me_fade(time)
@me_playback.fade_out(time / 60.0)
if @bgm_playback
@bgm_playback.position = @bgm_pos
@bgm_playback.fade_in(time / 60.0)
end
end
def me_stop
if @me_playback
@me_playback.stop
end
end
def se_play(path, volume = 100, pitch = 100)
sound = self.create_sound(path, true, @sounds_group)
sound.play(0, volume / 100.0, pitch / 100.0)
@se_playbacks << sound
end
def se_stop
@se_playbacks.clear
end
def update
if @me_playback && !@me_playback.playing
@me_playback = nil
if @bgm_playback && !@bgm_playback.playing
@bgm_playback.fade_in(40.0 / 60.0)
@bgm_playback.position = @bgm_pos
end
end
@se_playbacks.delete_if { |se| !se.playing }
end
def bgm_volume
self.get_group_volume(@music_group * 100.0)
end
def bgm_volume=(val)
self.set_group_volume(@music_group, val / 100.0)
end
def sfx_volume
self.get_group_volume(@sounds_group)
end
def sfx_volume=(val)
self.set_group_volume(@sounds_group, val / 100.0)
end
def music_group
@music_group
end
def sounds_group
@sounds_group
end
end
end
# meow