require("Base/BasePanel") local EndLessTreasurePanel = Inherit(BasePanel) local itemnum = 0 --初始化组件(用于子类重写) function EndLessTreasurePanel:InitComponent() --topBar/btnBack self.btnBack = Util.GetGameObject(self.transform, "bg/btnBack") self.buyBtn = Util.GetGameObject(self.transform, "bg/topBar/buyBtn") self.Text1 = Util.GetGameObject(self.buyBtn, "buy"):GetComponent("Text") self.tips = Util.GetGameObject(self.transform, "bg/topBar/tips"):GetComponent("Text") self.time = Util.GetGameObject(self.transform, "bg/topBar/time"):GetComponent("Text") self.quesBtn = Util.GetGameObject(self.transform, "bg/quesBtn") self.helpPosition=self.quesBtn:GetComponent("RectTransform").localPosition --Content self.scoreText = Util.GetGameObject(self.transform, "bg/pageContent/bg/score/number"):GetComponent("Text") self.treasureList = Util.GetGameObject(self.transform, "bg/pageContent/treasureList") self.itemPre = Util.GetGameObject(self.transform, "bg/pageContent/itemPro") self.itemPos = Util.GetGameObject(self.transform, "bg/pageContent/itemPos") --设置滚动条 self.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView,self.treasureList.transform,self.itemPre,nil,Vector2.New(950, 1000),1,1,Vector2.New(100, 25)) self.ScrollView.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(0, 0) self.ScrollView.gameObject:GetComponent("RectTransform").anchorMin = Vector2.New(0.5, 0.5) self.ScrollView.gameObject:GetComponent("RectTransform").anchorMax = Vector2.New(0.5, 0.5) self.ScrollView.gameObject:GetComponent("RectTransform").pivot = Vector2.New(0.5, 0.5) self.ScrollView.moveTween.MomentumAmount = 1 self.ScrollView.moveTween.Strength = 2 end --绑定事件(用于子类重写) function EndLessTreasurePanel:BindEvent() Util.AddClick(self.btnBack,function() self:ClosePanel() end) Util.AddClick(self.quesBtn,function() UIManager.OpenPanel(UIName.HelpPopup,93,self.helpPosition.x,self.helpPosition.y) end) end function EndLessTreasurePanel:OnSortingOrderChange() end --添加事件监听(用于子类重写) function EndLessTreasurePanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.EndLess.RechargeQinglongSerectSuccess, self.refresh,self) Game.GlobalEvent:AddEvent(GameEvent.EndLess.QinglongSerectRefresh, self.OnShow,self) end --移除事件监听(用于子类重写) function EndLessTreasurePanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.EndLess.RechargeQinglongSerectSuccess, self.refresh,self) Game.GlobalEvent:AddEvent(GameEvent.EndLess.QinglongSerectRefresh, self.OnShow,self) end --界面打开时调用(用于子类重写) function EndLessTreasurePanel:OnOpen(...) end -- 打开,重新打开时回调 function EndLessTreasurePanel:OnShow() self.treasureData = EndLessMapManager.treasureData self.tips.text = self.treasureData.tip --self.time.gameObject:SetActive(false) self.time.text = "重置时间:"..TimeToDHMS(self.treasureData.resetTime - GetTimeStamp()) self:ShowTime() self:topBar() self:showTaskList(true,true) end function EndLessTreasurePanel:refresh(isTop,isAni) self:topBar() self:showTaskList(isTop,isAni) end --topBar按钮状态 function EndLessTreasurePanel:topBar() --设置礼包购买按钮状态 self.buyBtn:GetComponent("Button").interactable = self.treasureData.treasureState == 0 self.Text1.text = self.treasureData.treasureState == 0 and "激活秘宝" or "已激活" Util.AddOnceClick(self.buyBtn,function() UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.HeavenUnlockExtraRewardPanel,3) end) end --任务列表 function EndLessTreasurePanel:showTaskList(isTop,isAni) itemnum = BagManager.GetItemCountById(EndLessMapManager.scoreValueId) or 0 self.scoreText.text = itemnum if not self.itemsList then self.itemsList = {} end self.ScrollView:SetData(self.treasureData.rewardData,function(index, rewardItem) self:SingleTask(rewardItem, self.treasureData.rewardData[index]) end,not isTop,not isAni) --4 未达成 3 可再次领取 2 可领取 1 已领取 -1 完美领取(充钱领取过的) --定位打开界面时位置 local t = 0 for i = 1, #self.treasureData.rewardData do if self.treasureData.rewardData[i].state == 2 or self.treasureData.rewardData[i].state == 3 then t = i break end end if t == 0 then for i = 1, #self.treasureData.rewardData do if self.treasureData.rewardData[i].state == 4 or self.treasureData.rewardData[i].state == 4 then t = i break end end end self.ScrollView:SetIndex(t) end --单个任务 function EndLessTreasurePanel:SingleTask(rewardItem, singleData) local scoreLevel = Util.GetGameObject(rewardItem, "scoreLevel"):GetComponent("Text") local scroll1 = Util.GetGameObject(rewardItem, "scroll1") local scroll2 = Util.GetGameObject(rewardItem, "scroll2") if not self.itemsList[rewardItem] then self.itemsList[rewardItem] = {} end for k,v in pairs(self.itemsList[rewardItem]) do v.gameObject:SetActive(false) end for i = 1 ,#singleData.Reward do local parent if singleData.Reward[i].type == 1 then parent = scroll1 else parent = scroll2 end if not self.itemsList[rewardItem][i] then self.itemsList[rewardItem][i] = SubUIManager.Open(SubUIConfig.ItemView,parent.transform) end self.itemsList[rewardItem][i].transform:SetParent(parent.transform) self.itemsList[rewardItem][i].transform.localScale = Vector3.one self.itemsList[rewardItem][i].transform.localPosition = Vector3.zero self.itemsList[rewardItem][i].gameObject:SetActive(true) self.itemsList[rewardItem][i]:OnOpen(false, {singleData.Reward[i].id, singleData.Reward[i].num}, 0.8, false) end scoreLevel.text = singleData.Level --初始化按钮状态 self:InitButtonState(rewardItem, singleData) end --初始化按钮状态 function EndLessTreasurePanel:InitButtonState(rewardItem, singleData) local btnDeal = Util.GetGameObject(rewardItem, "btnDeal") local get = Util.GetGameObject(rewardItem, "btnDeal/get") local getAgain = Util.GetGameObject(rewardItem, "btnDeal/getAgain") local unfinished = Util.GetGameObject(rewardItem, "btnDeal/unfinished") local finished = Util.GetGameObject(rewardItem, "finished") local redPoint = Util.GetGameObject(rewardItem, "btnDeal/redPoint") --当前任务领取情况 local state = singleData.state --4 未达成 3 可再次领取 2 可领取 1 已领取 -1 完美领取(充钱领取过的) --判断 if state == 4 then btnDeal.gameObject:SetActive(true) get.gameObject:SetActive(false) getAgain.gameObject:SetActive(false) unfinished.gameObject:SetActive(true) finished.gameObject:SetActive(false) redPoint:SetActive(false) elseif state == 3 then btnDeal.gameObject:SetActive(true) get.gameObject:SetActive(false) getAgain.gameObject:SetActive(true) unfinished.gameObject:SetActive(false) finished.gameObject:SetActive(false) redPoint:SetActive(true) elseif state == 2 then btnDeal.gameObject:SetActive(true) get.gameObject:SetActive(true) getAgain.gameObject:SetActive(false) unfinished.gameObject:SetActive(false) finished.gameObject:SetActive(false) redPoint:SetActive(true) elseif state == 1 then btnDeal.gameObject:SetActive(true) get.gameObject:SetActive(false) getAgain.gameObject:SetActive(true) unfinished.gameObject:SetActive(false) finished.gameObject:SetActive(false) redPoint:SetActive(false) elseif state == -1 then btnDeal.gameObject:SetActive(false) get.gameObject:SetActive(false) getAgain.gameObject:SetActive(false) unfinished.gameObject:SetActive(false) finished.gameObject:SetActive(true) redPoint:SetActive(false) end --添加点击事件 Util.AddOnceClick(btnDeal,function() self:OnBtnDealClicked(rewardItem,singleData) end) --红点状态 --redPoint:SetActive(TreasureOfHeavenManger.RedPointState(singleData,self.treasureData.treasureState)) end --按钮事件 function EndLessTreasurePanel:OnBtnDealClicked(rewardItem,singleData) local btnDeal = Util.GetGameObject(rewardItem, "btnDeal") local get = Util.GetGameObject(rewardItem, "btnDeal/get") local getAgain = Util.GetGameObject(rewardItem, "btnDeal/getAgain") local unfinished = Util.GetGameObject(rewardItem, "btnDeal/unfinished") local finished = Util.GetGameObject(rewardItem, "btnDeal/finished") if singleData.state == 4 then PopupTipPanel.ShowTip(Language[11330]) elseif singleData.state == 3 or singleData.state == 2 then NetManager.EndlessTakeTreasureRequest(singleData.Id,function(msg) UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function() --需要刷新界面 if self.treasureData.treasureState == 0 then--判断是否已经购买了礼包 EndLessMapManager.SetTreasureState(singleData.Id,1) else EndLessMapManager.SetTreasureState(singleData.Id,-1) end CheckRedPointStatus(RedPointType.wujinTreasure) CheckRedPointStatus(RedPointType.EndlessPanel) self:refresh()--刷新界面 end) end) elseif singleData.state == 1 then UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.HeavenUnlockExtraRewardPanel,3) end end function EndLessTreasurePanel:ShowTime() if self.localTimer then self.localTimer:Stop() self.localTimer = nil end local time = self.treasureData.resetTime - GetTimeStamp() if time <= 0 then return end self.localTimer = Timer.New(function() time = time - 1 if time <= 0 then self.time.text = "重置时间:"..TimeToDHMS(0) self.localTimer:Stop() self.localTimer = nil return end self.time.text = "重置时间:"..TimeToDHMS(time) end,1,-1,true) self.localTimer:Start() end --界面关闭时调用(用于子类重写) function EndLessTreasurePanel:OnClose() if self.localTimer then self.localTimer:Stop() self.localTimer = nil end end --界面销毁时调用(用于子类重写) function EndLessTreasurePanel:OnDestroy() rewardData = {} end return EndLessTreasurePanel