PGRData/Script/matrix/xmanager/XVideoManager.lua

133 lines
3.7 KiB
Lua
Raw Normal View History

XVideoManagerCreator = function()
local XVideoManager = {}
local VideoPlayState = {
Stop = 0,
Playing = 1,
Pause = 2
}
local State = VideoPlayState.Stop
-- local PlayingId = -1
local VideoPlayer = nil
function XVideoManager.PlayMovie(id, callback, needAuto, needSkip)
if not id then
return
end
if State == VideoPlayState.Playing then
XLog.Error("XVideoManager.PlayMovie: Video正在播放")
return
end
local config = XVideoConfig.GetMovieById(id)
2024-09-01 20:49:41 +00:00
if not XDataCenter.UiPcManager.IsPc() and not CS.XResourceManager.HasFile(config.VideoUrl, true) then
if callback then
callback()
end
return
end
if XDataCenter.UiPcManager.IsPc() and not CS.XResourceManager.HasFile(config.VideoUrlPc, true) then
if callback then
callback()
end
return
end
-- PlayingId = id
State = VideoPlayState.Playing
XLuaUiManager.Open("UiVideoPlayer", id, callback, needAuto, needSkip)
end
--停止播放
function XVideoManager.Stop()
if State ~= VideoPlayState.Playing then
return
end
if not VideoPlayer then
return
end
State = VideoPlayState.Stop
-- PlayingId = -1
VideoPlayer = nil
end
function XVideoManager.Pause()
if State ~= VideoPlayState.Playing then
return
end
if not VideoPlayer then
return
end
State = VideoPlayState.Pause
VideoPlayer:Pause()
end
function XVideoManager.Resume()
if State ~= VideoPlayState.Pause then
return
end
if not VideoPlayer then
return
end
State = VideoPlayState.Playing
VideoPlayer:Resume()
end
function XVideoManager.SetVideoPlayer(player)
VideoPlayer = player
end
function XVideoManager.IsPlaying()
return VideoPlayer and VideoPlayer:IsPlaying()
end
-- 注意pv资源需要放在launch目录下和下载pv使用同一份
function XVideoManager.CheckCgUrl()
local needCGBtn = false
local videoUrl = CS.XAudioManager.LaunchVideoAsset
local videoUrlPc = CS.XAudioManager.LaunchVideoAssetPc
local width = CS.XLaunchManager.LaunchConfig:GetInt("LaunchVideoWidth")
local height = CS.XLaunchManager.LaunchConfig:GetInt("LaunchVideoHeight")
local hasVideo = (videoUrl and videoUrl ~= "" and videoUrl ~= "null")
if hasVideo then
local bundleName = CS.XResourceManager.GetBundleUrl(videoUrl)
videoUrl = CS.XBundleManager.GetFile(bundleName)
local bundleNamePc = CS.XResourceManager.GetBundleUrl(videoUrlPc)
videoUrlPc = CS.XBundleManager.GetFile(bundleNamePc)
needCGBtn = true
if CS.UnityEngine.Application.platform == CS.UnityEngine.RuntimePlatform.Android then
local path = videoUrl
local streamingAssetPath = CS.UnityEngine.Application.streamingAssetsPath
local len = string.len(streamingAssetPath)
local prefix = string.sub(videoUrl, 0, len)
if prefix == streamingAssetPath then
videoUrl = string.sub(videoUrl, len + 2)
end
local prefixPc = string.sub(videoUrlPc, 0, len)
if prefixPc == streamingAssetPath then
prefixPc = string.sub(videoUrlPc, len + 2)
end
end
end
return needCGBtn, videoUrl, videoUrlPc, width, height
end
return XVideoManager
end