2025-06-04 05:02:57 +08:00

162 lines
4.0 KiB
Plaintext

StarView = class("StarView",ContainerView)
StarView.ViewType = UIViewType.NormalLayer
local TYPE = LoveLetterData.Type
local screenShotWidth = -1
local screenShotHeight = 1080
local textureFormat = TextureFormat.RGB24
local texDepth = 24
local antiAliasing = ScreenShot.AntiAliasing.None
local shotName = "RO_ShareTemp"
function StarView:OnExit()
PictureManager.Instance:UnLoadStar()
StarView.super.OnExit(self)
end
function StarView:Init()
self:FindObj()
self:AddEvt()
self:AddViewEvt()
self:InitShow()
end
function StarView:FindObj()
self.content = self:FindGO("Content"):GetComponent(UILabel)
self.from = self:FindGO("From"):GetComponent(UILabel)
self.star = self:FindGO("Star"):GetComponent(UITexture)
self.btnRoot = self:FindGO("BtnRoot")
self.screenShotHelper = self.gameObject:GetComponent(ScreenShotHelper)
self.share = self:FindGO("Share")
self.save = self:FindGO("Save")
end
function StarView:AddEvt()
self:AddClickEvent(self.save, function ()
self:ClickSave()
end)
self:AddClickEvent(self.share, function ()
self:ClickShare()
end)
local closeButton = self:FindGO("CloseButton")
self:AddClickEvent(closeButton, function ()
self:CloseView()
end)
end
function StarView:AddViewEvt()
self:AddListenEvt(ServiceEvent.ItemSaveLoveLetterCmd , self.CloseView)
self:AddListenEvt(ShareEvent.ClickPlatform , self.ClickPlatform)
end
function StarView:InitShow()
self.isQueue = self.viewdata.viewdata == nil
local isOpen = StarProxy.Instance:CheckShareOpen()
self.share:SetActive(isOpen)
self:UpdateView()
end
function StarView:UpdateView()
local data
if self.isQueue then
data = StarProxy.Instance:GetFrontData()
else
data = self.viewdata.viewdata
end
if data then
self:SetData(data)
end
end
function StarView:SetData(data)
if data then
self.id = data.id
local content = ""
local letter = Table_LoveLetter[data.staticId]
if letter and letter.Letter then
content = letter.Letter
end
self.content.text = string.format(ZhString.Star_Content, Game.Myself.data.name, content)
self.from.text = data.name
PictureManager.Instance:SetStar(data.bg, self.star)
self.save:SetActive(data.type == TYPE.Star)
end
end
function StarView:ClickSave()
if self.id then
helplog("CallSaveLoveLetterCmd", self.id)
ServiceItemProxy.Instance:CallSaveLoveLetterCmd(self.id)
end
end
function StarView:ClickShare()
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.GeneralShareView})
end
function StarView:ClickPlatform(note)
local data = note.body
if data then
self:SharePicture(data, "", "")
end
end
function StarView:CloseView()
if self.isQueue then
local isNext = StarProxy.Instance:ShowNext()
if not isNext then
self:UpdateView()
return
end
end
self:CloseSelf()
end
--分享
function StarView:SharePicture(platform_type, content_title, content_body)
helplog("StarView SharePicture", platform_type)
local gmCm = NGUIUtil:GetCameraByLayername("Default")
local ui = NGUIUtil:GetCameraByLayername("UI")
self.btnRoot:SetActive(false)
self.screenShotHelper:Setting(screenShotWidth, screenShotHeight, textureFormat, texDepth, antiAliasing)
self.screenShotHelper:GetScreenShot(function (texture)
self.btnRoot:SetActive(true)
local picName = shotName..tostring(os.time())
local path = PathUtil.GetSavePath(PathConfig.TempShare).."/"..picName
ScreenShot.SaveJPG(texture, path, 100)
path = path..".jpg"
helplog("StarView Share path", path)
SocialShare.Instance:ShareImage(path, content_title, content_body, platform_type, function (succMsg)
helplog("StarView Share success")
ROFileUtils.FileDelete(path)
if platform_type == E_PlatformType.Sina then
MsgManager.ShowMsgByIDTable(566)
end
end,function (failCode, failMsg)
helplog("StarView 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 ()
helplog("StarView Share cancel")
ROFileUtils.FileDelete(path)
end)
end, gmCm, ui)
end