local FightLevelTrialPanel = {} local STATE = { [0] = {Img = "Btn_hz_cheng_01",text = "前往"}, [1] = {Img = "Btn_hz_cheng_01",text = Language[11948]}, [2] = {Img = "Btn_hz_hui_01",text = Language[10101]}, } function FightLevelTrialPanel:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = FightLevelTrialPanel }) return b end --初始化组件(用于子类重写) function FightLevelTrialPanel:InitComponent() self.spLoader = SpriteLoader.New() self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.transform) --self.btnBack = Util.GetGameObject(self.gameObject,"BackBtn") self.nextStar = Util.GetGameObject(self.gameObject,"bg/text/num"):GetComponent("Text") self.Text = Util.GetGameObject(self.gameObject,"bg/text/Text"):GetComponent("Text") self.di = Util.GetGameObject(self.gameObject,"bg/text/di") self.xing = Util.GetGameObject(self.gameObject,"bg/text/xing") self.curStar = Util.GetGameObject(self.gameObject,"goBtn/num"):GetComponent("Text") self.Scroll = Util.GetGameObject(self.gameObject,"Scroll") self.leftTime = Util.GetGameObject(self.gameObject,"LeftTime"):GetComponent("Text") self.itemPre = Util.GetGameObject(self.gameObject,"itemPre") self.goBtn = Util.GetGameObject(self.gameObject,"goBtn") self.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn") self.helpPosition = self.helpBtn:GetComponent("RectTransform").localPosition local rootHight = self.Scroll.transform.rect.height local width = self.Scroll.transform.rect.width self.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, self.Scroll.transform, self.itemPre, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0, 0)) self.ScrollView.moveTween.MomentumAmount = 1 self.ScrollView.moveTween.Strength = 2 self.itemList = {} end --绑定事件(用于子类重写) function FightLevelTrialPanel:BindEvent() -- Util.AddClick(self.btnBack, function() -- self:ClosePanel() -- end) Util.AddClick(self.goBtn, function() UIManager.OpenPanel(UIName.FightLevelChapterPanel) end) Util.AddClick(self.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.ShanHeShiLian, self.helpPosition.x,self.helpPosition.y) end) end --添加事件监听(用于子类重写) function FightLevelTrialPanel:AddListener() end --移除事件监听(用于子类重写) function FightLevelTrialPanel:RemoveListener() end function FightLevelTrialPanel:OnSortingOrderChange() end --界面打开时调用(用于子类重写) function FightLevelTrialPanel:OnOpen(_activityConfig,_index,parent) self.actConfig = _activityConfig self.pageIndex = _index self.parent = parent end --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function FightLevelTrialPanel:OnShow() self.gameObject:SetActive(true) self.sortingOrder = _sortingOrder or self.sortingOrder self.actId = self.actConfig.ActId self.actType = self.actConfig.ActiveType > 0 and self.actConfig.ActiveType or self.actConfig.FunType if self.actConfig.IfBack == 1 then if self.actConfig.ActiveType > 0 then local id = ActivityGiftManager.IsActivityTypeOpen(self.actConfig.ActiveType) if id and id > 0 then self.actId = id local config = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"PageType",self.actConfig.PageType,"ActiveType",self.actConfig.ActiveType,"ActId",id) if config then self.actConfig = config end end end end self:Refresh(true,true) end function FightLevelTrialPanel:Refresh(isTop,isAni) self.actData = CommonActPageManager.GetData(ActivityTypeDef.ShanHeShiLian) self:SetNumbers() self:SetRewards(isTop,isAni) end function FightLevelTrialPanel:SetNumbers() self.curStar.text = FightLevelManager.GetAllChapterStars() self.nextStar.text = FightLevelManager.GetNextMissionStar() local bool = FightLevelManager.GetNextMissionStar() ~= 0 self.nextStar.gameObject:SetActive(bool) self.di:SetActive(bool) self.xing:SetActive(bool) if bool then self.Text.text = "距离下档奖励还有" else self.Text.text = "已达成全部目标" end --设置时间 if self.timer then self.timer:Stop() self.timer = nil end local time =self.actData.endTime - GetTimeStamp() self.leftTime.text = string.format(Language[10512].."%s",TimeToFelaxible(time)) self.timer = Timer.New(function () time = time - 1 self.leftTime.text = string.format(Language[10512].."%s",TimeToFelaxible(time)) if time <= 0 then self:OnClose() end end,1,-1,true) self.timer:Start() end function FightLevelTrialPanel:SetRewards(isTop,isAni) self.ScrollView:SetData(self.actData.rewards, function (index, go) self:SingleDataShow(go, self.actData.rewards[index],index) end,not isTop,not isAni) end function FightLevelTrialPanel:SingleDataShow(item,data,index) local starNum = Util.GetGameObject(item,"num"):GetComponent("Text") local reward = Util.GetGameObject(item,"reward") local getBtn = Util.GetGameObject(item,"getBtn") local btnImage = Util.GetGameObject(item,"getBtn"):GetComponent("Image") local btnText = Util.GetGameObject(item,"getBtn/Text"):GetComponent("Text") local redpoint = Util.GetGameObject(item,"getBtn/redpoint") local state = 0 redpoint.gameObject:SetActive(false) if data.state == 1 then state = 2 elseif data.otherData.Values[1][1] > FightLevelManager.GetAllChapterStars() then state = 0 else state = 1 redpoint.gameObject:SetActive(true) end starNum.text = data.otherData.Values[1][1] btnImage.sprite = self.spLoader:LoadSprite(STATE[state].Img) btnText.text = STATE[state].text if not self.itemList[item] then self.itemList[item] = {} end for i = 1, #self.itemList[item] do self.itemList[item][i].gameObject:SetActive(false) end for i = 1, #data.otherData.Reward do if not self.itemList[item][i] then self.itemList[item][i] = SubUIManager.Open(SubUIConfig.ItemView,reward.transform) end self.itemList[item][i].gameObject:SetActive(true) self.itemList[item][i]:OnOpen(false, data.otherData.Reward[i], 0.8,false,false,false,self.sortingOrder) end Util.AddOnceClick(getBtn,function () if state == 0 then --PopupTipPanel.ShowTip("请前往山河社稷图获取更多星星!") UIManager.OpenPanel(UIName.FightLevelChapterPanel) elseif state == 1 then NetManager.GetActivityRewardRequest(data.missionId,self.actData.activityId,function (_drop) UIManager.OpenPanel(UIName.RewardItemPopup,_drop,1,function() self:Refresh(false,false) end) end) end end) getBtn:GetComponent("Button").interactable = state ~= 2 end --界面关闭时调用(用于子类重写) function FightLevelTrialPanel:OnClose() if self.timer then self.timer:Stop() self.timer = nil end self.gameObject:SetActive(false) end --界面销毁时调用(用于子类重写) function FightLevelTrialPanel:OnDestroy() if self.timer then self.timer:Stop() self.timer = nil end self.itemList = {} self.spLoader:Destroy() end return FightLevelTrialPanel