2025-06-04 05:12:01 +08:00

429 lines
14 KiB
Plaintext

MarriageCertificate = class("MarriageCertificate", ContainerView)
autoImport("Charactor")
autoImport("PicutureWallSyncPanel")
MarriageCertificate.ViewType = UIViewType.PopUpLayer
local tempVector3 = LuaVector3.zero
local tempRot = LuaQuaternion.identity
MarriageCertificate.BgTextureName = "marry_bg_bottom1";
MarriageCertificate.ProcessTextureName = "marry_bg_process";
function MarriageCertificate:Init()
self:AddViewEvts()
self:initView()
self:initData()
end
function MarriageCertificate:AddViewEvts()
self:AddListenEvt(WeddingWallPicManager.WeddingPicDownloadCompleteCallback,self.photoCompleteCallback);
self:AddListenEvt(WeddingWallPicManager.WeddingPicDownloadProgressCallback,self.photoProgressCallback);
self:AddListenEvt(WeddingWallPicManager.WeddingPicDownloadErrorCallback,self.photoErrorCallback);
self:AddListenEvt(ServiceEvent.NUserUploadWeddingPhotoUserCmd,self.UpdateCurPhoto);
end
function MarriageCertificate: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 MarriageCertificate:PhotoCmdFrameActionPhotoCmd( note )
end
function MarriageCertificate:UpdateCurPhoto( note )
-- helplog("UpdateCurPhoto:")
-- local serverData = Game.PictureWallManager:getServerDataByFrameId(self.frameId)
-- if(serverData)then
-- if(self.serverData and Game.PictureWallManager: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 MarriageCertificate: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 MarriageCertificate:photoCompleteCallback( note )
-- body
local data = note.body
local id = data.id
local index = data.index
Game.WeddingWallPicManager:log("MarriageCertificate:photoCompleteCallback1",id,self.weddingData.id,self.weddingData.photoidx)
if(self.weddingData and id == self.weddingData.id and index == self.weddingData.photoidx)then
self:completeCallback(data.byte)
end
end
function MarriageCertificate:photoProgressCallback( note )
-- body
local data = note.body
local id = data.id
local index = data.index
Game.WeddingWallPicManager:log("MarriageCertificate:photoCompleteCallback1",id,self.weddingData.id,self.weddingData.photoidx)
if(self.weddingData and id == self.weddingData.id and index == self.weddingData.photoidx)then
self:progressCallback(data.progress)
end
end
function MarriageCertificate:photoErrorCallback( note )
-- body
helplog("photoErrorCallback")
end
function MarriageCertificate:initData( )
-- body
self.data = self.viewdata.viewdata
self.weddingData = self.data.weddingData or {}
self:initDefaultTextureSize()
self:initScreenShotData()
if(self.weddingData and self.weddingData.photoidx ~= 0 )then
self.loadReady = false
else
self:changePhotoSize()
end
LeanTween.cancel(self.gameObject)
LeanTween.delayedCall(self.gameObject,0.1,function ( )
self:getPhoto()
end)
self:UpdateHead()
local str = "%Y.%m.%d %H:%M";
str = os.date(str, self.weddingData.weddingtime)
self.marriageTime.text = str
end
function MarriageCertificate:initView( )
-- body
self.photo = self:FindComponent("photo",UITexture)
self.progress = self:FindComponent("loadProgress",UILabel)
self:Hide(self.progress.gameObject)
self.portrait_1 = self:FindGO("portrait_1")
self.portrait_2 = self:FindGO("portrait_2")
self.coupleName1 = self:FindComponent("coupleName1",UILabel)
self.coupleName2 = self:FindComponent("coupleName2",UILabel)
self.marriageTime = self:FindComponent("marriageTime",UILabel)
self.closeBtn = self:FindGO("CloseButton")
self.screenShotHelper = self.gameObject:GetComponent(ScreenShotHelper)
self:GetGameObjects()
self:RegisterButtonClickEvent()
self.shareBtn = self:FindGO("shareBtn")
self:AddClickEvent(self.shareBtn,function ( )
self:Show(self.goUIViewSocialShare)
end)
self.defPhoto = self:FindGO("defPhoto")
self.defPhotoTx = self:FindComponent("defPhoto",UITexture)
self.bgTx1 = self:FindComponent("Texture_1",UITexture)
self.bgTx2 = self:FindComponent("Texture_2",UITexture)
PictureManager.Instance:SetWedding(MarriageCertificate.ProcessTextureName, self.bgTx1);
PictureManager.Instance:SetWedding(MarriageCertificate.ProcessTextureName, self.bgTx2);
local shareLabel = self:FindComponent("shareLabel",UILabel)
shareLabel.text = ZhString.WeddingPictureShareLabel
self:AddButtonEvent("innerBg",function ( )
PhotoDataProxy.Instance:setCurCertificateData(self.data)
PicutureWallSyncPanel.ViewType = UIViewType.Lv4PopUpLayer
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.PicutureWallSyncPanel,viewdata = {frameId = 0,from = PicutureWallSyncPanel.PictureSyncFrom.WeddingCertificate}})
end)
self.closeShare = self:FindGO("closeShare")
self:AddClickEvent(self.closeShare,function ( )
-- body
self:Hide(self.goUIViewSocialShare)
end)
if(FloatAwardView.ShareFunctionIsOpen( ))then
self:Show(self.shareBtn)
else
self:Hide(self.shareBtn)
end
end
function MarriageCertificate:UpdateHead( )
-- body
if(not self.targetCell1)then
local headCellObj = self:FindGO("portrait_2")
self.headCellObj = Game.AssetManager_UI:CreateAsset(Charactor.PlayerHeadCellResId,headCellObj)
tempVector3:Set(0,0,0)
self.headCellObj.transform.localPosition = tempVector3
self.targetCell1 = PlayerFaceCell.new(self.headCellObj)
self.targetCell1:HideHpMp()
self.targetCell1:HideLevel()
end
local infoData = WeddingProxy.Instance:GetWeddingInfo()
if(infoData)then
local id = infoData:GetPartnerGuid()
local coupleData = WeddingProxy.Instance:GetPortraitInfo(id)
local headData = HeadImageData.new()
headData:TransByWeddingCharData(coupleData)
self.coupleName2.text = coupleData.name
self.targetCell1:SetData(headData);
else
helplog("沒找到你老婆的頭像數據")
end
if(not self.targetCell2)then
local headCellObj = self:FindGO("portrait_1")
self.headCellObj = Game.AssetManager_UI:CreateAsset(Charactor.PlayerHeadCellResId,headCellObj)
tempVector3:Set(0,0,0)
self.headCellObj.transform.localPosition = tempVector3
self.targetCell2 = PlayerFaceCell.new(self.headCellObj)
self.targetCell2:HideHpMp()
self.targetCell2:HideLevel()
end
self.coupleName1.text = Game.Myself.data.name
headData = HeadImageData.new();
headData:TransByMyself();
-- headData.frame = nil;
headData.job = nil;
self.targetCell2:SetData(headData);
end
function MarriageCertificate:initDefaultTextureSize( )
-- body
self.originWith = self.photo.width
self.originHeight = self.photo.height
end
function MarriageCertificate: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 MarriageCertificate:getPhoto( )
-- body
if(self.weddingData and self.weddingData.photoidx and self.weddingData.photoidx ~= 0)then
helplog("getPhoto:",tostring(self.weddingData.photoidx),tostring(self.weddingData.photoidx))
Game.WeddingWallPicManager:GetWeddingPicture(self.weddingData.photoidx,self.weddingData.phototime)
PictureManager.Instance:UnLoadWedding(MarriageCertificate.BgTextureName,self.defPhotoTx);
self:Hide(self.defPhoto)
else
self:Show(self.defPhoto)
PictureManager.Instance:SetWedding(MarriageCertificate.BgTextureName, self.defPhotoTx);
end
end
function MarriageCertificate: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 MarriageCertificate:completeCallback(bytes )
-- body
self:Hide(self.progress.gameObject)
if(bytes)then
local texture = Texture2D(0,0,TextureFormat.RGB24,false)
local bRet = ImageConversion.LoadImage(texture, bytes)
if( bRet)then
self.loadReady = true
self:setTexture(texture)
else
Object.DestroyImmediate(texture)
end
end
end
function MarriageCertificate: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)
end
function MarriageCertificate: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 MarriageCertificate:OnClickForButtonWechatMoments()
if SocialShare.Instance:IsClientValid(E_PlatformType.WechatMoments) then
self:sharePicture(E_PlatformType.WechatMoments, '', '')
else
MsgManager.ShowMsgByIDTable(561)
end
end
function MarriageCertificate:OnClickForButtonWechat()
if SocialShare.Instance:IsClientValid(E_PlatformType.Wechat) then
self:sharePicture(E_PlatformType.Wechat, '', '')
else
MsgManager.ShowMsgByIDTable(561)
end
end
function MarriageCertificate:OnClickForButtonQQ()
if SocialShare.Instance:IsClientValid(E_PlatformType.QQ) then
self:sharePicture(E_PlatformType.QQ, '', '')
else
MsgManager.ShowMsgByIDTable(562)
end
end
function MarriageCertificate: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
function MarriageCertificate:startSharePicture(texture,platform_type, content_title, content_body)
local picName = "Ro_"..tostring(os.time())
local path = PathUtil.GetSavePath(PathConfig.PhotographPath).."/"..picName
ScreenShot.SaveJPG(texture,path,100)
path = path..".jpg"
self:Log("MarriageCertificate 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
function MarriageCertificate:sharePicture(platform_type, content_title, content_body)
-- body
self:startCaptureScreen(platform_type, content_title, content_body)
end
function MarriageCertificate:startCaptureScreen(platform_type, content_title, content_body)
-- body
local ui = NGUIUtil:GetCameraByLayername("UI");
self:changeUIState(true)
self.screenShotHelper:Setting(self.screenShotWidth, self.screenShotHeight, self. textureFormat, self.texDepth, self.antiAliasing)
self.screenShotHelper:GetScreenShot(function ( texture )
self:changeUIState(false)
self:startSharePicture(texture,platform_type, content_title, content_body)
end,ui)
end
function MarriageCertificate:changeUIState( isStart )
-- body
if(isStart)then
self:Hide(self.goUIViewSocialShare)
self:Hide(self.closeBtn)
self:Hide(self.shareBtn)
else
self:Show(self.goUIViewSocialShare)
self:Show(self.shareBtn)
self:Show(self.closeBtn)
end
end
function MarriageCertificate:initScreenShotData( )
-- body
self.screenShotWidth = -1
self.screenShotHeight = 1080
self.textureFormat = TextureFormat.RGB24
self.texDepth = 24
self.antiAliasing = ScreenShot.AntiAliasing.None
end
function MarriageCertificate:OnExit( )
-- body
LeanTween.cancel(self.gameObject)
PictureManager.Instance:UnLoadWedding(MarriageCertificate.BgTextureName,self.defPhotoTx);
PictureManager.Instance:UnLoadWedding(MarriageCertificate.ProcessTextureName, self.bgTx1);
PictureManager.Instance:UnLoadWedding(MarriageCertificate.ProcessTextureName, self.bgTx2);
Object.DestroyImmediate(self.photo.mainTexture)
end