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

468 lines
15 KiB
Plaintext

autoImport("PictureDetailPanel")
WeddingWallPictureDetail = class("WeddingWallPictureDetail", PictureDetailPanel)
WeddingWallPictureDetail.ViewType = UIViewType.NormalLayer
autoImport("PictureWallCell")
local tempVector3 = LuaVector3.zero
local tempRot = LuaQuaternion.identity
WeddingWallPictureDetail.NewKeyTag = "WeddingWallPictureDetail_NewKeyTag_%s_%s"
WeddingWallPictureDetail.CheckCurrentShowPhoto = "WeddingWallPictureDetail_CheckCurrentShowPhoto"
function WeddingWallPictureDetail:Init()
self:AddViewEvts()
self:initView()
self:initData()
self:requestFrameData()
end
function WeddingWallPictureDetail:requestFrameData()
-- ServicePhotoCmdProxy.Instance:CallQueryWedPhotoCmd(self.frameId)
ServicePhotoCmdProxy.Instance:CallQueryFramePhotoListPhotoCmd(self.frameId)
end
function WeddingWallPictureDetail:AddViewEvts()
self:AddListenEvt(PictureWallDataEvent.MapEnd,self.MapEnd);
self:AddListenEvt(PictureWallDataEvent.ShowRedTip,self.ShowRedTip);
self:AddListenEvt(ServiceEvent.PhotoCmdFrameActionPhotoCmd,self.PhotoCmdFrameActionPhotoCmd);
self:AddListenEvt(ServiceEvent.PhotoCmdUpdateFrameShowPhotoCmd,self.UpdateCurPhoto);
self:AddListenEvt(ServiceEvent.PhotoCmdQueryFramePhotoListPhotoCmd,self.HandleQueryFramePhotoList);
self:AddListenEvt(WeddingWallPicManager.WallPicOriginDownloadCompleteCallback,self.photoCompleteCallback);
self:AddListenEvt(WeddingWallPicManager.WallPicOriginDownloadProgressCallback,self.photoProgressCallback);
self:AddListenEvt(WeddingWallPicManager.WallPicThumbnailDownloadProgressCallback,self.WallhumbnailPhDlPgCallback);
self:AddListenEvt(WeddingWallPicManager.WallPicThumbnailDownloadCompleteCallback,self.WallThumbnailPhDlCpCallback);
self:AddListenEvt(WeddingWallPicManager.WallPicThumbnailDownloadErrorCallback,self.WallThumbnailPhDlErCallback);
end
function WeddingWallPictureDetail:WallhumbnailPhDlPgCallback( note )
local data = note.body
local cell = self:GetItemCellById(data.photoData)
if(cell)then
cell:setDownloadProgress(data.progress)
end
end
function WeddingWallPictureDetail:WallThumbnailPhDlCpCallback( note )
local data = note.body
local cell = self:GetItemCellById(data.photoData)
if(cell)then
self:GetWallPicThumbnail(cell)
end
end
function WeddingWallPictureDetail:WallThumbnailPhDlErCallback( note )
local data = note.body
local cell = self:GetItemCellById(data.photoData)
if(cell)then
cell:setDownloadFailure()
end
end
function WeddingWallPictureDetail:ShowRedTip( note )
local size = note.body
if(size>0)then
self:Show(self.redTip)
self:ShowMsgAnim(note.body)
else
self:Hide(self.redTip)
end
end
function WeddingWallPictureDetail:GetUploadSusPicture( )
return 0
end
function WeddingWallPictureDetail:ShowMsgAnim(count)
-- body
-- local count = self:GetUploadSusPicture()
-- self.SusMsg.text = string.format(ZhString.PersonalPictureCell_UploadSusmsg,count)
-- self:Show(self.SusMsg.gameObject)
-- -- play:Play(true)
end
function WeddingWallPictureDetail:PhotoCmdFrameActionPhotoCmd( note )
self:requestFrameData()
end
function WeddingWallPictureDetail:UpdateCurPhoto( )
local serverData = Game.WeddingWallPicManager:getServerDataByFrameId(self.frameId)
if(serverData)then
if(self.serverData and Game.WeddingWallPicManager:checkSamePicture(self.serverData.photoData,serverData.photoData))then
return
end
self.serverData = serverData
local photoData = self.serverData.photoData
self.anglez = photoData.anglez
self:getPhoto()
else
local texture = self.photo.mainTexture
self.photo.mainTexture = nil
Object.DestroyImmediate(texture)
end
end
function WeddingWallPictureDetail:HandleQueryFramePhotoList( note )
local data = note.body
local list = {}
if(data and data.frameid == self.frameId)then
local photos = data.photos
for i=1,#photos do
local single = photos[i]
local photoData = PhotoData.new(single)
list[#list+1] = photoData
end
end
self:SetData(list)
if(#list>0 and self.firstActivie)then
self.firstActivie = false
self.switchCtPlay:Play(true)
end
end
function WeddingWallPictureDetail:changePhotoSize()
local frameData = Table_ScenePhotoFrame[self.frameId]
local dir = 0
if(frameData)then
dir = frameData.Dir
end
if(dir == 1)then
self.photo.width = 400
self.photo.height = 600
end
end
function WeddingWallPictureDetail:photoCompleteCallback( note )
-- body
local data = note.body
Game.WeddingWallPicManager:log("WeddingWallPictureDetail:photoCompleteCallback",data.photoData.sourceid,data.photoData.source,data.photoData.charid)
Game.WeddingWallPicManager:log("WeddingWallPictureDetail:photoCompleteCallback",self.serverData.photoData.sourceid,self.serverData.photoData.source,self.serverData.photoData.charid)
Game.WeddingWallPicManager:log("WeddingWallPictureDetail:photoCompleteCallback",self.serverData.photoData.time,data.photoData.time)
if(self.serverData and Game.WeddingWallPicManager:checkSamePicture(data.photoData,self.serverData.photoData))then
self:completeCallback(data.byte)
end
end
function WeddingWallPictureDetail:photoProgressCallback( note )
-- body
local data = note.body
-- printRed("WeddingWallPictureDetail photoProgressCallback",data.progress)
if(self.serverData and Game.WeddingWallPicManager:checkSamePicture(data.photoData,self.serverData.photoData))then
self:progressCallback(data.progress)
end
end
function WeddingWallPictureDetail:showAnim()
-- body
tempVector3:Set(0,0,0)
self.gameObject.transform.localScale = tempVector3
local sceneryData = self.viewdata.viewdata.serverData
local trans = self.viewdata.viewdata.trans
local gm = NGUIUtil:GetCameraByLayername("Default");
local x,y = LuaGameObject.WorldToViewportPointByTransform(gm,trans.transform,Space.World)
x = 1280*(x - 0.5)
y = 720*(y - 0.5)
-- helplog(LuaGameObject.WorldToScreenPointByTransform(gm,trans.transform,Space.Self))
-- tempVector3:Set(LuaGameObject.ScreenToWorldPointByVector3(cm,tempVector3))
-- tempVector3:Set(LuaGameObject.InverseTransformPointByVector3(self.gameObject.transform.parent,tempVector3))
tempVector3:Set(x,y,0)
local tweenPosition = self.gameObject:GetComponent(TweenPosition)
local play = self.gameObject:GetComponent(UIPlayTween)
tweenPosition.from = tempVector3
self.gameObject.transform.localPosition = tempVector3
EventDelegate.Set(play.onFinished,function ( )
self:showOtherUI()
end)
play:Play(true)
end
function WeddingWallPictureDetail:showOtherUI( )
self:Show(self.leftSliderCt)
self:Show(self.UpdateCt)
self:Hide(self.scrollView)
self:Show(self.scrollView)
if(PhotoDataProxy.Instance:checkWeddingWallSyncPermission())then
self:Show(self.UpdateCt)
else
self:Hide(self.UpdateCt)
end
end
function WeddingWallPictureDetail:MapEnd( note )
self:CloseSelf()
end
function WeddingWallPictureDetail:OnEnter( )
-- body
self:showAnim()
end
function WeddingWallPictureDetail:initData( )
-- body
self:initDefaultTextureSize()
self.serverData = self.viewdata.viewdata.serverData
self.frameId = self.viewdata.viewdata.frameId
if(self.serverData and self.serverData.photoData)then
local photoData = self.serverData.photoData
self.anglez = photoData.anglez
self.isThumbnail = false
else
self:changePhotoSize()
end
LeanTween.cancel(self.gameObject)
LeanTween.delayedCall(self.gameObject,0.1,function ( )
self:getPhoto()
end)
self.firstActivie = true
end
function WeddingWallPictureDetail:ScrollViewRevert(callback)
self.revertCallBack = callback;
self.scrollView:Revert();
end
function WeddingWallPictureDetail:initView( )
-- body
self.scrollView = self:FindComponent("ItemScrollView", ROUIScrollView);
self.scrollView.OnStop = function ()
self:ScrollViewRevert();
end
self.photo = self:FindGO("photo"):GetComponent(UITexture)
self.progress = self:FindGO("loadProgress"):GetComponent(UILabel)
self:Hide(self.progress.gameObject)
self.leftSlider = self:FindComponent("leftSlider",TweenPosition)
self.leftSliderCt = self:FindGO("leftSliderCt")
self.UpdateCt = self:FindGO("UpdateCt")
self.frameSizeLabel = self:FindComponent("frameSizeLabel",UILabel)
self.redTip = self:FindGO("redTip")
self.PhotoCt = self:FindGO("PhotoCt")
self:Hide(self.redTip)
self:Hide(self.leftSliderCt)
self:Hide(self.UpdateCt)
self.SusMsg = self:FindComponent("SusMsg",UILabel)
self:Hide(self.SusMsg.gameObject)
self.switchCtPlay = self:FindComponent("switchCt",UIPlayTween)
local itemContainer = self:FindGO("bag_itemContainer");
local wrapConfig = {
wrapObj = itemContainer,
pfbNum = 6,
cellName = "PictureWallCell",
control = PictureWallCell,
dir = 1,
}
self.wraplist = WrapCellHelper.new(wrapConfig);
self.wraplist:AddEventListener(PictureDetailPanel.GetWallPicThumbnail, self.GetWallPicThumbnail, self);
-- self.wraplist:AddEventListener(WeddingWallPictureDetail.CheckIsCurrent, self.CheckIsCurrent, self);
self:AddClickEvent(self.UpdateCt,function ( )
-- body
if(PhotoDataProxy.Instance:checkWeddingWallSyncPermission())then
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.PicutureWallSyncPanel,viewdata = {frameId = self.frameId,from = PicutureWallSyncPanel.PictureSyncFrom.WeddingWall}})
-- self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.WeddingWallPictureSyncPanel,viewdata = {frameId = self.frameId}})
self:Hide(self.SusMsg.gameObject)
self:Hide(self.redTip)
PhotoDataProxy.Instance:clearToSeeDatas()
else
MsgManager.ShowMsgByIDTable(3643)
end
end)
self:SetData({})
end
function WeddingWallPictureDetail:GetWallPicThumbnail(cellCtl)
if(cellCtl and cellCtl.data)then
Game.WeddingWallPicManager:GetPicThumbnailByCell(cellCtl)
if(self.serverData and Game.WeddingWallPicManager:checkSamePicture(cellCtl.data,self.serverData.photoData))then
cellCtl:IsCurrent(true)
local panel = self.scrollView.panel
if(panel)then
local bound = NGUIMath.CalculateRelativeWidgetBounds(panel.cachedTransform,cellCtl.gameObject.transform)
-- printRed(bound)
local offset = panel:CalculateConstrainOffset(bound.min,bound.max)
-- printRed(offset)
offset = Vector3(0,offset.y,0)
self.scrollView:MoveRelative(offset)
end
else
cellCtl:IsCurrent(false)
end
end
end
function WeddingWallPictureDetail:GetIndexByCellData(data)
local cells = self:GetItemCells()
for i=1,#cells do
local single = cells[i]
if(single.data)then
if(Game.WeddingWallPicManager:checkSamePicture(single.data,data))then
return i
end
end
end
end
function WeddingWallPictureDetail:SetData(datas, noResetPos)
local totalUpSize = GameConfig.Wedding and GameConfig.Wedding.MaxFramePhotoCount or 10
self.frameSizeLabel.text = string.format(ZhString.PersonalPictureCell_CurFrameShowState,#datas,totalUpSize)
self.wraplist:UpdateInfo(datas);
if(not noResetPos)then
self.wraplist:ResetPosition()
end
self.scrollView:ResetPosition()
end
function WeddingWallPictureDetail:initDefaultTextureSize( )
-- body
self.originWith = self.photo.width
self.originHeight = self.photo.height
end
function WeddingWallPictureDetail:setTexture( texture )
-- body
-- local anglez = 0
-- if(self.anglez >=45 and self.anglez <= 135)then
-- anglez = 90
-- elseif(self.anglez >= 225 and self.anglez <= 315)then
-- anglez = 270
-- elseif(self.anglez >=135 and self.anglez <=225)then
-- anglez = 180
-- end
-- tempVector3:Set(0, 0, anglez)
-- tempRot.eulerAngles = tempVector3
-- self.PhotoCt.transform.localRotation = tempRot
local orginRatio = self.originWith / self.originHeight
local textureRatio = 0
-- if(anglez == 90 or anglez == 270)then
-- textureRatio = texture.height / texture.width
-- else
textureRatio = texture.width / texture.height
-- end
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
-- if(anglez == 90 or anglez == 270)then
-- self.photo.width = height
-- self.photo.height = width
-- else
self.photo.width = width
self.photo.height = height
-- end
Object.DestroyImmediate(self.photo.mainTexture)
self.photo.mainTexture = texture
end
function WeddingWallPictureDetail:getPhoto( )
-- body
if(self.serverData)then
local photoData = self.serverData.photoData
local bytes = Game.WeddingWallPicManager:GetBytes(photoData)
if(bytes)then
self:completeCallbackBytes(bytes)
else
local tBytes
local thumbnail = true
if(photoData.source == ProtoCommon_pb.ESOURCE_PHOTO_SCENERY)then
if(photoData.isBelongAccPic)then
tBytes = UnionWallPhotoNew.Ins():TryGetThumbnailFromLocal_ScenicSpot_Account(photoData.charid,photoData.sourceid,photoData.time)
else
tBytes = UnionWallPhotoNew.Ins():TryGetThumbnailFromLocal_ScenicSpot(photoData.charid,photoData.sourceid,photoData.time)
end
elseif(photoData.source == ProtoCommon_pb.ESOURCE_PHOTO_SELF)then
tBytes = UnionWallPhotoNew.Ins():TryGetThumbnailFromLocal_Personal(photoData.charid,photoData.sourceid,photoData.time)
end
if(tBytes)then
self:completeCallback(tBytes,thumbnail)
elseif(serverData and serverData.texture)then
self:completeCallbackThumbnailTexture(serverData.texture)
end
Game.WeddingWallPicManager:tryGetOriginImage(photoData)
end
end
end
function WeddingWallPictureDetail:completeCallbackBytes(bytes )
-- body
local texture = Texture2D(0,0,TextureFormat.RGB24,false)
local bRet = ImageConversion.LoadImage(texture, bytes)
if( bRet)then
self:setTexture(texture)
else
Object.DestroyImmediate(texture)
end
end
function WeddingWallPictureDetail:completeCallbackThumbnailTexture(texture )
-- body
local texture = Texture2D(0,0,TextureFormat.RGB24,false)
texture:LoadRawTextureData(texture:GetRawTextureData())
texture:Apply()
self:setTexture(texture)
end
function WeddingWallPictureDetail:progressCallback( progress )
-- body
self:Show(self.progress.gameObject)
progress = progress >=1 and 1 or progress
local value = progress*100
value = math.floor(value)
self.progress.text = value.."%"
end
function WeddingWallPictureDetail:completeCallback(bytes,thumbnail )
-- body
helplog("WeddingWallPictureDetail:completeCallback(bytes,thumbnail )",tostring(thumbnail))
if(not thumbnail)then
self:Hide(self.progress.gameObject)
end
self.isThumbnail = thumbnail
if(bytes)then
local texture = Texture2D(0,0,TextureFormat.RGB24,false)
local bRet = ImageConversion.LoadImage(texture, bytes)
helplog("WeddingWallPictureDetail:completeCallback(bytes,thumbnail )",tostring(bRet),tostring(texture))
if( bRet)then
self:setTexture(texture)
if(not thumbnail)then
Game.WeddingWallPicManager:addOriginBytesBySceneryId(self.serverData.photoData,bytes)
end
else
Object.DestroyImmediate(texture)
end
end
end
function WeddingWallPictureDetail:OnExit( )
-- body
LeanTween.cancel(self.gameObject)
Object.DestroyImmediate(self.photo.mainTexture)
PhotoDataProxy.Instance:clearToSeeDatas()
end
function WeddingWallPictureDetail:GetItemCellById(photoData)
local cells = self:GetItemCells()
if(cells and #cells>0)then
for i=1,#cells do
local single = cells[i]
if(single.data)then
if(Game.WeddingWallPicManager:checkSamePicture(single.data,photoData))then
return single
end
end
end
end
end
function WeddingWallPictureDetail:GetItemCells()
return self.wraplist:GetCellCtls();
end