2023-07-14 19:35:33 +00:00
|
|
|
|
local CSTextManagerGetText = CS.XTextManager.GetText
|
|
|
|
|
local tableInsert = table.insert
|
|
|
|
|
local tableSort = table.sort
|
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local XPhotographSet = require("XEntity/XPhotograph/XPhotographSet")
|
|
|
|
|
|
2023-07-14 19:35:33 +00:00
|
|
|
|
XPhotographManagerCreator = function()
|
|
|
|
|
local XPhotographManager = {}
|
|
|
|
|
local SceneIdList = {} -- 场景Id列表
|
|
|
|
|
local SceneIdListInTime = {} -- 当前时间可以显示的场景列表Id
|
|
|
|
|
local OwnCharDatas = {} -- 拥有的角色数据表
|
|
|
|
|
local OwnCharDatasDic = {} -- 拥有的角色数据字典
|
|
|
|
|
local HasSceneIdDic = {} -- 拥有的场景Id字典
|
|
|
|
|
local TextureCache = {} -- 已保存图片缓存
|
|
|
|
|
local ShareSDKIds = {} -- 当前渠道分享类型
|
|
|
|
|
local CurSceneId = 0
|
|
|
|
|
local CurSelectSceneId = 0 -- 当前选中的场景ID
|
|
|
|
|
local DirPath = "" -- 准备分享的照片保存路径
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local PhotographSetKey = string.format("PhotographSetKey_%s_Setting", XPlayer.Id)
|
|
|
|
|
local PhotographSetData
|
2023-07-14 19:35:33 +00:00
|
|
|
|
|
|
|
|
|
local PHOTOGRAPH_PROTO = {
|
|
|
|
|
ChangeDisplayRequest = "ChangeDisplayRequest",
|
|
|
|
|
ShareBackgroundRequest = "ShareBackgroundRequest", -- 分享消息
|
|
|
|
|
PhotoBackgroundRequest = "PhotoBackgroundRequest", -- 拍照消息
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
|
-- 背景场景预览状态
|
|
|
|
|
local PreviewState = XPhotographConfigs.BackGroundState.Full
|
|
|
|
|
local PreviewSceneId = nil
|
|
|
|
|
|
2023-07-14 19:35:33 +00:00
|
|
|
|
function XPhotographManager.Init()
|
|
|
|
|
for id in pairs(XPhotographConfigs.GetSceneTemplates()) do
|
|
|
|
|
tableInsert(SceneIdList, id)
|
|
|
|
|
end
|
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_CHARACTER_FIRST_GET, function() XPhotographManager.InitCharacterList() end)
|
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_FAVORABILITY_LEVELCHANGED, function() XPhotographManager.InitCharacterList() end)
|
|
|
|
|
|
|
|
|
|
if XUserManager.Platform == XUserManager.PLATFORM.Android then
|
|
|
|
|
DirPath = CS.UnityEngine.Application.persistentDataPath .. "/../../../../DCIM/ScreenShot/"
|
|
|
|
|
elseif XUserManager.Platform == XUserManager.PLATFORM.IOS then
|
|
|
|
|
DirPath = CS.UnityEngine.Application.persistentDataPath .. "/"
|
|
|
|
|
elseif XUserManager.Platform == XUserManager.PLATFORM.Win then
|
|
|
|
|
DirPath = CS.UnityEngine.Application.persistentDataPath .. "/PhotoAlbum/"
|
|
|
|
|
else
|
|
|
|
|
DirPath = CS.UnityEngine.Application.persistentDataPath .. "/"
|
|
|
|
|
end
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local cacheData = XSaveTool.GetData(PhotographSetKey)
|
|
|
|
|
PhotographSetData = XPhotographSet.New()
|
|
|
|
|
if cacheData then
|
|
|
|
|
PhotographSetData:Update(cacheData.LogoValue, cacheData.InfoValue, cacheData.OpenLevel, cacheData.OpenUId)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetSetData()
|
|
|
|
|
return PhotographSetData
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.SaveSetData()
|
|
|
|
|
if not PhotographSetData then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
XSaveTool.SaveData(PhotographSetKey, PhotographSetData:GetSampleData())
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.InitSharePlatform(list)
|
|
|
|
|
if not list then return end
|
|
|
|
|
local channelId = 0 -- 默认值
|
|
|
|
|
if XUserManager.IsUseSdk() then
|
|
|
|
|
channelId = CS.XHgSdkAgent.GetChannelId()
|
|
|
|
|
end
|
|
|
|
|
for _,config in pairs(list) do
|
|
|
|
|
if config.Id == channelId then
|
|
|
|
|
ShareSDKIds = config.SdkId
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.InitCurSceneId(sceneId)
|
|
|
|
|
CurSceneId = sceneId
|
|
|
|
|
CurSelectSceneId = CurSceneId
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.HandlerPhotoLoginData(data)
|
|
|
|
|
local haveSceneIds = data.HaveBackgroundIds
|
|
|
|
|
HasSceneIdDic = {}
|
|
|
|
|
for _, id in pairs(haveSceneIds) do
|
|
|
|
|
HasSceneIdDic[id] = id
|
|
|
|
|
end
|
|
|
|
|
XPhotographManager.SortSceneIdList() -- 场景列表排序
|
|
|
|
|
XPhotographManager.InitCharacterList() -- 网络数据下发时可以初始化一下角色数据列表 避免获取时再初始化
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.HandlerAddPhotoScene(data)
|
|
|
|
|
HasSceneIdDic[data.BackgroundId] = data.BackgroundId
|
|
|
|
|
XPhotographManager.SortSceneIdList()
|
2024-09-01 20:49:41 +00:00
|
|
|
|
--获得新场景时打开提示窗
|
|
|
|
|
XLuaUiManager.Open('UiSceneSettingObtain',data)
|
|
|
|
|
--新获得场景需要刷新终端红点
|
|
|
|
|
XEventManager.DispatchEvent(XEventId.EVENT_MAINUI_TERMINAL_STATUS_CHANGE)
|
|
|
|
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_MAINUI_TERMINAL_STATUS_CHANGE)
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetSceneIdList()
|
|
|
|
|
XPhotographManager.InitSceneIdListInTime()
|
|
|
|
|
return SceneIdListInTime
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.InitSceneIdListInTime()
|
|
|
|
|
local nowTimeStamp = XTime.GetServerNowTimestamp()
|
|
|
|
|
SceneIdListInTime = {}
|
|
|
|
|
for _, id in ipairs(SceneIdList) do
|
|
|
|
|
local timeStr = XPhotographManager.GetSceneTemplateById(id).ShowStr
|
|
|
|
|
if not timeStr or timeStr == "" then
|
|
|
|
|
tableInsert(SceneIdListInTime, id)
|
|
|
|
|
else
|
|
|
|
|
if XTime.ParseToTimestamp(timeStr) <= nowTimeStamp then
|
|
|
|
|
tableInsert(SceneIdListInTime, id)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.SortSceneIdList()
|
2024-09-01 20:49:41 +00:00
|
|
|
|
--tableSort(SceneIdList, function(idA, idB)
|
|
|
|
|
-- if idA ~= CurSelectSceneId and idB ~= CurSelectSceneId then
|
|
|
|
|
-- local isSceneAHave = XPhotographManager.CheckSceneIsHaveById(idA)
|
|
|
|
|
-- local isSceneBHave = XPhotographManager.CheckSceneIsHaveById(idB)
|
|
|
|
|
-- if isSceneAHave == isSceneBHave then
|
|
|
|
|
-- local priorityA = XPhotographManager.GetSceneTemplateById(idA).Priority
|
|
|
|
|
-- local priorityB = XPhotographManager.GetSceneTemplateById(idB).Priority
|
|
|
|
|
-- if priorityA == priorityB then
|
|
|
|
|
-- return idA < idB
|
|
|
|
|
-- else
|
|
|
|
|
-- return priorityA > priorityB
|
|
|
|
|
-- end
|
|
|
|
|
-- else
|
|
|
|
|
-- return isSceneAHave
|
|
|
|
|
-- end
|
|
|
|
|
-- else
|
|
|
|
|
-- return idA == CurSelectSceneId
|
|
|
|
|
-- end
|
|
|
|
|
--end)
|
2023-07-14 19:35:33 +00:00
|
|
|
|
tableSort(SceneIdList, function(idA, idB)
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local priorityA = XPhotographManager.GetSceneTemplateById(idA).Priority
|
|
|
|
|
local priorityB = XPhotographManager.GetSceneTemplateById(idB).Priority
|
|
|
|
|
return priorityA > priorityB
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetSceneIdByIndex(index)
|
|
|
|
|
if not SceneIdListInTime or #SceneIdListInTime <= 0 then
|
|
|
|
|
XPhotographManager.InitSceneIdListInTime()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return SceneIdListInTime[index]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetSceneTemplateById(id)
|
|
|
|
|
return XPhotographConfigs.GetSceneTemplateById(id)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.InitCharacterList()
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local allCharDatas = XMVCA.XCharacter:GetCharacterList()
|
2023-07-14 19:35:33 +00:00
|
|
|
|
local curAssistantId = XDataCenter.DisplayManager.GetDisplayChar().Id
|
|
|
|
|
|
|
|
|
|
OwnCharDatas = {}
|
|
|
|
|
for _, v in pairs(allCharDatas or {}) do
|
|
|
|
|
local characterId = v.Id
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local isOwn = XMVCA.XCharacter:IsOwnCharacter(characterId)
|
2023-07-14 19:35:33 +00:00
|
|
|
|
if isOwn then
|
|
|
|
|
local name = XCharacterConfigs.GetCharacterName(characterId)
|
|
|
|
|
local tradeName = XCharacterConfigs.GetCharacterTradeName(characterId)
|
|
|
|
|
local logName = XCharacterConfigs.GetCharacterLogName(characterId)
|
|
|
|
|
local enName = XCharacterConfigs.GetCharacterEnName(characterId)
|
|
|
|
|
|
|
|
|
|
tableInsert(OwnCharDatas, {
|
|
|
|
|
Id = characterId,
|
|
|
|
|
Name = name,
|
|
|
|
|
TradeName = tradeName,
|
|
|
|
|
LogName = logName,
|
|
|
|
|
EnName = enName,
|
|
|
|
|
TrustLv = v.TrustLv or 1,
|
|
|
|
|
Selected = (curAssistantId == characterId),
|
|
|
|
|
})
|
|
|
|
|
OwnCharDatasDic[characterId] = {
|
|
|
|
|
Name = name,
|
|
|
|
|
TradeName = tradeName,
|
|
|
|
|
LogName = logName,
|
|
|
|
|
EnName = enName,
|
|
|
|
|
TrustLv = v.TrustLv or 1,
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
tableSort(OwnCharDatas, function(dataA, dataB)
|
|
|
|
|
if dataA.TrustLv == dataB.TrustLv then
|
|
|
|
|
return dataA.Id < dataB.Id
|
|
|
|
|
else
|
|
|
|
|
return dataA.TrustLv > dataB.TrustLv
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetCharacterList()
|
|
|
|
|
if not OwnCharDatas or #OwnCharDatas <= 0 then
|
|
|
|
|
XPhotographManager.InitCharacterList()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if not OwnCharDatas or #OwnCharDatas <= 0 then
|
|
|
|
|
return nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return OwnCharDatas
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetCharacterDataByIndex(index)
|
|
|
|
|
if not OwnCharDatas or #OwnCharDatas <= 0 then
|
|
|
|
|
XPhotographManager.InitCharacterList()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if not OwnCharDatas or #OwnCharDatas <= 0 then
|
|
|
|
|
return nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return OwnCharDatas[index]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetCharacterDataById(id)
|
|
|
|
|
if not OwnCharDatasDic then
|
|
|
|
|
return nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return OwnCharDatasDic[id]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.CheckSceneIsHaveById(id)
|
|
|
|
|
if HasSceneIdDic and HasSceneIdDic[id] then
|
|
|
|
|
return true
|
|
|
|
|
else
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetCurSceneId()
|
2024-09-01 20:49:41 +00:00
|
|
|
|
return PreviewSceneId or CurSceneId
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetSceneIndexById(sceneId)
|
|
|
|
|
if not SceneIdListInTime or #SceneIdListInTime <= 0 then
|
|
|
|
|
XPhotographManager.InitSceneIdListInTime()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
for index, id in ipairs(SceneIdListInTime) do
|
|
|
|
|
if sceneId == id then
|
|
|
|
|
return index
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetCharIndexById(charId)
|
|
|
|
|
for index, data in ipairs(OwnCharDatas) do
|
|
|
|
|
if charId == data.Id then
|
|
|
|
|
return index
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
end
|
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
|
function XPhotographManager.GetFashionIndexByFashionList(fashionId, fashionList)
|
|
|
|
|
for index, fId in ipairs(fashionList) do
|
|
|
|
|
if fId == fashionId then
|
2023-07-14 19:35:33 +00:00
|
|
|
|
return index
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
end
|
2024-09-01 20:49:41 +00:00
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetFashionIndexById(charId, fashionId)
|
|
|
|
|
local list = XDataCenter.FashionManager.GetCurrentTimeFashionByCharId(charId)
|
|
|
|
|
for i, fId in ipairs(list or {}) do
|
|
|
|
|
if fashionId == fId then
|
|
|
|
|
return i
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return 0
|
|
|
|
|
end
|
2023-07-14 19:35:33 +00:00
|
|
|
|
|
|
|
|
|
function XPhotographManager.SharePhoto(photoName, texture, platformType, shareText)
|
|
|
|
|
if not photoName or not texture then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local writeDesc = CS.XTextManager.GetText("PremissionWriteDesc")
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local tipFunc = XLuaUiManager.IsUiShow("UiPhotographPortrait") and XUiManager.TipPortraitText or XUiManager.TipText
|
2023-07-14 19:35:33 +00:00
|
|
|
|
XPermissionManager.TryGetPermission(CS.XPermissionEnum.WRITE_EXTERNAL_STORAGE, writeDesc, function(isWriteGranted, dontTip)
|
|
|
|
|
if not isWriteGranted then
|
2024-09-01 20:49:41 +00:00
|
|
|
|
tipFunc("PremissionDesc")
|
2023-07-14 19:35:33 +00:00
|
|
|
|
XLog.Debug("获取权限错误_NotisWriteGranted")
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if not XPhotographManager.IsInTextureCache(photoName) then
|
|
|
|
|
CS.XTool.SavePhotoAlbumImg(photoName, texture, function(errorCode)
|
|
|
|
|
if errorCode > 0 then
|
2024-09-01 20:49:41 +00:00
|
|
|
|
tipFunc("PremissionDesc") -- ios granted总是true, 权限未开通code返回1
|
2023-07-14 19:35:33 +00:00
|
|
|
|
XLog.Debug("照片保存失败 Code:"..errorCode)
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
XPhotographManager.SetTextureCache(photoName)
|
|
|
|
|
XPhotographManager.DoShare(photoName, platformType, shareText)
|
|
|
|
|
end)
|
|
|
|
|
else
|
|
|
|
|
XPhotographManager.DoShare(photoName, platformType, shareText)
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
local SharePhotoName
|
|
|
|
|
function XPhotographManager.DoShare(photoName, platformType, shareText)
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local tipFunc = XLuaUiManager.IsUiShow("UiPhotographPortrait") and XUiManager.TipPortraitText or XUiManager.TipText
|
2023-07-14 19:35:33 +00:00
|
|
|
|
if platformType == XPlatformShareConfigs.PlatformType.Local then -- 本地保存
|
2024-09-01 20:49:41 +00:00
|
|
|
|
tipFunc("PhotoModeSaveSuccess")
|
2023-07-14 19:35:33 +00:00
|
|
|
|
else
|
|
|
|
|
local cfg = XPhotographConfigs.GetShareInfoByType(platformType)
|
|
|
|
|
local fileFullPath = string.format("%s%s%s", DirPath, photoName, ".png")
|
|
|
|
|
if shareText == nil then
|
|
|
|
|
shareText = cfg.Text
|
|
|
|
|
end
|
|
|
|
|
SharePhotoName = photoName
|
|
|
|
|
-- XLog.Debug("fileFullPath", fileFullPath, "cfg.Text", cfg.Text, "platformType", platformType, "XPlatformShareConfigs.ShareType.Image", XPlatformShareConfigs.ShareType.Image, "XPhotographManager.ShareCallback", XPhotographManager.ShareCallback)
|
|
|
|
|
XPlatformShareManager.Share(XPlatformShareConfigs.ShareType.Image, platformType, XPhotographManager.ShareCallback, fileFullPath, shareText, cfg.Param[1], cfg.Param[2], false)
|
|
|
|
|
XNetwork.Send(PHOTOGRAPH_PROTO.ShareBackgroundRequest, {})
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.ShareCallback(result)
|
|
|
|
|
-- XLog.Debug("ShareCallback result:", result)
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local tipFunc = XLuaUiManager.IsUiShow("UiPhotographPortrait") and XUiManager.TipPortraitText or XUiManager.TipText
|
2023-07-14 19:35:33 +00:00
|
|
|
|
if result == XPlatformShareConfigs.ShareResult.Successful then
|
2024-09-01 20:49:41 +00:00
|
|
|
|
tipFunc("PhotoModeShareSuccess")
|
2023-07-14 19:35:33 +00:00
|
|
|
|
XEventManager.DispatchEvent(XEventId.EVENT_PHOTO_SHARE_SUCCESS, SharePhotoName)
|
|
|
|
|
elseif result == XPlatformShareConfigs.ShareResult.Canceled then
|
2024-09-01 20:49:41 +00:00
|
|
|
|
tipFunc("PhotoModeShareCancel")
|
2023-07-14 19:35:33 +00:00
|
|
|
|
elseif result == XPlatformShareConfigs.ShareResult.Failed then
|
2024-09-01 20:49:41 +00:00
|
|
|
|
tipFunc("PhotoModeShareFailed")
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
SharePhotoName = nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.SetTextureCache(photoName)
|
|
|
|
|
tableInsert(TextureCache, photoName)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.IsInTextureCache(photoName)
|
|
|
|
|
for i = #TextureCache, 1, -1 do
|
|
|
|
|
if TextureCache[i] == photoName then
|
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.ClearTextureCache()
|
|
|
|
|
if XUserManager.Platform == XUserManager.PLATFORM.IOS then
|
|
|
|
|
if next(TextureCache) then
|
|
|
|
|
for _, textureName in pairs(TextureCache) do
|
|
|
|
|
local fileFullPath = string.format("%s%s%s", DirPath, textureName, ".png")
|
|
|
|
|
CS.XTool.DeleteFile(fileFullPath)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
TextureCache = {}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.ChangeDisplay(sceneId, charId, fashionId, cb)
|
|
|
|
|
if not XPhotographManager.CheckSceneIsHaveById(sceneId) then -- 场景未拥有
|
|
|
|
|
XUiManager.TipError(CSTextManagerGetText("PhotoModeChangeFailedNotHasBackground"))
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if not XDataCenter.CharacterManager.IsOwnCharacter(charId) then -- 角色未拥有
|
|
|
|
|
XUiManager.TipError(CSTextManagerGetText("PhotoModeChangeFailedNotHasCharacter"))
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if not XDataCenter.FashionManager.CheckHasFashion(fashionId) then -- 涂装未拥有
|
|
|
|
|
XUiManager.TipError(CSTextManagerGetText("PhotoModeChangeFailedNotHasFashion"))
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
XNetwork.Call(PHOTOGRAPH_PROTO.ChangeDisplayRequest, { BackgroundId = sceneId, CharId = charId, FashionId = fashionId }, function(res)
|
|
|
|
|
if res.Code ~= XCode.Success then
|
|
|
|
|
XUiManager.TipCode(res.Code)
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
CurSceneId = sceneId
|
|
|
|
|
XPhotographManager.SortSceneIdList()
|
|
|
|
|
|
|
|
|
|
local curDisplayCharId = XDataCenter.DisplayManager.GetDisplayChar().Id
|
2024-09-01 20:49:41 +00:00
|
|
|
|
-- if curDisplayCharId ~= charId then
|
|
|
|
|
-- XDataCenter.SignBoardManager.ChangeDisplayCharacter(charId)
|
|
|
|
|
-- end
|
|
|
|
|
-- XDataCenter.DisplayManager.SetDisplayCharByCharacterId(charId)
|
|
|
|
|
-- XPlayer.SetDisplayCharId(charId)
|
|
|
|
|
XPlayer.SetDisplayCharIdList(res.DisplayCharIdList)
|
|
|
|
|
--下一次拿看板娘队列不要进行随机
|
|
|
|
|
XDataCenter.DisplayManager.SetNextDisplayChar(charId)
|
|
|
|
|
XEventManager.DispatchEvent(XEventId.EVENT_PHOTO_SYNC_CHANGE_TO_MAIN)
|
2023-07-14 19:35:33 +00:00
|
|
|
|
if cb then
|
|
|
|
|
cb()
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetShareSDKIds()
|
|
|
|
|
return ShareSDKIds
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetShareTypeByIndex(index)
|
|
|
|
|
if not ShareSDKIds then
|
|
|
|
|
return nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return ShareSDKIds[index]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.SetCurSelectSceneId(SceneId)
|
|
|
|
|
local sceneId = SceneId
|
|
|
|
|
if not SceneId then
|
|
|
|
|
sceneId = CurSceneId
|
|
|
|
|
end
|
|
|
|
|
CurSelectSceneId = sceneId
|
2024-09-01 20:49:41 +00:00
|
|
|
|
--XPhotographManager.SortSceneIdList()
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.GetCurSelectSceneId()
|
|
|
|
|
return CurSelectSceneId
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XPhotographManager.SendPhotoGraphRequest()
|
|
|
|
|
XNetwork.Send(PHOTOGRAPH_PROTO.PhotoBackgroundRequest, {})
|
|
|
|
|
end
|
2024-09-01 20:49:41 +00:00
|
|
|
|
|
|
|
|
|
-- 设置场景预览状态
|
|
|
|
|
function XPhotographManager.SetDefaultPreviewState()
|
|
|
|
|
PreviewState = XPhotographConfigs.BackGroundState.Full
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 切换场景预览状态
|
|
|
|
|
--@ fitterEvent: 是否仅修改状态的值而不进行事件广播
|
|
|
|
|
function XPhotographManager.UpdatePreviewState(isFull,fitterEvent)
|
|
|
|
|
if isFull then
|
|
|
|
|
PreviewState = XPhotographConfigs.BackGroundState.Full
|
|
|
|
|
else
|
|
|
|
|
PreviewState = XPhotographConfigs.BackGroundState.Low
|
|
|
|
|
end
|
|
|
|
|
if not fitterEvent then
|
|
|
|
|
XEventManager.DispatchEvent(XEventId.EVENT_SCENE_PREVIEW_STATE_CHANGE)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 获取场景预览状态
|
|
|
|
|
function XPhotographManager.GetPreviewState()
|
|
|
|
|
return PreviewState
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 设置场景预览的场景Id
|
|
|
|
|
function XPhotographManager.SetPreviewSceneId(sceneId)
|
|
|
|
|
PreviewSceneId = sceneId
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 清空场景预览Id防止返回UiMain场景错误
|
|
|
|
|
function XPhotographManager.ClearPreviewSceneId()
|
|
|
|
|
PreviewSceneId = nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 获取场景预览状态相关键名
|
|
|
|
|
function XPhotographManager.GetSceneStateKey(sceneId)
|
|
|
|
|
return tostring(XPlayer.Id)..'scene_'..tostring(sceneId)..'_use_state'
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 打开指定场景的预览界面
|
|
|
|
|
function XPhotographManager.OpenScenePreview(sceneId)
|
|
|
|
|
if not sceneId or not XTool.IsNumberValid(sceneId) then return end
|
|
|
|
|
|
|
|
|
|
XDataCenter.PhotographManager.SetPreviewSceneId(sceneId)
|
|
|
|
|
XDataCenter.GuideManager.SetDisableGuide(true)
|
|
|
|
|
XEventManager.DispatchEvent(XEventId.EVENT_SCENE_UIMAIN_RIGHTMIDTYPE_CHANGE, 1) --1即UiMain的Main状态
|
|
|
|
|
XLuaUiManager.Open("UiMain")
|
|
|
|
|
XLuaUiManager.Open("UiSceneMainPreview", sceneId,XPhotographConfigs.PreviewOpenType.SceneSetting)
|
|
|
|
|
end
|
2023-07-14 19:35:33 +00:00
|
|
|
|
|
|
|
|
|
XPhotographManager.Init()
|
|
|
|
|
return XPhotographManager
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
XRpc.NotifyBackgroundLoginData = function(data)
|
|
|
|
|
XDataCenter.PhotographManager.HandlerPhotoLoginData(data)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
XRpc.NotifyAddBackground = function(data)
|
|
|
|
|
XDataCenter.PhotographManager.HandlerAddPhotoScene(data)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
XRpc.NotifySharePlatformConfigList = function (data)
|
|
|
|
|
XDataCenter.PhotographManager.InitSharePlatform(data)
|
|
|
|
|
end
|