ro-table/Asstes/Resources/Script/FrameWork/GUI/view/PhotographResultPanel.txt
2025-06-04 05:02:57 +08:00

446 lines
14 KiB
Plaintext

PhotographResultPanel = class("PhotographResultPanel", ContainerView)
PhotographResultPanel.ViewType = UIViewType.PopUpLayer
PhotographResultPanel.SceneSpotPhotoFrame = {
icon = "photo_bg_logo",bg = "photo_bg_bottom5"
}
autoImport("PersonalPicturePanel")
autoImport("PermissionUtil")
PhotographResultPanel.picNameName = "RO_Picture"
PhotographResultPanel.SceneryKey = "PhotographResultPanel_SceneryKey%d"
function PhotographResultPanel:Init()
self:initView()
self:AddEventListener()
self:AddViewEvts()
end
function PhotographResultPanel:OnEnter( )
-- body
self:initData()
end
function PhotographResultPanel:AddViewEvts()
self:AddListenEvt(MySceneryPictureManager.MySceneryOriginPhotoDownloadCompleteCallback ,self.photoCompleteCallback);
self:AddListenEvt(MySceneryPictureManager.MySceneryOriginPhotoDownloadProgressCallback ,self.photoProgressCallback);
self:AddListenEvt(MySceneryPictureManager.MySceneryOriginUpCompleteCallback ,self.photoUpCallback);
self:AddListenEvt(MySceneryPictureManager.MySceneryOriginUpErrorCallback ,self.photoUpCallback);
self:AddListenEvt(ServiceEvent.PhotoCmdPhotoUpdateNtf,self.PhotoCmdPhotoUpdateNtf);
end
function PhotographResultPanel:PhotoCmdPhotoUpdateNtf( note )
local data = note.body
if(data.opttype == PhotoCmd_pb.EPHOTOOPTTYPE_REPLACE or data.opttype == PhotoCmd_pb.EPHOTOOPTTYPE_ADD)then
self.noClose = false
self:startUploadPhoto(data.photo.index,data.photo.time)
end
end
function PhotographResultPanel:photoCompleteCallback( note )
-- body
local data = note.body
if(self.scenicSpotID == data.index)then
self:completeCallback(data.byte)
end
end
function PhotographResultPanel:photoProgressCallback( note )
-- body
local data = note.body
-- printRed("PersonalPictureDetailPanel photoProgressCallback",data.progress)
if(self.scenicSpotID == data.index)then
self:progressCallback(data.progress)
end
end
function PhotographResultPanel:photoUpCallback( note )
-- body
local data = note.body
-- printRed("PersonalPictureDetailPanel photoProgressCallback",data.progress)
if(self.scenicSpotID == data.index)then
self.hasUploadScenery = true
self.saveAdventureBtnCollider.enabled = true
end
end
function PhotographResultPanel:initData( )
-- body
self.scenicSpotID = self.viewdata.scenicSpotID
self.questData = self.viewdata.questData
self.charid = self.viewdata.charid
self.anglez = self.viewdata.anglez
self.texture = self.viewdata.texture
local cameraData = self.viewdata.cameraData
local icon = self:FindGO("icon"):GetComponent(UISprite)
-- local tiledBg = self:FindGO("tiledBg"):GetComponent(UISprite)
if(cameraData and cameraData.TiledBg and cameraData.TiledBg ~= "")then
-- tiledBg.spriteName = cameraData.TiledBg
end
if(cameraData and cameraData.Icon and cameraData.Icon ~= "")then
icon.spriteName = cameraData.Icon
end
self:Hide(self.saveAdventureBtn)
self:Hide(self.compareBtn)
if(self.scenicSpotID)then
-- self:Hide(self.saveToPhotoAlbumBtn)
icon.spriteName = PhotographResultPanel.SceneSpotPhotoFrame.icon
-- tiledBg.spriteName = PhotographResultPanel.SceneSpotPhotoFrame.bg
if(AdventureDataProxy.Instance:IsSceneryUnlock(self.scenicSpotID))then
self:Show(self.saveAdventureBtn)
self:Show(self.compareBtn)
else
--Todo 上傳照片
self:saveScenery(self.scenicSpotID)
-- local sceneData = Table_Viewspot[self.scenicSpotID]
-- if(sceneData)then
-- MsgManager.ShowMsgByIDTable(904, sceneData.SpotName)
-- end
end
local data = {sceneryid = self.scenicSpotID,anglez = self.anglez,charid = self.charid}
FunctionScenicSpot.Me():InvalidateScenicSpot(data)
end
local bg = self:FindGO("background"):GetComponent(UISprite)
bg.onChange = function ( )
-- body
local width = bg.width/2
local height = bg.height/2
end
self:initDefaultTextureSize()
LeanTween.cancel(self.gameObject)
LeanTween.delayedCall(self.gameObject,0.1,function ( )
self:setTexture(self.texture)
end)
icon:MakePixelPerfect()
-- if(self.questData == nil and self.scenicSpotID == nil)then
-- self:Show(self.saveToPhotoAlbumBtn)
-- else
-- self:Hide(self.saveToPhotoAlbumBtn)
-- end
self.forbiddenClose = self.viewdata.forbiddenClose
self.compareTexture = nil
self.currentMapID = Game.MapManager:GetMapID()
-- local
self.hasUploadScenery = false
end
function PhotographResultPanel:initDefaultTextureSize( )
-- body
self.originWith = self.photo.width
self.originHeight = self.photo.height
end
function PhotographResultPanel:initView( )
-- body
self.photo = self:FindGO("photo"):GetComponent(UITexture)
self.watermark = self:FindGO("watermark"):GetComponent(UILabel)
self:Hide(self.watermark.gameObject)
self.toggel = self:FindGO("isShowWatermark"):GetComponent(UIToggle)
self:Hide(self.toggel.gameObject)
EventDelegate.Add(self.toggel.onChange, function ( )
self.watermark.gameObject:SetActive(self.toggel.value)
end)
self.confirmBtn = self:FindGO("confirmBtn")
self.saveToPhotoAlbumBtn = self:FindGO("saveToPhotoAlbumBtn")
self.saveAdventureBtn = self:FindGO("saveAdventureBtn")
self.compareBtn = self:FindGO("compareBtn")
self.progress = self:FindGO("loadProgress"):GetComponent(UILabel)
self:Hide(self.progress.gameObject)
self.saveAdventureBtnCollider = self.saveAdventureBtn:GetComponent(BoxCollider)
self.shareBtn = self:FindGO("shareBtn")
self.closeShare = self:FindGO("closeShare")
self:AddClickEvent(self.closeShare,function ( )
-- body
self:Hide(self.goUIViewSocialShare)
end)
self:AddClickEvent(self.shareBtn,function ( )
-- body
self:Show(self.goUIViewSocialShare)
end)
self:AddClickEvent(self.saveToPhotoAlbumBtn,function ( )
-- body
if(self.toUploadIndex ~= nil)then
MsgManager.ShowMsgByIDTable(991)
else
self:saveToPhotoAlbum()
end
end)
self:GetGameObjects()
self:RegisterButtonClickEvent()
end
function PhotographResultPanel:saveToPhotoAlbum( )
local isFull = PhotoDataProxy.Instance:isPhotoAlbumFull()
local isOutOfBounds= PhotoDataProxy.Instance:isPhotoAlbumOutofbounds()
if(isOutOfBounds)then
MsgManager.ShowMsgByIDTable(994)
elseif(isFull)then
local func = function ( index )
-- body
ServicePhotoCmdProxy.Instance:CallPhotoOptCmd(PhotoCmd_pb.EPHOTOOPTTYPE_REPLACE,index,self.anglez,self.currentMapID)
self.toUploadIndex = index
self.noClose = true
MsgManager.ShowMsgByIDTable(991)
end
PersonalPicturePanel.ViewType = UIViewType.Lv4PopUpLayer
local viewdata = {ShowMode = PersonalPicturePanel.ShowMode.ReplaceMode,callback = func}
MsgManager.ShowMsgByIDTable(994)
GameFacade.Instance:sendNotification(UIEvent.JumpPanel,{view = PanelConfig.PersonalPicturePanel, viewdata = viewdata});
else
MsgManager.ShowMsgByIDTable(991)
self.toUploadIndex= PhotoDataProxy.Instance:getEmptyCellIndex()
ServicePhotoCmdProxy.Instance:CallPhotoOptCmd(PhotoCmd_pb.EPHOTOOPTTYPE_ADD,self.toUploadIndex,self.anglez,self.currentMapID)
self.noClose = true
end
end
function PhotographResultPanel:startUploadPhoto( index,time )
PersonalPictureManager.Instance():saveToPhotoAlbum(self.texture,index,time)
end
function PhotographResultPanel:OnExit( )
-- body
LeanTween.cancel(self.gameObject)
PhotographResultPanel.super.OnExit(self)
Object.DestroyImmediate(self.texture)
Object.DestroyImmediate(self.compareTexture)
end
function PhotographResultPanel:AddEventListener( )
-- body
self:AddButtonEvent("cancelBtn",function ( go )
-- body
if(self.noClose)then
return
end
self:CloseSelf();
end)
self:AddClickEvent(self.confirmBtn,function ( go )
-- body
if(self.noClose)then
return
end
self:savePicture()
self:CloseSelf()
end)
self:AddClickEvent(self.saveAdventureBtn,function ( go )
-- body
printRed("save to AdventurePanel")
self:saveScenery(self.scenicSpotID)
end)
local longPress = self.compareBtn:GetComponent(UILongPress)
if(longPress)then
longPress.pressEvent = function ( obj,state )
-- body
if(state)then
self:CompareView()
else
self:Show(self.photo.gameObject)
self:Hide(self.progress.gameObject)
self:setTexture(self.texture)
end
end
end
end
function PhotographResultPanel:CompareView( )
-- body
self:Hide(self.photo.gameObject)
self:Show(self.progress.gameObject)
if(self.compareTexture)then
self:setTexture(self.compareTexture)
self:Hide(self.progress.gameObject)
self:Show(self.photo.gameObject)
else
--TODO
self.progress.text = "0%"
local data = AdventureDataProxy.Instance:GetSceneryData(self.scenicSpotID)
MySceneryPictureManager.Instance():tryGetMySceneryOriginImage(data.roleId,self.scenicSpotID,data.time)
end
end
function PhotographResultPanel:AddCloseButtonEvent()
self:AddButtonEvent("CloseButton", function (go)
if self.viewdata and self.viewdata.isFromStageView then
self:CloseSelf()
return
end
-- body
if(self.noClose)then
return
end
if(not self.forbiddenClose)then
self:sendNotification(UIEvent.CloseUI, PhotographPanel.ViewType);
end
self:CloseSelf();
end);
end
function PhotographResultPanel:progressCallback( progress )
-- body
progress = progress >=1 and 1 or progress
local value = progress*100
value = math.floor(value)
self.progress.text = value.."%"
end
function PhotographResultPanel:completeCallback(bytes )
-- body
self:Hide(self.progress.gameObject)
Object.DestroyImmediate(self.compareTexture)
self.compareTexture = Texture2D(self.texture.width,self.texture.height,TextureFormat.RGB24,false)
local bRet = ImageConversion.LoadImage(self.compareTexture, bytes)
self:setTexture(self.compareTexture)
self:Show(self.photo.gameObject)
end
function PhotographResultPanel:setTexture( texture )
-- body
local orginRatio = self.originWith / self.originHeight
local textureRatio = texture.width / texture.height
local wRatio = math.min(orginRatio,textureRatio) == orginRatio
local height = self.originHeight
local width = self.originWith
if(wRatio)then
height = self.originWith/textureRatio
else
width = self.originHeight*textureRatio
end
self.photo.width = width
self.photo.height = height
self.photo.mainTexture = texture
end
function PhotographResultPanel:savePicture( )
-- body
local result = PermissionUtil.Access_SavePicToMediaStorage()
if(result)then
local picName = PhotographResultPanel.picNameName
local path = PathUtil.GetSavePath(PathConfig.PhotographPath).."/"..picName
ScreenShot.SaveJPG(self.viewdata.texture,path,100)
path = path..".jpg"
ExternalInterfaces.SavePicToDCIM(path)
MsgManager.ShowMsgByID(907)
end
end
function PhotographResultPanel:sharePicture(platform_type, content_title, content_body)
-- body
local picName = PhotographResultPanel.picNameName..tostring(os.time())
local path = PathUtil.GetSavePath(PathConfig.PhotographPath).."/"..picName
ScreenShot.SaveJPG(self.viewdata.texture,path,100)
path = path..".jpg"
self:Log("sharePicture pic path:",path)
SocialShare.Instance:ShareImage(path, content_title, content_body, platform_type, function ( succMsg)
-- body
self:Log("SocialShare.Instance:Share success")
ROFileUtils.FileDelete(path)
if platform_type == E_PlatformType.Sina then
MsgManager.ShowMsgByIDTable(566)
end
end,function ( failCode,failMsg)
-- body
self:Log("SocialShare.Instance:Share failure")
ROFileUtils.FileDelete(path)
local errorMessage = failMsg or 'error'
if failCode ~= nil then
errorMessage = failCode .. ', ' .. errorMessage
end
MsgManager.ShowMsg('', errorMessage, MsgManager.MsgType.Float)
end,function ( )
-- body
self:Log("SocialShare.Instance:Share cancel")
ROFileUtils.FileDelete(path)
end)
end
-- <RB> social share
function PhotographResultPanel:GetGameObjects()
self.goUIViewSocialShare = self:FindGO('UIViewSocialShare', self.gameObject)
self.goButtonWechatMoments = self:FindGO('WechatMoments', self.goUIViewSocialShare)
self.goButtonWechat = self:FindGO('Wechat', self.goUIViewSocialShare)
self.goButtonQQ = self:FindGO('QQ', self.goUIViewSocialShare)
self.goButtonSina = self:FindGO('Sina', self.goUIViewSocialShare)
local enable = FloatAwardView.ShareFunctionIsOpen( )
if not enable then
self:Hide(self.shareBtn)
end
end
function PhotographResultPanel:RegisterButtonClickEvent()
self:AddClickEvent(self.goButtonWechatMoments, function ()
self:OnClickForButtonWechatMoments()
end)
self:AddClickEvent(self.goButtonWechat, function ()
self:OnClickForButtonWechat()
end)
self:AddClickEvent(self.goButtonQQ, function ()
self:OnClickForButtonQQ()
end)
self:AddClickEvent(self.goButtonSina, function ()
self:OnClickForButtonSina()
end)
end
function PhotographResultPanel:OnClickForButtonWechatMoments()
if SocialShare.Instance:IsClientValid(E_PlatformType.WechatMoments) then
self:sharePicture(E_PlatformType.WechatMoments, '', '')
else
MsgManager.ShowMsgByIDTable(561)
end
end
function PhotographResultPanel:OnClickForButtonWechat()
if SocialShare.Instance:IsClientValid(E_PlatformType.Wechat) then
self:sharePicture(E_PlatformType.Wechat, '', '')
else
MsgManager.ShowMsgByIDTable(561)
end
end
function PhotographResultPanel:OnClickForButtonQQ()
if SocialShare.Instance:IsClientValid(E_PlatformType.QQ) then
self:sharePicture(E_PlatformType.QQ, '', '')
else
MsgManager.ShowMsgByIDTable(562)
end
end
function PhotographResultPanel:OnClickForButtonSina()
if SocialShare.Instance:IsClientValid(E_PlatformType.Sina) then
local contentBody = GameConfig.PhotographResultPanel_ShareDescription
if contentBody == nil or #contentBody <= 0 then
contentBody = 'RO'
end
self:sharePicture(E_PlatformType.Sina, '', contentBody)
else
MsgManager.ShowMsgByIDTable(563)
end
end
-- <RE> social share
function PhotographResultPanel:saveScenery( scenicSpotID )
-- body
if(not self.hasUploadScenery)then
self.saveAdventureBtnCollider.enabled = false
local serverTime = math.floor(ServerTime.CurServerTime()/1000)
MySceneryPictureManager.Instance():saveToPhotoAlbum(self.texture,scenicSpotID,serverTime,self.anglez)
local key = string.format(PhotographResultPanel.SceneryKey,scenicSpotID)
FunctionPlayerPrefs.Me():SetBool(key,true)
else
MsgManager.ShowMsgByID(553)
end
end