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