----- 试练副本奖励弹窗 ----- require("Base/BasePanel") local TrialRewardPopup = Inherit(BasePanel) local this = TrialRewardPopup local rewardConfig local itemList = {} --预设容器 local sortingOrder = 0 local getFunc = {} local pres = {} local curType = 0 local scrollView = nil function TrialRewardPopup:InitComponent() this.spLoader = SpriteLoader.New() this.panel = Util.GetGameObject(this.gameObject, "Panel") this.backBtn = Util.GetGameObject(this.panel, "BackBtn") this.maskBtn = Util.GetGameObject(this.gameObject, "Mask") this.title = Util.GetGameObject(this.panel, "Title"):GetComponent("Text") this.scroll = Util.GetGameObject(this.panel, "Scroll") pres[1] = Util.GetGameObject(this.panel, "Scroll/Pre") pres[2] = Util.GetGameObject(this.panel, "Scroll/Pre3") pres[4] = Util.GetGameObject(this.panel, "Scroll/Pre4") pres[5] = Util.GetGameObject(this.panel, "Scroll/Pre3") scrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, this.scroll.transform, pres[MonsterCampManager.preType], nil, Vector2.New(this.scroll.transform.rect.width, this.scroll.transform.rect.height), 1, 1, Vector2.New(0, 5)) scrollView.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(0, 0) scrollView.gameObject:GetComponent("RectTransform").anchorMin = Vector2.New(0.5, 0.5) scrollView.gameObject:GetComponent("RectTransform").anchorMax = Vector2.New(0.5, 0.5) scrollView.gameObject:GetComponent("RectTransform").pivot = Vector2.New(0.5, 0.5) scrollView.moveTween.MomentumAmount = 1 scrollView.moveTween.Strength = 2 scrollView.elastic = false end function TrialRewardPopup:BindEvent() Util.AddClick(this.backBtn, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) Util.AddClick(this.maskBtn, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) end function TrialRewardPopup:AddListener() end function TrialRewardPopup:RemoveListener() end function TrialRewardPopup:OnSortingOrderChange() sortingOrder = self.sortingOrder end function TrialRewardPopup:OnOpen(...) local arg = { ... } rewardConfig = arg[1] getFunc = arg[2] curType = arg[3] end function TrialRewardPopup:OnShow() this.RefreshPanel(true, true) sortingOrder = self.sortingOrder end function TrialRewardPopup:OnClose() end function TrialRewardPopup:OnDestroy() this.spLoader:Destroy() scrollView = nil itemList = {} end --0 已经领取,1 可领取,2不能领取· local sortIndex = { [0] = 0, [1] = 2, [2] = 1, } --刷新 function this.RefreshPanel(isTop, isAni) if curType ~= 4 then table.sort(rewardConfig, function(a, b) if sortIndex[a.state] == sortIndex[b.state] then return a.Id < b.Id end return sortIndex[a.state] > sortIndex[b.state] end) scrollView:SetData(rewardConfig, function(index, root) this.SetScrollPre(root, rewardConfig[index]) end, not isTop, not isAni) else --踏碎凌霄-仅供展示 scrollView:SetData(rewardConfig, function(index, root) this.SetScrollPre2(root, rewardConfig[index]) end, not isTop, not isAni) end this.title.text = Language[10035] if curType == 5 then this.title.text = Language[12263] end end --设置每条数据 function this.SetScrollPre(root, data) local info = Util.GetGameObject(root, "Title/Info"):GetComponent("Text") local grid = Util.GetGameObject(root, "Grid") local goBtn = Util.GetGameObject(root, "GoBtn") local getBtn = Util.GetGameObject(root, "GetBtn") local mask = Util.GetGameObject(root, "mask") local pregress = Util.GetGameObject(root, "getRewardProgress") if pregress then if curType == 2 then pregress.gameObject:SetActive(true) pregress:GetComponent("Text").text = "(" .. (MonsterCampManager.monsterWave - 1) .. "/" .. data.Id .. ")" else pregress.gameObject:SetActive(false) end end info.text = data.info --string.format( Language[11799],data.Count,MapTrialManager.GetKilCount(),data.Count) --ResetItemView(root,grid.transform,itemList,#data.BoxReward,0.9,sortingOrder,false,data.BoxReward) if not itemList[root] then itemList[root] = {} end for k, v in ipairs(itemList[root]) do v.gameObject:SetActive(false) end for i = 1, #data.BoxReward do if not itemList[root][i] then itemList[root][i] = SubUIManager.Open(SubUIConfig.ItemView, grid.transform) itemList[root][i].gameObject:SetActive(false) end itemList[root][i]:OnOpen(false, data.BoxReward[i], 0.9, false, false, false, sortingOrder) itemList[root][i].gameObject:SetActive(true) end if data.state == 0 then -- goText.text="已领取" mask:GetComponent("Image").sprite = this.spLoader:LoadSprite("s_slbz_yilingqu_zh") mask:SetActive(true) goBtn:SetActive(false) getBtn:SetActive(false) elseif data.state == 1 then -- goText.text="领取" mask:SetActive(false) goBtn:SetActive(false) getBtn:SetActive(true) elseif data.state == 2 then -- goText.text="前往" mask:SetActive(false) goBtn:SetActive(true) getBtn:SetActive(false) end Util.AddOnceClick(goBtn, function() this:ClosePanel() if data.jump and data.jump > 0 then JumpManager.GoJump(data.jump) end end) Util.AddOnceClick(getBtn, function() if getFunc then getFunc(data.Id, function() mask:SetActive(true) getBtn:SetActive(false) this.ChangeState(data.Id) this.RefreshPanel(false, false) end) end end) end --设置每条数据 function this.SetScrollPre2(root, data) local info = Util.GetGameObject(root, "Title/Info"):GetComponent("Text") local grid = Util.GetGameObject(root, "Grid") local mask = Util.GetGameObject(root, "mask") info.text = string.format(Language[12264], data.otherData.Sort, data.otherData.Values[1][1]) if not itemList[root] then itemList[root] = {} end for k, v in ipairs(itemList[root]) do v.gameObject:SetActive(false) end for i = 1, #data.otherData.Reward do if not itemList[root][i] then itemList[root][i] = SubUIManager.Open(SubUIConfig.ItemView, grid.transform) itemList[root][i].gameObject:SetActive(false) end itemList[root][i]:OnOpen(false, data.otherData.Reward[i], 0.9, false, false, false, sortingOrder) itemList[root][i].gameObject:SetActive(true) end mask:SetActive(true) if data.state == 0 then mask:GetComponent("Image").sprite = this.spLoader:LoadSprite("g_ghhb_weidacheng_zh") elseif data.state == 1 then mask:GetComponent("Image").sprite = this.spLoader:LoadSprite("g_ghhb_yidacheng_zh") end end function this.ChangeState(id) for k, v in ipairs(rewardConfig) do if v.Id == id then v.state = 0 return end end end return TrialRewardPopup