local MonthCardPage = {} local cardData = { [1] = { curState = 0 ,cardType = MONTH_CARD_TYPE.MONTHCARD}, [2] = { curState = 0 ,cardType = MONTH_CARD_TYPE.LUXURYMONTHCARD}, [3] = { curState = 0 ,cardType = MONTH_CARD_TYPE.GIFT} } local sortingOrder = 0 local addTimeNum = 30 * 24 * 60 * 60 local monthCardConFig = ConfigManager.GetConfig(ConfigName.MonthcardConfig) function MonthCardPage:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = MonthCardPage }) return b end local offSetX = { [0] = Vector3.New(71.1,-7.34,0), [1] = Vector3.New(188,-56,0), [2] = Vector3.New(188,-56,0), } --初始化组件(用于子类重写) function MonthCardPage: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].month = Util.GetGameObject(self.cardPres[i].go, "small") self.cardPres[i].btnText = Util.GetGameObject(self.cardPres[i].month, "Text"):GetComponent("Text") self.cardPres[i].monthRedPot = Util.GetGameObject(self.cardPres[i].month, "redPoint") self.cardPres[i].time = Util.GetGameObject(self.cardPres[i].go, "time") self.cardPres[i].activRewardGrid=Util.GetGameObject(self.cardPres[i].go, "reward/activScroll/activRewardGrid") self.cardPres[i].dayRewardGrid=Util.GetGameObject(self.cardPres[i].go, "reward/dayScroll/dayRewardGrid") self.cardPres[i].rewardNum=Util.GetGameObject(self.cardPres[i].go, "Image (1)/num"):GetComponent("Text") -- Util.GetGameObject(self.cardPres[i].go, "day/icon"):GetComponent("RectTransform").anchoredPosition = offSetX[GetCurLanguage()] end end --绑定事件(用于子类重写) function MonthCardPage:BindEvent() for i = 1, #self.cardPres do Util.AddOnceClick(self.cardPres[i].month,function() local cardType=cardData[i].cardType if cardData[i].curState==0 then local curMonthCardConfig=monthCardConFig[cardType] PayManager.Pay(curMonthCardConfig.Price, function() cardData[i].curState=1 MonthCardManager.SetMonthCardGetStateData(cardType,1) self.curAllMonthCardData = MonthCardManager.GetMonthCardData() Util.SetGray(self.cardPres[i].month,false) self.cardPres[i].month:GetComponent("Button").enabled = true self.cardPres[i].btnText.text = "领取" self:SetMonthCardTimes(i) self.cardPres[i].monthRedPot:SetActive(true) end) else NetManager.MonthCardTakeDailyRequest(cardData[i].cardType, function(drop) MonthCardManager.SetMonthCardGetStateData(cardData[i].cardType,2) self.curAllMonthCardData = MonthCardManager.GetMonthCardData() Util.SetGray(self.cardPres[i].month,true) self.cardPres[i].month:GetComponent("Button").enabled = false self.cardPres[i].btnText.text = "已领取" self.cardPres[i].monthRedPot:SetActive(false) UIManager.OpenPanel(UIName.RewardItemPopup,drop,1) end) end end) end end --添加事件监听(用于子类重写) function MonthCardPage:AddListener() Game.GlobalEvent:AddEvent(GameEvent.MoneyPay.OnPayResultSuccess, self.BuySuccess) Game.GlobalEvent:AddEvent(GameEvent.MonthCard.OnMonthCardUpdate, function() MonthCardManager.RefreshMonthCardEnd() PlayerPrefs.SetInt(PlayerManager.uid.."monthCard", 1) self:RefreshStoneShow() end) end --移除事件监听(用于子类重写) function MonthCardPage:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.MoneyPay.OnPayResultSuccess, self.BuySuccess) Game.GlobalEvent:RemoveEvent(GameEvent.MonthCard.OnMonthCardUpdate, function() MonthCardManager.RefreshMonthCardEnd() PlayerPrefs.SetInt(PlayerManager.uid.."monthCard", 1) self:RefreshStoneShow() end) end --界面打开时调用(用于子类重写) function MonthCardPage:OnOpen(_activityConfig,_index,parent) self.actConfig = _activityConfig self.pageIndex = _index self.parent = parent end function MonthCardPage:OnSortingOrderChange() end -- 打开,重新打开时回调 function MonthCardPage:OnShow(_sortingOrder) self.gameObject:SetActive(true) sortingOrder = _sortingOrder MonthCardManager.RefreshMonthCardEnd() PlayerPrefs.SetInt(PlayerManager.uid.."monthCard", 1) self:RefreshStoneShow() end -- 妖晶数量显示 function MonthCardPage:RefreshStoneShow(index) self.curAllMonthCardData = MonthCardManager.GetMonthCardData() --月卡 for i = 1, #self.cardPres do self:SetCardShow(i) end end function MonthCardPage.RefreshStoneShow2() LogError("刷新月卡") self.curAllMonthCardData = MonthCardManager.GetMonthCardData() --月卡 for i = 1, #self.cardPres do self:SetCardShow(i) end end function MonthCardPage:SetCardShow(i) local cardType=cardData[i].cardType local monthCardData=self.curAllMonthCardData[cardType] local curMonthCardConfig=monthCardConFig[cardType] local rechargeConfig = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig,curMonthCardConfig.Price) cardData[i].curState = monthCardData.state self.cardPres[i].monthRedPot:SetActive(MonthCardManager.RefreshMonthCardRedPoint(cardType)) if cardType==MONTH_CARD_TYPE.MONTHCARD then self.cardPres[i].rewardNum.text="双倍" else self.cardPres[i].rewardNum.text=curMonthCardConfig.ContiueDays * curMonthCardConfig.BaseReward[1][2] end self:SetMonthCardTimes(i) ---设置按钮显示 if monthCardData.state == 0 then Util.SetGray(self.cardPres[i].month,false) self.cardPres[i].month:GetComponent("Button").enabled = true self.cardPres[i].btnText.text = rechargeConfig.Price.."元" elseif monthCardData.state == 1 then Util.SetGray(self.cardPres[i].month,false) self.cardPres[i].month:GetComponent("Button").enabled = true self.cardPres[i].btnText.text = "领取" elseif monthCardData.state == 2 then Util.SetGray(self.cardPres[i].month,true) self.cardPres[i].month:GetComponent("Button").enabled = false self.cardPres[i].btnText.text = Language[10101] end if self.cardPres[i].activRewardGrid.transform.childCount<=0 then ---设置奖励物品显示 for j = 1, #rechargeConfig.RewardShow do local itemInfo = SubUIManager.Open(SubUIConfig.ItemView, self.cardPres[i].activRewardGrid.transform) itemInfo:OnOpen(false, rechargeConfig.RewardShow[j], 0.6) end for j = 1, #curMonthCardConfig.BaseReward do local itemInfo = SubUIManager.Open(SubUIConfig.ItemView, self.cardPres[i].dayRewardGrid.transform) itemInfo:OnOpen(false, curMonthCardConfig.BaseReward[j], 0.6) end end end function MonthCardPage:SetMonthCardTimes(i) local monthCardData=self.curAllMonthCardData[cardData[i].cardType] local curMonthCardConfig=monthCardConFig[cardData[i].cardType] ---设置剩余时间 if monthCardData.state > 0 then self.cardPres[i].time:SetActive(true) local residueTimeNum = monthCardData.endingTime - GetTimeStamp() local dayNum = math.floor(residueTimeNum / (24 * 3600)) --self.cardPres[i].time:GetComponent("Text").text = Language[10480] .. dayNum ..Language[10017] self.cardPres[i].time:SetActive(false) else self.cardPres[i].time:SetActive(false) end end --界面关闭时调用(用于子类重写) function MonthCardPage:OnClose() self.gameObject:SetActive(false) end --界面销毁时调用(用于子类重写) function MonthCardPage:OnDestroy() self.spLoader:Destroy() self.cardPres = {} for index = 1, #self.timerList do if self.timerList[index] then self.timerList[index]:Stop() self.timerList[index] = nil end end self.timerList = {} end return MonthCardPage