264 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			264 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Lua
		
	
 | 
						|
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.tip = Util.GetGameObject(self.gameObject, "Bg/tip")
 | 
						|
    ---- 奖励列表
 | 
						|
    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 < 2 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
 | 
						|
        if self.actType == 78 then
 | 
						|
            CheckRedPointStatus(RedPointType.jijin128)
 | 
						|
        else
 | 
						|
            CheckRedPointStatus(RedPointType.jijin328)
 | 
						|
        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
 | 
						|
        v.itemView:SetEffectLayer(self.sortingOrder)
 | 
						|
    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 < 2 then
 | 
						|
        self.btnBuy.gameObject:SetActive(true)
 | 
						|
        self.btnBuyImage.sprite = self.spLoader:LoadSprite(state[0].bg)
 | 
						|
        self.textBuy.text = MoneyUtil.GetMoneyUnitNameWithMoney(chargeConfig[self.baseType].Price)
 | 
						|
        self.btnBuyRed.gameObject:SetActive(false)
 | 
						|
        self.tip.gameObject:SetActive(false)
 | 
						|
    else
 | 
						|
        self.isGet = false
 | 
						|
        self.isAllGet = true
 | 
						|
        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
 | 
						|
            end 
 | 
						|
            if self.actInfo.mission[i].state == 0 then
 | 
						|
                self.isAllGet = false
 | 
						|
            end
 | 
						|
        end 
 | 
						|
        if self.isGet then
 | 
						|
            self.btnBuy.gameObject:SetActive(true)
 | 
						|
            self.btnBuyImage.sprite = self.spLoader:LoadSprite(state[1].bg)
 | 
						|
            self.textBuy.text = state[1].text
 | 
						|
            self.btnBuyRed.gameObject:SetActive(true)
 | 
						|
            self.tip.gameObject:SetActive(false)
 | 
						|
        else
 | 
						|
            self.btnBuy.gameObject:SetActive(true)
 | 
						|
            self.btnBuyImage.sprite = self.spLoader:LoadSprite(state[2].bg)
 | 
						|
            self.textBuy.text = state[2].text
 | 
						|
            self.btnBuyRed.gameObject:SetActive(false)
 | 
						|
            self.tip.gameObject:SetActive(false)
 | 
						|
        end
 | 
						|
        if self.isAllGet then
 | 
						|
            self.btnBuy.gameObject:SetActive(false)
 | 
						|
            self.tip.gameObject:SetActive(true)
 | 
						|
        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
 | 
						|
 |