local UpperMonthCard = {} local sortingOrder = 0 local chargeConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig) --- 本地枚举 local ImgType = { [10002] = { bg = "y_yjj_128beijdi", mask = "y_yjj_128dikuang001", rewardBg = "y_yjj_128kuang", moneyTag = "y_yjj_$19.99", downBg = "y_yjj_128kuang001", rewardPreview = "y_yjj_128kuang002", valueMask = "y_yjj_128jjz002", chargerBaseType = GoodsTypeDef.MONTHCARD_128, }, [10003] = { bg = "y_yjj_328beijdi", mask = "y_yjj_328dikuang001", rewardBg = "y_yjj_328kuang", moneyTag = "y_yjj_$49.99", downBg = "y_yjj_328kuang001", rewardPreview = "y_yjj_328kuang002", valueMask = "y_yjj_328jjz002", chargerBaseType = GoodsTypeDef.MONTHCARD_328, }, } function UpperMonthCard:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = UpperMonthCard }) return b end --初始化组件(用于子类重写) function UpperMonthCard:InitComponent() self.Bg = Util.GetGameObject(self.gameObject, "bg"):GetComponent("Image") self.mask = Util.GetGameObject(self.gameObject, "Bg/mask"):GetComponent("Image") self.chargeType = Util.GetGameObject(self.gameObject, "Bg/payBack/type"):GetComponent("Image") self.btnPreview = Util.GetGameObject(self.gameObject, "Bg/previewRoot/btnPreview") self.valueIcon = Util.GetGameObject(self.gameObject, "Bg/previewRoot/Image/icon"):GetComponent("Image") self.totalValue = Util.GetGameObject(self.gameObject, "Bg/previewRoot/Image/value"):GetComponent("Text") self.valueMask = Util.GetGameObject(self.gameObject, "Bg/previewRoot/Image"):GetComponent("Image") --- 不同的充值行为显示部分 self.middlePart = Util.GetGameObject(self.gameObject, "Bg/partDown/Bg") self.titleImg = Util.GetGameObject(self.middlePart, "title"):GetComponent("Image") self.infoBg = Util.GetGameObject(self.middlePart, "middle"):GetComponent("Image") self.grid = Util.GetGameObject( self.middlePart, "middle/grid") self.itemPre = Util.GetGameObject(self.middlePart, "middle/itemPre") --- 未购买 self.buyPanel = Util.GetGameObject(self.middlePart, "buyPart") self.tipIcon = Util.GetGameObject(self.buyPanel, "tip/icon/Image"):GetComponent("Image") -- 那啥图标 self.charmyNum = Util.GetGameObject(self.buyPanel, "tip/value"):GetComponent("Text") -- 返利 self.actLeftTime = Util.GetGameObject(self.buyPanel, "leftTime"):GetComponent("Text") -- 活动剩余天数 self.btnBuy = Util.GetGameObject(self.buyPanel, "btnBuy") self.textBuy = Util.GetGameObject(self.btnBuy, "Text"):GetComponent("Text") -- 已经购买,你先可以享受这你觉得还可以的服务了 self.boughtPanel = Util.GetGameObject(self.middlePart, "rewardPart") self.totalLoginday = Util.GetGameObject(self.boughtPanel, "totalDay"):GetComponent("Text") self.boughtLeftTime = Util.GetGameObject(self.boughtPanel, "time"):GetComponent("Text") ---- 奖励列表 self.rewardList = {} end --绑定事件(用于子类重写) function UpperMonthCard:BindEvent() Util.AddClick(self.btnPreview, function() UIManager.OpenPanel(UIName.MonthRewardPreviewPopup, self.baseType, self.chargerBaseType) end) Util.AddClick(self.btnBuy, function() local isActive = VipManager.GetMonthCardOpenState() if not isActive then MsgPanel.ShowTwo("请先激活豪华月卡", function() end, function(isShow) JumpManager.GoJump(36004) end, "取消", "前往",nil, false) else PayManager.Pay(self.baseType, function(id) self:RechargeSuccessFunc(id) end) end end) end -- --添加事件监听(用于子类重写) -- function UpperMonthCard:AddListener() -- end -- --移除事件监听(用于子类重写) -- function UpperMonthCard:RemoveListener() -- end --界面打开时调用(用于子类重写) function EveryDayGift:OnOpen(_activityConfig,_index,parent) self.actConfig = _activityConfig self.pageIndex = _index self.parent = parent end -- 打开,重新打开时回调 function UpperMonthCard:OnShow(_sortingOrder) self.gameObject:SetActive(true) sortingOrder = _sortingOrder self.actType = self.actConfig.ActId --- 鸡精类型 self.chargerBaseType = ImgType[self.actType].chargerBaseType --- 鸡精的商品ID -- 判断我是否购买过该商品 local goodsId = OperatingManager.GetActiveGoodsIDByType(self.chargerBaseType) if not goodsId then -- 没有购买过判断是否在活动期间 local gift = OperatingManager.GetGiftGoodsInfo(self.chargerBaseType) if not gift then return end goodsId = gift.goodsId end self.baseType = goodsId self.gameObject:SetActive(true) OperatingManager.SetSerData(self.chargerBaseType) self:SetPanelType(self.actType) self:SetRewardInfo(self.actType) self:SetBuyState() end --- 设置不同的显示界面 function UpperMonthCard:SetPanelType(type) self.chargeType.sprite = Util.LoadSprite(ImgType[type].moneyTag) self.valueIcon.sprite = SetIcon(16) self.valueMask = Util.LoadSprite(ImgType[type].valueMask) self.Bg.sprite = Util.LoadSprite(ImgType[type].bg) self.mask.sprite = Util.LoadSprite(ImgType[type].mask) self.titleImg.sprite = Util.LoadSprite(ImgType[type].rewardPreview) self.middlePart:GetComponent("Image").sprite = Util.LoadSprite(ImgType[type].rewardBg) self.infoBg.sprite = Util.LoadSprite(ImgType[type].downBg) self.valueIcon.sprite = SetIcon(chargeConfig[self.baseType].BaseReward[1][1]) self.tipIcon.sprite = SetIcon(chargeConfig[self.baseType].RewardShow[1][1]) self.totalValue.text = chargeConfig[self.baseType].RewardShow[1][2] self.charmyNum.text = " " .. chargeConfig[self.baseType].BaseReward[1][2] end --- 设置不同界面的奖励信息 function UpperMonthCard:SetRewardInfo(type) local data = OperatingManager.GetPanelShowReward(self.baseType, false,true) for i = 1, #data do if not self.rewardList[i] then self.rewardList[i] = {} self.rewardList[i].go = newObjToParent(self.itemPre, self.grid) self.rewardList[i].item = SubUIManager.Open(SubUIConfig.ItemView, self.rewardList[i].go.transform) end local rewardData = data[i] self.rewardList[i].item:OnOpen(false, {rewardData[1],rewardData[2]}, 1.12,true) end end --- 根据是否购买了显示信息 function UpperMonthCard:SetBuyState() local isActive = VipManager.GetMonthCardOpenState() local isBought = OperatingManager.IsBaseBuy(self.chargerBaseType) self.boughtPanel:SetActive(isBought) self.buyPanel:SetActive(not isBought) Util.SetGray(self.btnBuy, not isActive) self.textBuy.text = isActive and (string.format(MoneyUtil.GetMoneyUnitName(),MoneyUtil.GetMoney(chargeConfig[self.baseType].Price))) or (string.format(MoneyUtil.GetMoneyUnitName(),MoneyUtil.GetMoney(chargeConfig[self.baseType].Price)))-- .. MoneyUtil.GetMoneyUnitName()) if not isBought then self:SetBuyPanelInfo() else self:SetBoughtPanelInfo() end end function UpperMonthCard:SetBuyPanelInfo() --- 未激活,在活动时间内 local isOpen = OperatingManager.IsBaseOpen(self.chargerBaseType, self.baseType) self.buyTimer = nil if isOpen then --- 获取剩余时间,结束时间为0表示不限时 local data = OperatingManager.GetGiftGoodsInfo(self.chargerBaseType, self.baseType) local endTime = data.endTime if endTime <= 0 then self.actLeftTime.gameObject:SetActive(false) else self.actLeftTime.gameObject:SetActive(true) self.buyTimer = Timer.New(function () if endTime - GetTimeStamp() <= 0 then Log("时间到,活动关闭") self.buyTimer:Stop() UIManager.OpenPanel(UIName.OperatingPanel) end end, 1, -1, true) self.buyTimer:Start() self.actLeftTime.text = "剩余时间: " .. self:TimeFormat(endTime - PlayerManager.serverTime) end else self.actLeftTime.gameObject:SetActive(false) end end function UpperMonthCard:SetBoughtPanelInfo() local endTime = OperatingManager.GetGoodsEndTime(self.chargerBaseType) self.totalLoginday.text = "当前天数:" .. OperatingManager.GetRewardDay(self.chargerBaseType) .. "天" local startStr, endStr = OperatingManager.GetShowTime(endTime) self.boughtLeftTime.text = "领取时间:" ..startStr .. " — ".. endStr --- 购买后倒计时显示 self.timer = nil self.timer = Timer.New(function() if GetTimeStamp() > endTime then --- 注销鸡精 OperatingManager.RemoveEndTime(self.baseType) self:SetBuyState() self.timer:Stop() else OperatingManager.SetSerData(self.chargerBaseType) self.totalLoginday.text = "当前天数:" .. OperatingManager.GetRewardDay(self.chargerBaseType) .. "天" end end, 1, -1, true) self.timer:Start() end -- 充值成功回调 function UpperMonthCard:RechargeSuccessFunc(id) FirstRechargeManager.RefreshAccumRechargeValue(id) OperatingManager.RefreshGiftGoodsBuyTimes(GoodsTypeDef.DemonCrystal, id) --- 设置购买成功数据 OperatingManager.SetSignRewarDay(self.chargerBaseType, 438) local startTime = Today_N_OClockTimeStamp(0) OperatingManager.SetGoodsEndTime(self.baseType, startTime + 30 * 24 * 60 * 60 - 1) -- Today_N_OClockTimeStamp --- 刷新本地显示 self:FreshBoughtShow() end --- 购买成功刷新 function UpperMonthCard:FreshBoughtShow() self.boughtPanel:SetActive(true) self.buyPanel:SetActive(false) self.totalLoginday.text = "当前天数:" .. OperatingManager.GetRewardDay(self.chargerBaseType) .. "天" local startStr, endStr = OperatingManager.GetShowTime(OperatingManager.GetGoodsEndTime(self.chargerBaseType)) self.boughtLeftTime.text = "领取时间:" ..startStr .. " — ".. endStr end function UpperMonthCard:TimeFormat(second) local day = math.floor(second / (24 * 3600)) local minute = math.floor(second / 60) % 60 local sec = second % 60 local hour = math.floor(math.floor(second - day * 24 * 3600 - sec - minute * 60) / 3600) return string.format("%d天%02d时%02d分", day, hour, minute) end --界面关闭时调用(用于子类重写) function UpperMonthCard:OnClose() self.gameObject:SetActive(false) end --界面销毁时调用(用于子类重写) function UpperMonthCard:OnDestroy() for k,v in pairs(self.rewardList) do SubUIManager.Close(v.item) end Util.ClearChild(self.grid.transform) self.rewardList = {} end return UpperMonthCard