include "shared.lua" DEFINE_BASECLASS( "mp_service_browser" ) local JS_Pause = "if(window.MediaPlayer) MediaPlayer.pause();" local JS_Play = "if(window.MediaPlayer) MediaPlayer.play();" local JS_Volume = "if(window.MediaPlayer) MediaPlayer.setVolume(%s * 100);" local JS_Seek = [[ if (window.MediaPlayer) { var seekTime = %s var curTime = MediaPlayer.currentTime var diffTime = Math.abs(curTime - seekTime) if (diffTime > 5) { MediaPlayer.currentTime = seekTime } } ]] local EMBED_HTML = [[ ]] function SERVICE:OnBrowserReady( browser ) -- Resume paused player if self._Paused then self.Browser:RunJavascript( JS_Play ) self._Paused = nil return end BaseClass.OnBrowserReady( self, browser ) local html = EMBED_HTML html = html:Replace("{@audioPath}", self:GetSoundCloudTrackId()) html = html:Replace("{@shouldPlay}", "true") browser:SetHTML(html) end function SERVICE:Pause() BaseClass.Pause( self ) if IsValid(self.Browser) then self.Browser:RunJavascript(JS_Pause) self._Paused = true end end function SERVICE:SetVolume( volume ) if not IsValid(self.Browser) then return end local js = JS_Volume:format( volume ) self.Browser:RunJavascript(js) end function SERVICE:Sync() local seekTime = self:CurrentTime() if IsValid(self.Browser) and self:IsTimed() and seekTime > 0 then self.Browser:RunJavascript(JS_Seek:format(seekTime)) end end function SERVICE:IsMouseInputEnabled() return IsValid( self.Browser ) end