----- 日常任务弹窗 ----- local this = {} --传入父脚本模块 local parent --传入特效层级 local sortingOrder=0 local curScore = 0--当前分数 local treasureState = 0 local itemsList={} function this:InitComponent(gameObject) --topBar/btnBack this.gameObject = gameObject this.quesBtn = Util.GetGameObject(this.gameObject, "bg/quesBtn") this.helpPosition= this.quesBtn:GetComponent("RectTransform").localPosition this.tips = Util.GetGameObject(this.gameObject, "bg/topBar/tips"):GetComponent("Text") this.time = Util.GetGameObject(this.gameObject, "bg/topBar/time/Text"):GetComponent("Text") this.buyBtn = Util.GetGameObject(this.gameObject, "bg/topBar/button/buyBtn") this.buyBtnText = Util.GetGameObject(this.buyBtn, "Text"):GetComponent("Text") this.jiesuoBtn = Util.GetGameObject(this.gameObject, "bg/topBar/button/jiesuoBtn") this.jiesuoBtnText = Util.GetGameObject(this.jiesuoBtn, "Text"):GetComponent("Text") this.lv = Util.GetGameObject(this.gameObject, "bg/topBar/Image/lv"):GetComponent("Text") --Content this.progress = Util.GetGameObject(this.gameObject, "bg/topBar/progress/Image"):GetComponent("Image") this.scoreText = Util.GetGameObject(this.gameObject, "bg/topBar/progress/Text"):GetComponent("Text") this.remainTime = Util.GetGameObject(this.gameObject, "bg/topBar/remainTime/Text"):GetComponent("Text") this.box = Util.GetGameObject(this.gameObject, "topBar/box") this.extra = Util.GetGameObject(this.gameObject, "topBar/extraBox") this.canOpenExtra = Util.GetGameObject(this.gameObject, "topBar/UI_Effect_BaoXiang_KeKaiQi") this.canOpenExtra.gameObject:SetActive(false) this.openExtra = Util.GetGameObject(this.gameObject, "topBar/UI_Effect_BaoXiang_KaiQi") this.openExtra.gameObject:SetActive(false) this.treasureList = Util.GetGameObject(this.gameObject, "bg/pageContent/treasureList") local v2 = this.treasureList:GetComponent("RectTransform").sizeDelta this.itemPre = Util.GetGameObject(this.treasureList, "itemPro") --设置滚动条 this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView,this.treasureList.transform, this.itemPre,nil,Vector2.New(v2.x, v2.y),1,1,Vector2.New(100,3.5)) this.ScrollView.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(0, 0) this.ScrollView.gameObject:GetComponent("RectTransform").anchorMin = Vector2.New(0.5, 0.5) this.ScrollView.gameObject:GetComponent("RectTransform").anchorMax = Vector2.New(0.5, 0.5) this.ScrollView.gameObject:GetComponent("RectTransform").pivot = Vector2.New(0.5, 0.5) this.ScrollView.moveTween.MomentumAmount = 1 this.ScrollView.moveTween.Strength = 2 end function this:BindEvent() Util.AddClick(this.quesBtn,function() LogGreen(this.helpPosition.x.."+"..this.helpPosition.y) UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.QingLongSerectTreasure,this.helpPosition.x,this.helpPosition.y) end) end function this:AddListener() Game.GlobalEvent:AddEvent(GameEvent.TreasureOfHeaven.BuyQinglongSerectLevelSuccess, this.refresh) Game.GlobalEvent:AddEvent(GameEvent.TreasureOfHeaven.RechargeQinglongSerectSuccess, this.refresh) Game.GlobalEvent:AddEvent(GameEvent.Activity.OnActivityOpenOrClose,this.Closefunction) Game.GlobalEvent:AddEvent(GameEvent.MoneyPay.OnPayResultSuccess, this.refresh) end function this:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.TreasureOfHeaven.BuyQinglongSerectLevelSuccess, this.refresh) Game.GlobalEvent:RemoveEvent(GameEvent.TreasureOfHeaven.RechargeQinglongSerectSuccess, this.refresh) Game.GlobalEvent:RemoveEvent(GameEvent.Activity.OnActivityOpenOrClose,this.Closefunction) Game.GlobalEvent:RemoveEvent(GameEvent.MoneyPay.OnPayResultSuccess, this.refresh) end this.Closefunction = function() Timer.New(function() if not ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.TreasureOfSomeBody) then LogBlue("1111111") PopupTipPanel.ShowTip(Language[12320]) if parent then parent:ClosePanel() end return else this.refresh() end end,1):Start() end function this:OnShow(_parent,...) parent=_parent sortingOrder = _parent.sortingOrder if not ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.TreasureOfSomeBody) then parent:ClosePanel() return end this.tips.text = Language[12350] local startTime,endTime,endTimeScale = QinglongSerectTreasureManager.GetTimeStartToEnd() this.time.text = Language[10546]..startTime.."-"..endTime this.remainTime.text = Language[12321]..TimeToDHMS(tonumber(endTimeScale) - GetTimeStamp()) this:ShowTime(endTimeScale) this.refresh() end function this:OnSortingOrderChange(sortingOrder) Util.SetParticleSortLayer(this.canOpenExtra, sortingOrder) Util.SetParticleSortLayer(this.openExtra, sortingOrder) end function this:OnClose() if self.timer then self.timer :Stop() self.timer = nil end end function this:OnDestroy() itemsList={} if self.timer then self.timer :Stop() self.timer = nil end end this.refresh = function() QinglongSerectTreasureManager.UpdateTreasureState2() this:topBar() this:showTaskList() CheckRedPointStatus(RedPointType.QinglongSerectTreasure) end --topBar按钮状态 function this:topBar() --设置礼包购买按钮状态 treasureState = QinglongSerectTreasureManager.GetTreasureState()--秘宝礼包状态 false:可购买 true:已购买 curScore = QinglongSerectTreasureManager.GetScore() local lv = QinglongSerectTreasureManager.GetLevel() this.lv.text = lv local rewardData = QinglongSerectTreasureManager.GetRewardData(lv) local needScore if lv > 0 then local lastRewardData = QinglongSerectTreasureManager.GetRewardData(lv - 1) if not lastRewardData then needScore = 0 else needScore = lastRewardData.needScore end else needScore = 0 end if rewardData.needScore and rewardData.needScore ~= 0 then this.scoreText.text = curScore .."/"..rewardData.needScore - needScore this.progress.fillAmount = curScore/(rewardData.needScore - needScore) this.buyBtn:GetComponent("Button").enabled = true this.buyBtnText.text = Language[12354] Util.AddOnceClick(this.buyBtn,function() UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.QinglongSerectTreasureBuyLevel) end) else this.scoreText.text = Language[12351] this.progress.fillAmount = 1 this.buyBtn:GetComponent("Button").enabled = false this.buyBtnText.text = Language[12351] end this.jiesuoBtn:GetComponent("Button").enabled = (not treasureState) this.jiesuoBtnText.text = ((not treasureState) and Language[12352] or Language[12353]) Util.AddOnceClick(this.jiesuoBtn,function() UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.HeavenUnlockExtraRewardPanel,2) end) local times = PrivilegeManager.GetPrivilegeRemainValue(1007) this.box :GetComponent("Image").enabled = (not treasureState) this.extra:GetComponent("Button").enabled = ((treasureState) and (times > 0)) this.canOpenExtra.gameObject:SetActive((treasureState) and (times > 0)) this.openExtra:GetComponent("Animator").enabled = false this.openExtra.gameObject:SetActive((treasureState) and (times <= 0)) Util.GetGameObject(this.openExtra,"MeiKaiQi"):SetActive(false) Util.GetGameObject(this.openExtra,"KaiQi"):SetActive(true) Util.AddOnceClick(this.extra,function() this.extra:GetComponent("Button").enabled = false this.canOpenExtra.gameObject:SetActive(false) this.openExtra.gameObject:SetActive(true) Util.GetGameObject(this.openExtra,"KaiQi"):SetActive(false) Util.GetGameObject(this.openExtra,"MeiKaiQi"):SetActive(true) this.openExtra:GetComponent("Animator").enabled = true Timer.New(function() local id = ActivityGiftManager.GetActivityIdByType(ActivityTypeDef.TreasureOfSomeBody) NetManager.GetActivityRewardRequest(-2,id,function(msg) PrivilegeManager.RefreshPrivilegeUsedTimes(1007, 1) PopupTipPanel.ShowTip(Language[12355]) Timer.New(function() LogBlue("level:"..QinglongSerectTreasureManager.GetLevel()) this.refresh() end,1):Start() end) end,1.5):Start() end) end --任务列表 function this:showTaskList() local rewardData = QinglongSerectTreasureManager.GetAllRewardData() this.ScrollView:SetData(rewardData,function(index, rewardItem) this:SingleTask(rewardItem, rewardData[index]) end) local index = 0 if QinglongSerectTreasureManager.GetLevel() == 1 then index = 1 else for k,v in ipairs(rewardData) do if v.state == 1 and treasureState then index = k break elseif v.state == 0 and treasureState then index = k break elseif v.state == 0 and (not treasureState) and (k < 35) then index = k break elseif v.state == 0 and (not treasureState) and (k >= 35) then index = 35 break end end if index == 0 then for i = #rewardData , 1 , -1 do if (rewardData[i].state == -1) or (rewardData[i].state == 1 and not treasureState) then index = i break end end end end this.ScrollView:SetIndex(index) end --单个任务 function this:SingleTask(rewardItem, rewardSingleData) local scoreLevel = Util.GetGameObject(rewardItem, "scoreLevel"):GetComponent("Text") local box1 = Util.GetGameObject(rewardItem, "box1") local box2 = Util.GetGameObject(rewardItem, "box2") if not itemsList[rewardItem] then itemsList[rewardItem] = {} end for i = 1, #itemsList[rewardItem] do itemsList[rewardItem][i].gameObject:SetActive(false) end scoreLevel.text = rewardSingleData.level for i = 1, #rewardSingleData.Reward do if not itemsList[rewardItem][i] then itemsList[rewardItem][i] = SubUIManager.Open(SubUIConfig.ItemView,box1.transform) itemsList[rewardItem][i].gameObject:SetActive(false) end if rewardSingleData.Reward[i] then if rewardSingleData.Reward[i].type == 1 then itemsList[rewardItem][i].gameObject.transform:SetParent(box1.transform) else itemsList[rewardItem][i].gameObject.transform:SetParent(box2.transform) end itemsList[rewardItem][i].gameObject:GetComponent("RectTransform").localPosition = Vector3.zero itemsList[rewardItem][i].gameObject:SetActive(true) itemsList[rewardItem][i]:OnOpen(false, rewardSingleData.Reward[i].item, 0.8, false) else itemsList[rewardItem][i].gameObject:SetActive(false) end end --初始化按钮状态 this:InitButtonState(rewardItem, rewardSingleData) end local type={ [-2]={sprite = "s_slbz_1anniuhuise",text = Language[10348]}, [-1]={sprite = "t_tequan_yidacheng",text = ""}, [0]={sprite = "s_slbz_1anniuongse",text = Language[10022]}, [1]={sprite = "s_slbz_1anniuhuangse",text = Language[12356]} } --初始化按钮状态 function this:InitButtonState(rewardItem, rewardSingleData) local btnDeal = Util.GetGameObject(rewardItem, "btnDeal") local get = Util.GetGameObject(rewardItem, "btnDeal/get"):GetComponent("Image") local text = Util.GetGameObject(get.gameObject, "Text"):GetComponent("Text") local redPoint = Util.GetGameObject(rewardItem, "btnDeal/redPoint") --当前任务领取情况 local state = rewardSingleData.state Util.GetGameObject(get.gameObject, "Image"):SetActive(state == -1) redPoint:SetActive(state == 0 or (state == 1 and treasureState)) get.sprite = Util.LoadSprite(type[state].sprite) get.enabled = true text.text = type[state].text if state == -1 then btnDeal:GetComponent("Button").enabled = false get.enabled = false else btnDeal:GetComponent("Button").enabled = true Util.AddOnceClick(btnDeal,function() this:OnBtnDealClicked(rewardItem,rewardSingleData) end) end end --按钮事件 function this:OnBtnDealClicked(rewardItem,rewardSingleData) if rewardSingleData.state ~= -2 then--分数达到要求 if (rewardSingleData.state == 0) or--任务未领取 (rewardSingleData.state == 1 and treasureState) then--任务未领取+礼包已购买 local id = ActivityGiftManager.GetActivityIdByType(ActivityTypeDef.TreasureOfSomeBody) LogBlue("activityId:"..id) NetManager.GetActivityRewardRequest(rewardSingleData.level,id,function(msg) UIManager.OpenPanel(UIName.RewardItemPopup,msg,1) --需要刷新界面 if not treasureState then--判断是否已经购买了礼包 QinglongSerectTreasureManager.SetSingleRewardState(rewardSingleData.level,1) else QinglongSerectTreasureManager.SetSingleRewardState(rewardSingleData.level,-1) end this.refresh()--刷新界面 end) elseif rewardSingleData.state == 1 and (not treasureState) then----任务已领取+礼包未购买(弹出购买界面) UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.HeavenUnlockExtraRewardPanel,2) end else--分数未达到要求 PopupTipPanel.ShowTip(Language[11989]) end end function this:ShowTime(endtime) if self.timer then self.timer:Stop() self.timer = nil end local timeDown= endtime - GetTimeStamp() this.remainTime.text = Language[12321]..TimeToDHMS(timeDown) self.timer = Timer.New(function() if timeDown < 1 then this.remainTime.text = Language[12321]..TimeToDHMS(0) self.timer:Stop() self.timer = nil return end timeDown = timeDown - 1 this.remainTime.text = Language[12321]..TimeToDHMS(timeDown) end, 1, -1, true) self.timer:Start() end return this