local UpperMonthCard = {} local sortingOrder = 0 local chargeConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig) local globalActivity = ConfigManager.GetConfig(ConfigName.GlobalActivity) --- 本地枚举 local ImgType = { [78] = { bg = "y_yjj_128beijdi", mask = "y_yjj_128dikuang001", rewardBg = "y_yjj_128kuang", downBg = "y_yjj_128kuang001", rewardPreview = "y_yjj_128kuang004", rewardPreviewText = "y_yjj_128kuang005", reward = "y_yjj_1280", iconId = 16, }, [79] = { bg = "s_sanshibei_beijingren", mask = "s_sanshibei_bg", rewardBg = "s_sanshibei_kuang_02", downBg = "s_sanshibei_kuang_01", rewardPreview = "s_sanshibei_xiaobiaodi", rewardPreviewText = "s_sanshibei_biaotizi", reward = "y_yjj_3280", iconId = 16, }, } local state = { [0] = {bg = "r_hero_button_001",text = "",red = false}, [1] = {bg = "s_slbz_1anniuongse",text = "领取",red = true}, [2] = {bg = "s_slbz_1anniuhuise",text = "已领取",red = false}, } function UpperMonthCard:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = UpperMonthCard }) return b end --初始化组件(用于子类重写) function UpperMonthCard:InitComponent() self.spLoader = SpriteLoader.New() self.Bg = Util.GetGameObject(self.gameObject, "Bg/bg"):GetComponent("Image") self.mask = Util.GetGameObject(self.gameObject, "Bg/mask"):GetComponent("Image") self.chargeIconType = Util.GetGameObject(self.gameObject, "Bg/payBack/icon"):GetComponent("Image") self.chargeType = Util.GetGameObject(self.gameObject, "Bg/payBack/type"):GetComponent("Image") --- 不同的充值行为显示部分 self.middlePart = Util.GetGameObject(self.gameObject, "Bg/partDown/Bg"):GetComponent("Image") self.titleDi = Util.GetGameObject(self.middlePart.transform, "titleDi"):GetComponent("Image") self.titleImg = Util.GetGameObject(self.titleDi.transform, "title"):GetComponent("Image") self.infoBg = Util.GetGameObject(self.middlePart.transform, "middle"):GetComponent("Image") self.grid = Util.GetGameObject( self.middlePart.transform, "middle/scroller/grid") self.gridRect = self.grid:GetComponent("RectTransform") self.itemPre = Util.GetGameObject(self.middlePart.transform, "middle/itemPre") self.itemHeight = self.itemPre.transform.rect.height self.btnBuy = Util.GetGameObject(self.middlePart.transform, "btnBuy") self.btnBuyImage = self.btnBuy:GetComponent("Image") self.textBuy = Util.GetGameObject(self.btnBuy, "Text"):GetComponent("Text") self.btnBuyRed = Util.GetGameObject(self.btnBuy, "red") self.btnHelp = Util.GetGameObject(self.gameObject, "Bg/helpBtn") self.helpPosition = self.btnHelp:GetComponent("RectTransform").localPosition ---- 奖励列表 self.itemLst = {} end --添加事件监听(用于子类重写) function UpperMonthCard:AddListener() Game.GlobalEvent:AddEvent(GameEvent.Activity.OnActivityProgressStateChange,self.RefreshPanel,self) end --移除事件监听(用于子类重写) function UpperMonthCard:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.Activity.OnActivityProgressStateChange,self.RefreshPanel,self) end --绑定事件(用于子类重写) function UpperMonthCard:BindEvent() Util.AddClick(self.btnHelp,function() UIManager.OpenPanel(UIName.HelpPopup,self.actConfig.HelpId,self.helpPosition.x,self.helpPosition.y) end) Util.AddOnceClick(self.btnBuy, function() if self.actInfo.value == 1 then PayManager.Pay(self.baseType, function(id) self:RechargeSuccessFunc(id) end) elseif self.isGet then NetManager.GetActivityRewardRequest(0,self.actInfo.activityId,function(msg) UIManager.OpenPanel(UIName.RewardItemPopup, msg, 1) end) end end) end --界面打开时调用(用于子类重写) function UpperMonthCard:OnOpen(_activityConfig,_index,parent) self.actConfig = _activityConfig self.pageIndex = _index self.parent = parent end function UpperMonthCard:OnSortingOrderChange(_sortingOrder) -- self.sortingOrder = _sortingOrder -- for k,v in pairs(self.itemLst) do -- end end -- 打开,重新打开时回调 function UpperMonthCard:OnShow(_sortingOrder) self.gameObject:SetActive(true) self.sortingOrder = _sortingOrder self.actType = self.actConfig.ActiveType self.actInfo = ActivityGiftManager.GetActivityInfoByType(self.actType) if not self.actInfo then self.parent:ClosePanel() return end self.baseType = globalActivity[self.actInfo.activityId].CanBuyRechargeId[1] self:SetPanelType() self:RefreshPanel() end function UpperMonthCard:RefreshPanel() self:SetRewardInfo() self:SetBuyState() end --- 设置不同的显示界面 function UpperMonthCard:SetPanelType() self.Bg.sprite = self.spLoader:LoadSprite(ImgType[self.actType].bg) self.mask.sprite = self.spLoader:LoadSprite(ImgType[self.actType].mask) self.chargeIconType.sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(ImgType[self.actType].iconId)) self.chargeType.sprite = self.spLoader:LoadSprite(ImgType[self.actType].reward) self.middlePart.sprite = self.spLoader:LoadSprite(ImgType[self.actType].rewardBg) self.titleDi.sprite = self.spLoader:LoadSprite(ImgType[self.actType].rewardPreview) self.titleImg.sprite = self.spLoader:LoadSprite(ImgType[self.actType].rewardPreviewText) self.infoBg.sprite = self.spLoader:LoadSprite(ImgType[self.actType].downBg) self.btnHelp.gameObject:SetActive(self.actConfig.HelpId and self.actConfig.HelpId > 0) end --- 设置不同界面的奖励信息 function UpperMonthCard:SetRewardInfo() local mission = self.actInfo.mission table.sort(mission,function(a,b) return a.missionId < b.missionId end) if not self.itemLst then self.itemLst = {} end for i = 1,math.max(#mission,LengthOfTable(self.itemLst)) do if not mission[i] then self.itemLst[i].go.gameObject:SetActive(false) else if not self.itemLst[i] then self.itemLst[i] = {} self.itemLst[i].go = newObjToParent(self.itemPre,self.grid) self.itemLst[i].name = Util.GetGameObject(self.itemLst[i].go, "name"):GetComponent("Text") self.itemLst[i].itemPos = Util.GetGameObject(self.itemLst[i].go, "itemPos") self.itemLst[i].itemView = SubUIManager.Open(SubUIConfig.ItemView,self.itemLst[i].itemPos.transform) self.itemLst[i].yiGet = Util.GetGameObject(self.itemLst[i].go, "yilingqu") self.itemLst[i].redPoint = Util.GetGameObject(self.itemLst[i].go, "redPoint") end self.itemLst[i].go.gameObject:SetActive(true) self.itemLst[i].name.text = string.format("第%s天",NumToChinese[i]) local reward = ConfigManager.GetConfigDataByDoubleKey(ConfigName.LuxuryFundConfig,"Type",self.baseType,"Day",i).reward[1] self.itemLst[i].itemView:OnOpen(false, reward, 1.1, false, false, false, self.sortingOrder) --1 已领取 0 未领 if mission[i].state == 1 then self.itemLst[i].yiGet.gameObject:SetActive(true) self.itemLst[i].redPoint.gameObject:SetActive(false) else self.itemLst[i].yiGet.gameObject:SetActive(false) if mission[i].progress == 1 then self.itemLst[i].redPoint.gameObject:SetActive(true) else self.itemLst[i].redPoint.gameObject:SetActive(false) end end end end local v = self.gridRect.sizeDelta v.y = (math.ceil(#self.itemLst/5) * self.itemHeight) + ((math.ceil(#self.itemLst/5)) * 94) self.gridRect.sizeDelta = v end --- 根据是否购买了显示信息 function UpperMonthCard:SetBuyState() if self.actInfo.value == 1 then self.btnBuyImage.sprite = self.spLoader:LoadSprite(state[0].bg) self.textBuy.text = MoneyUtil.GetMoneyUnitNameWithMoney(chargeConfig[self.baseType].Price) self.btnBuyRed.gameObject:SetActive(false) else self.isGet = false for i = 1,#self.actInfo.mission do if self.actInfo.mission[i].state == 0 and self.actInfo.mission[i].progress == 1 then self.isGet = true break end end if self.isGet then self.btnBuyImage.sprite = self.spLoader:LoadSprite(state[1].bg) self.textBuy.text = state[1].text self.btnBuyRed.gameObject:SetActive(true) else self.btnBuyImage.sprite = self.spLoader:LoadSprite(state[2].bg) self.textBuy.text = state[2].text self.btnBuyRed.gameObject:SetActive(false) end end end -- 充值成功回调 function UpperMonthCard:RechargeSuccessFunc(id) FirstRechargeManager.RefreshAccumRechargeValue(id) OperatingManager.RefreshGiftGoodsBuyTimes(GoodsTypeDef.DemonCrystal, id) end --界面关闭时调用(用于子类重写) function UpperMonthCard:OnClose() self.gameObject:SetActive(false) end --界面销毁时调用(用于子类重写) function UpperMonthCard:OnDestroy() self.spLoader:Destroy() for k,v in pairs(self.itemLst) do SubUIManager.Close(v.itemView) end Util.ClearChild(self.grid.transform) self.itemLst = {} end return UpperMonthCard