e4s-sdk/gamedata/scripts/xrs_stereo.script
2026-06-17 23:06:51 +03:00

64 lines
1.4 KiB
Text

--[[
xStream 02.2008
]]
class "stereo_sound"
function stereo_sound:__init()
self.both = nil
self.end_time=nil
end
function stereo_sound:initialize(sound,lvl)
if self.both then self:stop() end
self.both = sound_object(sound)
self.end_time = nil
if not self.both then
abort("stereo_sound:initialize: Cannot open sound file "..sound)
end
if lvl then
self:set_volume(lvl)
end
end
function stereo_sound:play()
if not db.actor then
return
end
self.both:play(db.actor,0, sound_object.s2d)
self.end_time = time_global() + self.both:length()
return self.end_time
end
function stereo_sound:play_at_time(time, sound, lvl)
self.end_time = nil
self.both:attach_tail(sound)
if lvl then
self:set_volume(lvl)
end
self.both_tail = sound_object(sound)
if not self.both_tail then
abort("stereo_sound:initialize: Cannot open sound file "..sound)
end
self.end_time = time + self.both_tail:length()
return self.end_time
end
function stereo_sound:playing()
return self.both and self.both:playing()
end
function stereo_sound:update(vol)
if vol and self:playing() then self:set_volume(vol)end
end
function stereo_sound:stop()
if self.both and self.both:playing() then self.both:stop() end
end
function stereo_sound:length()
return self.both and self.both:length() or 1
end
function stereo_sound:set_volume(num)
if self.both then self.both.volume=num end
end