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

226 lines
8.4 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[11751]
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(857, 526)
self.mialInfoRoot.transform.localPosition = Vector2.New(0, 173)
else
self.root:SetActive(false)
self.line:SetActive(false)
self.mialInfoRoot.transform.sizeDelta = Vector2.New(857, 898)
self.mialInfoRoot.transform.localPosition = Vector2.New(0, 0)
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