miduo_client/Assets/ManagedResources/~Lua/Modules/Mail/MainSingleInfoPanel.lua

226 lines
8.3 KiB
Lua

require("Base/BasePanel")
MainSingleInfoPanel = Inherit(BasePanel)
local mailData
local openPanel
local allGetMail={}
local goList = {}
local hasGot = false
local activeNum = 0
--item容器
local itemGoList = {}
--初始化组件(用于子类重写)
function MainSingleInfoPanel:InitComponent()
self.spLoader = SpriteLoader.New()
self.closeBtn = Util.GetGameObject(self.gameObject, "bg/btnBack")
self.mialHead = Util.GetGameObject(self.gameObject, "bg/mialHead"):GetComponent("Text")
self.mialTimeText = Util.GetGameObject(self.gameObject, "bg/mialTimeText"):GetComponent("Text")
self.mialInfoRoot = Util.GetGameObject(self.gameObject, "bg/mialInfo")
self.mialInfo = Util.GetGameObject(self.gameObject, "bg/mialInfo/mialInfoText"):GetComponent("Text")
self.itemPre=Util.GetGameObject(self.gameObject, "itemPre")
self.grid=Util.GetGameObject(self.gameObject, "bg/scroll/grid")
self.btnSure=Util.GetGameObject(self.gameObject, "bg/btnSure")
self.btnDel = Util.GetGameObject(self.gameObject, "bg/btnDel")
self.root = Util.GetGameObject(self.gameObject, "bg/newScroll")
self.line = Util.GetGameObject(self.gameObject, "bg/line")
local v21 = Util.GetGameObject(self.gameObject, "bg/newScroll"):GetComponent("RectTransform").rect
self.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(self.gameObject, "bg/newScroll").transform,
self.itemPre, nil, Vector2.New(v21.width, v21.height), 1, 5, Vector2.New(20,15))
self.ScrollView.moveTween.MomentumAmount = 1
self.ScrollView.moveTween.Strength = 1--height width -v21.x*2, -v21.y*2
end
--绑定事件(用于子类重写)
function MainSingleInfoPanel:BindEvent()
Util.AddClick(self.closeBtn, function()
self:ClosePanel()
end)
Util.AddClick(self.btnSure, function()
allGetMail={}
table.insert(allGetMail,mailData.mailId)
IndicationManager.getRewardFromMail=true
NetManager.GetSingleMailRewardData(allGetMail,function (_drop)
UIManager.OpenPanel(UIName.RewardItemPopup,_drop,1)
--如果不能领取,不改变按钮状态
if #_drop.itemlist > 0 or #_drop.equipId > 0 or #_drop.Hero > 0 or #_drop.soulEquip > 0 or #_drop.pokemon > 0 then
self:CallBackEvent()
end
self:OnShowMailData(mailData)
end)
end)
Util.AddClick(self.btnDel, function()
if mailData.state >= 1 and mailData.mailItem=="" then--已读取 未领取 无附件
NetManager.DelMailData({mailData.mailId},function ()
MailManager.DelSingleMial(mailData.mailId)
end)
elseif mailData.state >= 3 then--已领取
NetManager.DelMailData({mailData.mailId},function ()
MailManager.DelSingleMial(mailData.mailId)
end)
end
self.btnDel:SetActive(false)
openPanel.CallBackOnShow()
self:ClosePanel()
end)
end
function MainSingleInfoPanel:CallBackEvent()
if IndicationManager.canPopUpBagMaxMessage == false then
for i = 1, #allGetMail do
MailManager.UpdataMialIsReadState(allGetMail[i],3)
end
openPanel.UpdateMailData()
self.btnSure:SetActive(false)
self.btnDel:SetActive(true)
hasGot = true
for i = 1, activeNum do
if goList[i] then
Util.GetGameObject(goList[i], "Image"):SetActive(hasGot)
end
end
end
end
--添加事件监听(用于子类重写)
function MainSingleInfoPanel:AddListener()
end
--移除事件监听(用于子类重写)
function MainSingleInfoPanel:RemoveListener()
end
--界面打开时调用(用于子类重写)
function MainSingleInfoPanel:OnOpen(...)
local data={...}
mailData=data[1]
openPanel=data[2]
hasGot = mailData.state >= 3
end
function MainSingleInfoPanel:OnShow()
self:OnShowMailData(mailData)
end
local mailList={}
local mailmaxNum=500
local maildataCount=0--数据数量
--设置英雄列表数据
function MainSingleInfoPanel:OnShowMailData(mailData)
self.mialHead.text=mailData.head
self.mialTimeText.text=GetTimeStrBySeconds(mailData.effectiveTime+mailData.sendTime)..Language[11169]
self.mialInfo.text=string.gsub(mailData.content, "\\n", "\n")
Log("mailData.state "..mailData.state)
self.btnDel:SetActive(false)
if mailData.state==3 then
self.btnSure:SetActive(false)
self.btnDel:SetActive(true)
else
if mailData.mailItem=="" or mailData.mailItem==nil then
maildataCount=0
self.btnSure:SetActive(false)
self.btnDel:SetActive(true)
else
self.btnSure:SetActive(true)
end
end
Log("mailData.mailItem "..mailData.mailItem)
local itemList=string.split(mailData.mailItem,"|")
--maildataCount=#itemList
--
--Log("maildataCount "..maildataCount)
--local haveCount = LengthOfTable(mailList)--已经拥有预设的数量
--local needCreatCount = ( maildataCount>mailmaxNum and mailmaxNum ) or maildataCount--需要加载预设的数量;
--local trueCreatCount = needCreatCount - haveCount--实际应该加载预设的数量
--if trueCreatCount > 0 then
-- for i = 1, trueCreatCount do
-- local go = newObjToParent(self.itemPre, self.grid)
-- local view = SubUIManager.Open(SubUIConfig.ItemView, go.transform)
-- table.insert(mailList, view)
-- table.insert(goList, go)
-- Util.GetGameObject(go, "Image").transform:SetAsLastSibling()
-- end
--end
--haveCount=LengthOfTable(mailList)
--for i = 1, haveCount do
-- if i <= needCreatCount then
-- if itemList and itemList[i] ~= "" then
-- local rewardStr=string.split(itemList[i],"#")
-- local itemData={}
-- table.insert(itemData,tonumber(rewardStr[1]))
-- table.insert(itemData,tonumber(rewardStr[2]))
-- mailList[i]:OnOpen(false,itemData,1)--,false,false,false,self.sortingOrder
-- Util.GetGameObject(goList[i], "Image"):SetActive(hasGot)
-- activeNum = activeNum + 1
-- mailList[i].gameObject:SetActive(true)
-- else
-- mailList[i].gameObject:SetActive(false)
-- Util.GetGameObject(goList[i], "Image"):SetActive(false)
-- end
-- else
-- mailList[i].gameObject:SetActive(false)
-- Util.GetGameObject(goList[i], "Image"):SetActive(false)
-- end
--end
local rewardStr = {}
for i = 1, #itemList do
if itemList[i] ~= "" then
local singlerewardStr=string.split( itemList[i],"#")
local itemData={}
table.insert(itemData,tonumber(singlerewardStr[1]))
table.insert(itemData,tonumber(singlerewardStr[2]))
table.insert(rewardStr,itemData)
end
end
self.ScrollView:SetData(rewardStr, function (index, go)
self:SingleMailDataShow(go, rewardStr[index])
end)
-- 根据是否有附件动态修改邮件内容显示状态
if #rewardStr > 0 then
self.root:SetActive(true)
self.line:SetActive(true)
self.mialInfoRoot.transform.sizeDelta = Vector2.New(683, 439.7)
self.mialInfoRoot.transform.localPosition = Vector2.New(0, 181)
else
self.root:SetActive(false)
self.line:SetActive(false)
self.mialInfoRoot.transform.sizeDelta = Vector2.New(683, 743.98)
self.mialInfoRoot.transform.localPosition = Vector2.New(5.50, 29)
end
end
local _ItemList = {}
function MainSingleInfoPanel:SingleMailDataShow(go, rewardStr)
if not _ItemList[go] then
_ItemList[go] = SubUIManager.Open(SubUIConfig.ItemView, go.transform)
end
_ItemList[go]:OnOpen(false,rewardStr,1,false,false,false,self.sortingOrder)
local getImage = Util.GetGameObject(go, "Image")
if mailData.state == 3 then
getImage:SetActive(true)
getImage.transform:SetSiblingIndex(2)
else
getImage:SetActive(false)
end
end
--界面关闭时调用(用于子类重写)
function MainSingleInfoPanel:OnClose()
hasGot = false
activeNum = 0
end
--界面销毁时调用(用于子类重写)
function MainSingleInfoPanel:OnDestroy()
self.spLoader:Destroy()
_ItemList = {}
mailList = {}
goList = {}
end
return MainSingleInfoPanel