local WeekCardPage = {} local sortingOrder = 0 local _WeekcardConfig = ConfigManager.GetConfig(ConfigName.WeekcardConfig) local _ItemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) local _RechargeCommodityConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig) function WeekCardPage:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = WeekCardPage }) return b end --初始化组件(用于子类重写) function WeekCardPage:InitComponent() self.spLoader = SpriteLoader.New() self.grid = Util.GetGameObject(self.gameObject, "grid") self.cardPres = {} self.timerList = {} for i= 1 ,self.grid.transform.childCount do self.cardPres[i] = {} self.cardPres[i].go = self.grid.transform:GetChild(i - 1).gameObject self.cardPres[i].bg = self.cardPres[i].go:GetComponent("Image") self.cardPres[i].name = Util.GetGameObject(self.cardPres[i].go, "nameBg/name"):GetComponent("Image") self.cardPres[i].icon = Util.GetGameObject(self.cardPres[i].go, "icon"):GetComponent("Image") self.cardPres[i].icon1 = Util.GetGameObject(self.cardPres[i].go, "tip1/icon"):GetComponent("Image") self.cardPres[i].icon2 = Util.GetGameObject(self.cardPres[i].go, "tip2/icon"):GetComponent("Image") self.cardPres[i].icon3 = Util.GetGameObject(self.cardPres[i].go, "Image/icon"):GetComponent("Image") self.cardPres[i].dayNum = Util.GetGameObject(self.cardPres[i].go, "tip1/num"):GetComponent("Text") self.cardPres[i].curNum = Util.GetGameObject(self.cardPres[i].go, "tip2/num"):GetComponent("Text") self.cardPres[i].allNum = Util.GetGameObject(self.cardPres[i].go, "Image/Text"):GetComponent("Text") self.cardPres[i].btn = Util.GetGameObject(self.cardPres[i].go, "btn") self.cardPres[i].btnText = Util.GetGameObject(self.cardPres[i].go, "btn/Text"):GetComponent("Text") self.cardPres[i].red = Util.GetGameObject(self.cardPres[i].go, "btn/redPoint") end self.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn") end --绑定事件(用于子类重写) function WeekCardPage:BindEvent() Util.AddClick(self.helpBtn, function() local pos = self.helpBtn.transform.localPosition UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.WeekCard, pos.x, pos.y) end) end --添加事件监听(用于子类重写) function WeekCardPage:AddListener() Game.GlobalEvent:AddEvent(GameEvent.WeekCard.OnWeekCardUpdate, self.RefreshShow, self) end --移除事件监听(用于子类重写) function WeekCardPage:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.WeekCard.OnWeekCardUpdate, self.RefreshShow, self) end --界面打开时调用(用于子类重写) function WeekCardPage:OnOpen(_activityConfig,_index,parent) self.actConfig = _activityConfig self.pageIndex = _index self.parent = parent end function WeekCardPage:OnSortingOrderChange() end -- 打开,重新打开时回调 function WeekCardPage:OnShow(_sortingOrder) self.gameObject:SetActive(true) sortingOrder = _sortingOrder -- 刷新显示 self:RefreshShow() -- 查看周卡界面刷新红点 PlayerPrefs.SetInt("IsCheckWeekCard_"..PlayerManager.uid, 1) CheckRedPointStatus(RedPointType.WeekCardOpen) end -- 妖晶数量显示 function WeekCardPage:RefreshShow() local allData = WeekCardManager.GetWeekCardDataArray() --月卡 for i = 1, #self.cardPres do if allData[i] then self:SetCardShow(i, allData[i]) end end end function WeekCardPage:SetCardShow(index, data) local pre = self.cardPres[index] if not pre then return end local config = _WeekcardConfig[data.id] if not config then return end -- 背景 pre.bg.sprite = self.spLoader:LoadSprite(config.BgImage) -- 物品名称 pre.name.sprite = self.spLoader:LoadSprite(config.TypeImage) pre.name:SetNativeSize() -- 每日奖励数量 local itemId = 0 local dayNum = 0 if config.BaseReward and config.BaseReward[1] then itemId = config.BaseReward[1][1] dayNum = config.BaseReward[1][2] end pre.dayNum.text = PrintWanNum2(dayNum) -- 当前累计奖励数量 local curNum = dayNum * data.leaveGetRewardDays or 0 pre.curNum.text = PrintWanNum2(curNum) pre.curNum.transform.parent.gameObject:SetActive(curNum ~= 0) -- 累计数量为0时不显示 -- 总奖励数量 local continueDay = config.ContiueDays or 0 local allNum = dayNum * continueDay pre.allNum.text = PrintWanNum2(allNum) -- 设置物品图片显示 local sprite = SetIcon(self.spLoader, itemId) pre.icon.sprite = sprite pre.icon1.sprite = sprite pre.icon2.sprite = sprite pre.icon3.sprite = sprite local rechargeCfg = _RechargeCommodityConfig[config.RechargeId] if not rechargeCfg then return end -- 按钮状态 if data.isBuy then if data.leaveGetRewardDays > 0 then -- 领取奖励 pre.btnText.text = "领取" pre.red:SetActive(true) Util.SetGray(pre.btn, false) Util.AddOnceClick(pre.btn, function() WeekCardManager.RequestGetWeekCardReward(data.id, function() -- 刷新显示 self:RefreshShow() end) end) else -- 已领取 pre.btnText.text = "已领取" pre.red:SetActive(false) Util.SetGray(pre.btn, true) Util.AddOnceClick(pre.btn, function() PopupTipPanel.ShowTip("您已领取该奖励") end) end else -- 购买周卡 pre.btnText.text = MoneyUtil.GetMoneyUnitNameWithMoney(rechargeCfg.Price) pre.red:SetActive(false) Util.SetGray(pre.btn, false) Util.AddOnceClick(pre.btn, function() PayManager.Pay(config.RechargeId, function(id) -- 前端修改购买状态 data.isBuy = true WeekCardManager.UpdateWeekCardData(data) -- 刷新显示 self:RefreshShow() end) end) end end --界面关闭时调用(用于子类重写) function WeekCardPage:OnClose() self.gameObject:SetActive(false) end --界面销毁时调用(用于子类重写) function WeekCardPage:OnDestroy() self.spLoader:Destroy() self.cardPres = {} end return WeekCardPage