296 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			296 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Lua
		
	
require("Base/BasePanel")
 | 
						|
local UpGradePackagePanel = Inherit(BasePanel)
 | 
						|
local this = UpGradePackagePanel
 | 
						|
 | 
						|
local RechargeConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)--整表数据
 | 
						|
local upgradeConfig = ConfigManager.GetAllConfigsDataByKey(ConfigName.RechargeCommodityConfig,"ShowType",21)--五档奖励数据
 | 
						|
local fightLevelConfig = ConfigManager.GetConfig(ConfigName.MainLevelConfig)
 | 
						|
 | 
						|
local rechargeNum = 0
 | 
						|
local cursortingOrder = 0
 | 
						|
local curGiftList = {}
 | 
						|
local curGiftId = nil
 | 
						|
local curEndTime = 0
 | 
						|
local curIndex
 | 
						|
local curType
 | 
						|
local fun--回调
 | 
						|
local rechargeData
 | 
						|
local activityType = {
 | 
						|
[1] = {name = Language[11935],timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 21},
 | 
						|
[2] = {name = Language[11936],timePos = Vector3.New(0,-567,0),comp = "bg2",showType = 8},
 | 
						|
[3] = {name = Language[11935],timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 25},
 | 
						|
[4] = {name = Language[11935],timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 26},
 | 
						|
}
 | 
						|
--初始化组件(用于子类重写)
 | 
						|
function this:InitComponent()
 | 
						|
    this.btnClose = Util.GetGameObject(self.gameObject,"show/btnBack")
 | 
						|
    this.btnBuy = Util.GetGameObject(self.gameObject,"show/Button")
 | 
						|
    this.grid = Util.GetGameObject(self.gameObject,"show/rewards/Grid")
 | 
						|
    this.endTime = Util.GetGameObject(self.gameObject,"show/endTime"):GetComponent("Text")
 | 
						|
    this.price = Util.GetGameObject(self.gameObject,"show/Button/Text"):GetComponent("Text")
 | 
						|
    this.oriPrice = Util.GetGameObject(self.gameObject,"show/price/Text1"):GetComponent("Text")
 | 
						|
    this.arrowsLeft = Util.GetGameObject(self.gameObject,"show/arrows/left")
 | 
						|
    this.arrowsRight = Util.GetGameObject(self.gameObject,"show/arrows/right")
 | 
						|
    this.UI_effect_DailyRechargePanel_particle = Util.GetGameObject(self.gameObject, "bg1/UI_effect_DailyRechargePanel_particle")
 | 
						|
    this.times = Util.GetGameObject(self.gameObject,"show/timesLeft"):GetComponent("Text")
 | 
						|
    this.tip = Util.GetGameObject(self.gameObject,"show/tip"):GetComponent("Text")
 | 
						|
end
 | 
						|
 | 
						|
--绑定事件(用于子类重写)
 | 
						|
function this:BindEvent()
 | 
						|
    Util.AddClick(this.btnClose,function()
 | 
						|
        self:ClosePanel()
 | 
						|
    end)
 | 
						|
 | 
						|
    Util.AddClick(this.btnBuy,function()
 | 
						|
        PayManager.Pay(curGiftId, function(id)
 | 
						|
            FirstRechargeManager.RefreshAccumRechargeValue(curGiftId)
 | 
						|
            CheckRedPointStatus(RedPointType.GrowthPackage)--成长礼包的红点检测
 | 
						|
            rechargeData.dynamicBuyTimes = rechargeData.dynamicBuyTimes - 1
 | 
						|
            --判断可购买次数是否为零,是剔除礼包信息
 | 
						|
            -- for i = 1, #curGiftList do
 | 
						|
            if rechargeData.dynamicBuyTimes < 1 then
 | 
						|
                OperatingManager.SetHadBuyGoodsId({curGiftId})
 | 
						|
                OperatingManager.RemoveItemInfoByType(GoodsTypeDef.DirectPurchaseGift, curGiftId)
 | 
						|
            end
 | 
						|
            -- end
 | 
						|
            this:Refresh()
 | 
						|
        end)
 | 
						|
    end)
 | 
						|
 | 
						|
    Util.AddClick(this.arrowsLeft,function()
 | 
						|
        curIndex = curIndex - 1
 | 
						|
        if curGiftList[curType][curIndex] then            
 | 
						|
        else
 | 
						|
            while(curType >= 0) do
 | 
						|
                if not activityType[curType] then
 | 
						|
                    curType = LengthOfTable(activityType) 
 | 
						|
                else
 | 
						|
                    curType = curType - 1
 | 
						|
                end
 | 
						|
                if curGiftList[curType] and #curGiftList[curType] > 0 then
 | 
						|
                    curIndex =  #curGiftList[curType]   
 | 
						|
                    break   
 | 
						|
                end
 | 
						|
            end 
 | 
						|
        end
 | 
						|
        OperatingManager.upGradePackagePanelType = curType
 | 
						|
        OperatingManager.upGradePackagePanelIndex = curIndex
 | 
						|
        this:Refresh()
 | 
						|
    end)
 | 
						|
 | 
						|
    Util.AddClick(this.arrowsRight,function()
 | 
						|
        curIndex = curIndex + 1
 | 
						|
        if curGiftList[curType][curIndex] then           
 | 
						|
        else
 | 
						|
            while(curType <= LengthOfTable(activityType) + 1) do
 | 
						|
                if not activityType[curType] then
 | 
						|
                    curType = 1 
 | 
						|
                else
 | 
						|
                    curType = curType + 1
 | 
						|
                end
 | 
						|
                if curGiftList[curType] and #curGiftList[curType] > 0 then
 | 
						|
                    curIndex = 1 
 | 
						|
                    break   
 | 
						|
                end
 | 
						|
            end
 | 
						|
        end
 | 
						|
        OperatingManager.upGradePackagePanelType = curType
 | 
						|
        OperatingManager.upGradePackagePanelIndex = curIndex
 | 
						|
        this:Refresh()
 | 
						|
    end)
 | 
						|
end
 | 
						|
 | 
						|
--添加事件监听(用于子类重写)
 | 
						|
function this:AddListener()
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
--移除事件监听(用于子类重写)
 | 
						|
function this:RemoveListener()
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
function this:OnSortingOrderChange()
 | 
						|
    Util.AddParticleSortLayer( self.UI_effect_DailyRechargePanel_particle, self.sortingOrder - cursortingOrder)
 | 
						|
    cursortingOrder = self.sortingOrder
 | 
						|
end
 | 
						|
 | 
						|
--界面打开时调用(用于子类重写)
 | 
						|
function this:OnOpen(_fun)
 | 
						|
    fun = _fun
 | 
						|
    -- 音效
 | 
						|
    SoundManager.PlaySound(SoundConfig.Sound_mrhl)
 | 
						|
end
 | 
						|
 | 
						|
--获取(自己拼凑)礼包数据
 | 
						|
function this:GetInfoList()
 | 
						|
    local infoList = OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DirectPurchaseGift)--拿取所有类型5礼包信息(包含需要的礼包)
 | 
						|
    local num = 0
 | 
						|
    for k,v in pairs(activityType) do
 | 
						|
        curGiftList[k] = {}
 | 
						|
        local infoList2 = ConfigManager.GetAllConfigsDataByKey(ConfigName.RechargeCommodityConfig,"ShowType",v.showType)
 | 
						|
        for index, value in pairs(infoList) do
 | 
						|
            for i = 1, #infoList2 do
 | 
						|
                if infoList2[i].Id == value.goodsId and value.dynamicBuyTimes > 0 then
 | 
						|
                    table.insert(curGiftList[k],value)
 | 
						|
                    num = num + 1
 | 
						|
                end
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end
 | 
						|
    return num 
 | 
						|
end
 | 
						|
 | 
						|
function this:OnShow()    
 | 
						|
    this:Refresh()
 | 
						|
end
 | 
						|
 | 
						|
function this:SetCurTypeAndIndex()
 | 
						|
    curType = OperatingManager.upGradePackagePanelType and OperatingManager.upGradePackagePanelType or 1
 | 
						|
    curIndex = OperatingManager.upGradePackagePanelIndex and OperatingManager.upGradePackagePanelIndex or 0
 | 
						|
    if curGiftList[curType] and #curGiftList[curType] > 0 and curGiftList[curType][curIndex] then
 | 
						|
    elseif curGiftList[curType] and #curGiftList[curType] > 0 and (not curGiftList[curType][curIndex]) then
 | 
						|
        curIndex = #curGiftList[curType]
 | 
						|
        return curGiftList[curType][curIndex]
 | 
						|
    else
 | 
						|
        for k,v in pairs(curGiftList) do
 | 
						|
            if v and #v > 0 then
 | 
						|
                curType = k
 | 
						|
                curIndex = #curGiftList[curType]
 | 
						|
                return curGiftList[curType][curIndex]
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end
 | 
						|
    return curGiftList[curType][curIndex]
 | 
						|
end
 | 
						|
 | 
						|
function this:Refresh()
 | 
						|
 | 
						|
    local num = self:GetInfoList()   
 | 
						|
    if num < 1 then
 | 
						|
        this:ClosePanel()
 | 
						|
        return
 | 
						|
    end
 | 
						|
    rechargeData = this:SetCurTypeAndIndex()
 | 
						|
    for k,v in pairs(activityType) do
 | 
						|
        Util.GetGameObject(self.gameObject,v.comp):SetActive(false)
 | 
						|
    end
 | 
						|
    Util.GetGameObject(self.gameObject,activityType[curType].comp):SetActive(true)
 | 
						|
 | 
						|
    local level = 0
 | 
						|
    if (PlayerManager.level)%10 == 8 then
 | 
						|
        level = PlayerManager.level
 | 
						|
    else
 | 
						|
        level = (math.floor(PlayerManager.level/10)-1)*10+8
 | 
						|
    end
 | 
						|
    rechargeNum= VipManager.GetChargedNum()
 | 
						|
 | 
						|
 | 
						|
    if curType == 1 then
 | 
						|
        this.tip.text = Language[11937]..level..Language[12174] or ""
 | 
						|
    elseif curType == 3 then
 | 
						|
        local specialConfig = ConfigManager.GetConfigData(ConfigName.SpecialConfig,93).Value
 | 
						|
        local num = tonumber(specialConfig)
 | 
						|
        local value = fightLevelConfig[FightPointPassManager.lastPassFightId].SortId 
 | 
						|
        local value2 = GetLanguageStrById(ConfigManager.GetConfigDataByKey(ConfigName.MainLevelConfig,"SortId",math.floor(value/num)*num).Name)
 | 
						|
        this.tip.text =Language[11939]..value2..Language[11940]
 | 
						|
    elseif curType == 4 then
 | 
						|
        local specialConfig = ConfigManager.GetConfigData(ConfigName.SpecialConfig,92).Value
 | 
						|
        local str = string.split(specialConfig,"|")
 | 
						|
        local nums = string.split(str[1],"#")
 | 
						|
        local canGet = false
 | 
						|
        local value = MonsterCampManager.monsterWave
 | 
						|
        local value2 = 0
 | 
						|
        if value <= tonumber(nums[#nums]) then
 | 
						|
            local temp = tonumber(nums[#nums]) - tonumber(nums[#nums-1])
 | 
						|
            value2 = math.floor(value/temp) * temp
 | 
						|
        else
 | 
						|
            value2 = math.floor((value - tonumber(nums[#nums]))/tonumber(str[2]))* tonumber(str[2]) + tonumber(nums[#nums])
 | 
						|
        end
 | 
						|
        this.tip.text =Language[11941]..value2..Language[11942]
 | 
						|
    else
 | 
						|
        this.tip.text = ""
 | 
						|
    end
 | 
						|
    -- this.tip.text = curType == 1 and "恭喜您等级提升至"..level.."级,我们为您准备了超值礼包,助您提升战力!!!" or ""
 | 
						|
 | 
						|
 | 
						|
    this.arrowsLeft:SetActive(num > 1)
 | 
						|
    this.arrowsRight:SetActive(num > 1)
 | 
						|
    curGiftId = rechargeData.goodsId
 | 
						|
    curEndTime = rechargeData.endTime
 | 
						|
    this.endTime.text = Language[10573]..TimeToHMS(curEndTime-GetTimeStamp())
 | 
						|
    this.endTime.gameObject:GetComponent("RectTransform").localPosition = activityType[curType].timePos  
 | 
						|
    this:SetGfitShow(rechargeData)
 | 
						|
    this:SetTime(rechargeData)
 | 
						|
end
 | 
						|
 | 
						|
--设置奖励
 | 
						|
local _ItemViewList = {}
 | 
						|
function this:SetGfitShow(rechargeData)
 | 
						|
    for k,v in pairs(_ItemViewList) do
 | 
						|
        v.gameObject:SetActive(false)
 | 
						|
    end
 | 
						|
    for i=1, #RechargeConfig[curGiftId].RewardShow do
 | 
						|
        if not _ItemViewList[i] then
 | 
						|
            local view = SubUIManager.Open(SubUIConfig.ItemView,this.grid.transform)
 | 
						|
            _ItemViewList[i] = view
 | 
						|
        end
 | 
						|
        _ItemViewList[i]:OnOpen(false,RechargeConfig[curGiftId].RewardShow[i],0.95,false)
 | 
						|
        _ItemViewList[i].gameObject:SetActive(true)
 | 
						|
    end
 | 
						|
    this.times.text = Language[10580]..rechargeData.dynamicBuyTimes..Language[10048]
 | 
						|
    this.price.text = string.format(MoneyUtil.GetMoneyUnitName(), MoneyUtil.GetMoney(RechargeConfig[curGiftId].Price))--..MoneyUtil.GetMoneyUnitName()
 | 
						|
    if activityType[curType].Rebate and activityType[curType].Rebate ~= 0 then
 | 
						|
        this.oriPrice.transform.parent.gameObject:SetActive(true)
 | 
						|
        this.oriPrice = string.format(MoneyUtil.GetMoneyUnitName(), activityType[curType].Rebate)
 | 
						|
    else
 | 
						|
        this.oriPrice.transform.parent.gameObject:SetActive(false)
 | 
						|
    end
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
--设置剩余时间,取剩余时间最短的礼包
 | 
						|
function this:SetTime()
 | 
						|
    if self.localTimer then
 | 
						|
        self.localTimer:Stop()
 | 
						|
        self.localTimer = nil
 | 
						|
    end
 | 
						|
    self.localTimer = Timer.New(function()
 | 
						|
        -- curEndTime= curEndTime-1
 | 
						|
        --时间到了之后
 | 
						|
        if curEndTime-GetTimeStamp() < 0 then
 | 
						|
            OperatingManager.RemoveItemInfoByType(GoodsTypeDef.DirectPurchaseGift, curGiftId)
 | 
						|
            this:Refresh()
 | 
						|
        end
 | 
						|
        this.endTime.text = Language[10573]..TimeToHMS(curEndTime-GetTimeStamp())
 | 
						|
    end,1,-1,true)
 | 
						|
    self.localTimer:Start()
 | 
						|
end
 | 
						|
 | 
						|
function this:Hide()
 | 
						|
    if self.localTimer then
 | 
						|
        self.localTimer:Stop()
 | 
						|
        self.localTimer = nil
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
--界面关闭时调用(用于子类重写)
 | 
						|
function this:OnClose()
 | 
						|
    if fun then
 | 
						|
        fun()
 | 
						|
        fun = nil
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
--界面销毁时调用(用于子类重写)
 | 
						|
function this:OnDestroy()
 | 
						|
    cursortingOrder = 0
 | 
						|
    _ItemViewList = {}
 | 
						|
    if self.localTimer then
 | 
						|
        self.localTimer:Stop()
 | 
						|
        self.localTimer = nil
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
return UpGradePackagePanel |