require("Base/BasePanel") local GeneralTreasurePanel = Inherit(BasePanel) local itemnum = 0 local LocalData = { [ActivityTypeDef.QiJieTreasure] = {itemId = 1242,hp = HELP_TYPE.QiJieTreasure,imgName = "q_qjsl_qjmb2",imgBg = "q_qjsl_qjmb",unLockType = 4,Tips = "挑战七界试炼,提升秘宝等级,激活秘宝后还可领取额外奖励"},--七界秘宝 } local id=0 --初始化组件(用于子类重写) function GeneralTreasurePanel:InitComponent() self.spLoader = SpriteLoader.New() --topBar/btnBack self.btnBack = Util.GetGameObject(self.transform, "btnBack") self.buyBtn = Util.GetGameObject(self.transform, "bg/topBar/buyBtn") self.Text1 = Util.GetGameObject(self.buyBtn, "buy"):GetComponent("Text") self.topBarImg = Util.GetGameObject(self.transform, "bg/topBar"):GetComponent("Image") 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") --img self.titleName = Util.GetGameObject(self.transform, "bg/titleName"):GetComponent("Image") self.btn_qmfl=Util.GetGameObject(self.transform, "bg/topBar/btn_qmfl") self.btn_qmfl:GetComponent("Image").sprite=self.spLoader:LoadSprite("GM_qmfl_botton_zh") --设置滚动条 self.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView,self.treasureList.transform,self.itemPre,nil,Vector2.New(1011.2, 1133),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 GeneralTreasurePanel:BindEvent() Util.AddClick(self.btnBack,function() self:ClosePanel() end) Util.AddClick(self.quesBtn,function() UIManager.OpenPanel(UIName.HelpPopup,LocalData[self.curType].hp,self.helpPosition.x,self.helpPosition.y) end) Util.AddClick(self.btn_qmfl,function() --LogGreen(this.helpPosition.x.."+"..this.helpPosition.y) UIManager.OpenPanel(UIName.QuanMinFLPanel,id) end) end function GeneralTreasurePanel:OnSortingOrderChange() end --添加事件监听(用于子类重写) function GeneralTreasurePanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.SerectTreasure.RechargeSuccess, self.refresh,self) end --移除事件监听(用于子类重写) function GeneralTreasurePanel:RemoveListener() Game.GlobalEvent:AddEvent(GameEvent.SerectTreasure.RechargeSuccess, self.refresh,self) end --界面打开时调用(用于子类重写) function GeneralTreasurePanel:OnOpen(...) self.curType = ... end -- 打开,重新打开时回调 function GeneralTreasurePanel:OnShow() --暂时注释 LogError("curtype========"..self.curType) if self.curType==83 then id=ActivityGiftManager.GetActivityIdByType(self.curType) self.btn_qmfl:SetActive(ActivityGiftManager.GetActivityInfoByType(10502)~=nil and ActivityGiftManager.CheckIsHaveHaveQMFL(self.curType,id) ) LogError("id=============="..id) else self.btn_qmfl:SetActive(false) end self.treasureData = GeneralTreasureMangaer.GetTreasureData(self.curType) self:ShowTime() self:topBar() self:showTaskList(true,true) end function GeneralTreasurePanel:refresh(isTop,isAni) self.treasureData = GeneralTreasureMangaer.GetTreasureData(self.curType) self:topBar() self:showTaskList(isTop,isAni) end --topBar按钮状态 function GeneralTreasurePanel:topBar() --设置礼包购买按钮状态 self.topBarImg.sprite = self.spLoader:LoadSprite(LocalData[self.curType].imgBg) self.tips.text = LocalData[self.curType].Tips self.titleName.sprite = self.spLoader:LoadSprite(LocalData[self.curType].imgName) 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,LocalData[self.curType].unLockType) end) end --任务列表 function GeneralTreasurePanel:showTaskList(isTop,isAni) self.scoreText.text = BagManager.GetTotalItemNum(LocalData[self.curType].itemId) if not self.itemsList then self.itemsList = {} end if not self.itemsList2 then self.itemsList2 = {} end self.ScrollView:SetData(self.treasureData.dataList,function(index, rewardItem) self:SingleTask(rewardItem, self.treasureData.dataList[index]) end,not isTop,not isAni) --4 未达成 3 可再次领取 2 可领取 1 已领取 -1 完美领取(充钱领取过的) --定位打开界面时位置 -- if isTop then local t = 0 if self.treasureData.treasureState == 0 then for i = 1, #self.treasureData.dataList do if self.treasureData.dataList[i].State == 2 then t = i break end end else for i = 1, #self.treasureData.dataList do if self.treasureData.dataList[i].State == 2 or self.treasureData.dataList[i].State == 3 then t = i break end end end if t == 0 then for i = 1, #self.treasureData.dataList do if self.treasureData.dataList[i].State == 4 then t = i break end end end self.ScrollView:SetIndex(t-1) -- end end --单个任务 function GeneralTreasurePanel: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 if not self.itemsList[rewardItem][i] then self.itemsList[rewardItem][i] = SubUIManager.Open(SubUIConfig.ItemView,scroll1.transform) end self.itemsList[rewardItem][i].transform:SetParent(scroll1.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][1], singleData.Reward[i][2]}, 0.7, false) end if not self.itemsList2[rewardItem] then self.itemsList2[rewardItem] = {} end for k,v in pairs(self.itemsList2[rewardItem]) do v.gameObject:SetActive(false) end for i = 1 ,#singleData.TreasureReward do if not self.itemsList2[rewardItem][i] then self.itemsList2[rewardItem][i] = SubUIManager.Open(SubUIConfig.ItemView,scroll2.transform) end self.itemsList2[rewardItem][i].transform:SetParent(scroll2.transform) self.itemsList2[rewardItem][i].transform.localScale = Vector3.one self.itemsList2[rewardItem][i].transform.localPosition = Vector3.zero self.itemsList2[rewardItem][i].gameObject:SetActive(true) self.itemsList2[rewardItem][i]:OnOpen(false, {singleData.TreasureReward[i][1], singleData.TreasureReward[i][2]}, 0.7, false) end scoreLevel.text = singleData.Integral[1][2] --初始化按钮状态 self:InitButtonState(rewardItem, singleData) end --初始化按钮状态 function GeneralTreasurePanel: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) end --按钮事件 function GeneralTreasurePanel: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.GetActivityRewardRequest(singleData.Id,self.treasureData.ActId,function (drop) UIManager.OpenPanel(UIName.RewardItemPopup,drop,1,function() self:refresh(false,false) end) end) elseif singleData.State == 1 then UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.HeavenUnlockExtraRewardPanel,LocalData[self.curType].unLockType) end end function GeneralTreasurePanel:ShowTime() if self.localTimer then self.localTimer:Stop() self.localTimer = nil end self.time.text = "重置时间:"..TimeToDHMS(self.treasureData.endTime - GetTimeStamp()) local time = self.treasureData.endTime - GetTimeStamp() if time <= 0 then PopupTipPanel.ShowTip("本期秘宝活动结束!") self:ClosePanel() end self.localTimer = Timer.New(function() time = time - 1 if time <= 0 then self.time.text = "重置时间:"..TimeToDHMS(0) self.localTimer:Stop() self.localTimer = nil PopupTipPanel.ShowTip("本期秘宝活动结束!") self:ClosePanel() end self.time.text = "重置时间:"..TimeToDHMS(time) end,1,-1,true) self.localTimer:Start() end --界面关闭时调用(用于子类重写) function GeneralTreasurePanel:OnClose() Game.GlobalEvent:DispatchEvent(GameEvent.QiJieShiLian.CloseBuyTreasure) if self.localTimer then self.localTimer:Stop() self.localTimer = nil end end --界面销毁时调用(用于子类重写) function GeneralTreasurePanel:OnDestroy() self.spLoader:Destroy() self.itemsList = {} self.itemsList2 = {} end return GeneralTreasurePanel