319 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			319 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Lua
		
	
--[[
 | 
						|
 * @ClassName FirstRechargePanel
 | 
						|
 * @Description 首充
 | 
						|
 * @Date 2019/6/3 11:45
 | 
						|
 * @Author MagicianJoker, fengliudianshao@outlook.com
 | 
						|
 * @Copyright  Copyright (c) 2019, MagicianJoker
 | 
						|
--]]
 | 
						|
local DayRewardItem = require("Modules/FirstRecharge/DayRewardItem")
 | 
						|
 | 
						|
---@class FirstRechargePanel
 | 
						|
local FirstRechargePanel = quick_class("FirstRechargePanel", BasePanel)
 | 
						|
 | 
						|
local kMaxTab, kMaxDay = 2, 3
 | 
						|
local TextColorDef = {
 | 
						|
    [1] = Color.New(48 / 255, 31 / 255, 33 / 255, 1),
 | 
						|
    [2] = Color.New(246 / 255, 235 / 255, 179 / 255, 1)
 | 
						|
}
 | 
						|
local orginLayer
 | 
						|
local activityRewardConfig = ConfigManager.GetConfig(ConfigName.ActivityRewardConfig)
 | 
						|
 | 
						|
local TipConfig = {
 | 
						|
    [MoneyType.RMB] = {
 | 
						|
        [1] = "s_shouchong_6_zh",
 | 
						|
        [2] = "s_shouchong_100_zh"
 | 
						|
    },
 | 
						|
    [MoneyType.USD] = {
 | 
						|
        [1] = "s_shouchong_$1_zh",
 | 
						|
        [2] = "s_shouchong_15_zh"
 | 
						|
    },
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function FirstRechargePanel:InitComponent()
 | 
						|
    self.spLoader = SpriteLoader.New()
 | 
						|
    orginLayer = 0
 | 
						|
    self.frame = Util.GetGameObject(self.transform, "frame")
 | 
						|
    self.closeBtn = Util.GetGameObject(self.transform, "closeBtn")
 | 
						|
    self.heroPreviewBtn = Util.GetGameObject(self.transform, "frame/heroPreviewBtn")
 | 
						|
    self.tenProBtn = Util.GetGameObject(self.transform, "frame/tenProBtn")
 | 
						|
    self.stageImage6 = Util.GetGameObject(self.transform, "frame/stageImage/Image"):GetComponent("Image")
 | 
						|
    self.stageImage100 = Util.GetGameObject(self.transform, "frame/stageImage/Image (1)"):GetComponent("Image")
 | 
						|
    self.stageImage6.sprite = self.spLoader:LoadSprite(TipConfig[MoneyUtil.MT][1])
 | 
						|
    self.stageImage100.sprite = self.spLoader:LoadSprite(TipConfig[MoneyUtil.MT][2])
 | 
						|
    self.stageImage6:SetNativeSize()
 | 
						|
    self.stageImage100:SetNativeSize()
 | 
						|
    --topPart
 | 
						|
    -- self.itemPos = Util.GetGameObject(self.transform, "frame/itemPos")
 | 
						|
    -- self.itemInfo = SubUIManager.Open(SubUIConfig.ItemView, self.itemPos.transform)
 | 
						|
    -- self.nameIcon = Util.GetGameObject(self.transform, "frame/bg/topPart/nameIcon"):GetComponent("Image")
 | 
						|
    -- self.rewardValue = Util.GetGameObject(self.transform, "frame/bg/topPart/tipsBg/value"):GetComponent("Text")
 | 
						|
    --midPart
 | 
						|
    self.tabs = {}
 | 
						|
    self.selectTabs = {}
 | 
						|
    self.tabTitles = {}
 | 
						|
    self.tabRedPoint = {}
 | 
						|
    for i = 1, kMaxTab do
 | 
						|
        self.tabs[i] = Util.GetGameObject(self.transform, "frame/tabsContent/tabs_" .. i)
 | 
						|
        self.selectTabs[i] = Util.GetGameObject(self.tabs[i], "selected")
 | 
						|
        self.tabTitles[i] = Util.GetGameObject(self.tabs[i], "title"):GetComponent("Text")
 | 
						|
        self.tabRedPoint[i] = Util.GetGameObject(self.tabs[i], "redPoint")
 | 
						|
        -- self.tabs[i]:GetComponent(Text)
 | 
						|
    end
 | 
						|
    self.selectTabIndex = -1
 | 
						|
 | 
						|
    self.rewardDay = Util.GetGameObject(self.transform, "frame/rewardBg/rewardDay")
 | 
						|
    self.rewardGrid = Util.GetGameObject(self.transform, "frame/rewardBg/rewardBg")
 | 
						|
    self.rewardGridPos = self.rewardGrid.transform.localPosition   
 | 
						|
    self.itemWidth = self.rewardGrid:GetComponent("HorizontalLayoutGroup").spacing
 | 
						|
 | 
						|
    self.dayRewardList = {}
 | 
						|
    -- for i = 1, kMaxDay do
 | 
						|
    --     
 | 
						|
    -- end
 | 
						|
 | 
						|
    --bottomPart
 | 
						|
    self.reChargeBtn = Util.GetGameObject(self.transform, "frame/rechargeBtn")
 | 
						|
    self.reChargeTips = Util.GetGameObject(self.transform, "frame/tips"):GetComponent("Text")
 | 
						|
 | 
						|
    self.effect = Util.GetGameObject(self.transform, "frame/effect")
 | 
						|
    self.qianyao = Util.GetGameObject(self.transform, "qianyao")
 | 
						|
    self.ani = self.transform:GetComponent("Animator")
 | 
						|
    -- effectAdapte(Util.GetGameObject(self.effect, "Partical/ziti mask (1)"))
 | 
						|
 | 
						|
    BindLightFlash(Util.GetGameObject(self.effect, "saoguang"), Util.GetGameObject(self.frame, "bg_piaodai/Image (3)"))
 | 
						|
    BindLightFlash(Util.GetGameObject(self.effect, "saoguang (1)"), self.reChargeBtn)
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
function FirstRechargePanel:BindEvent()
 | 
						|
    Util.AddClick(self.closeBtn, function()
 | 
						|
        self:ClosePanel()
 | 
						|
    end)
 | 
						|
    Util.AddClick(self.reChargeBtn, function()
 | 
						|
        self:OnRechargeBtnClicked()
 | 
						|
    end)
 | 
						|
    for i = 1, kMaxTab do
 | 
						|
        Util.AddClick(self.tabs[i], function()
 | 
						|
            self:OnTabClicked(i)
 | 
						|
        end)
 | 
						|
    end
 | 
						|
    Util.AddClick(self.heroPreviewBtn, function() 
 | 
						|
        local fakeId = tonumber(1008)
 | 
						|
        local fdata, fseed = BattleManager.GetFakeBattleData(fakeId)
 | 
						|
        local testFightData = {
 | 
						|
            fightData = fdata,
 | 
						|
            fightSeed = fseed,
 | 
						|
            fightType = 0,
 | 
						|
            maxRound = 20
 | 
						|
        }
 | 
						|
        UIManager.OpenPanel(UIName.BattlePanel, testFightData, BATTLE_TYPE.Test)
 | 
						|
    end)
 | 
						|
    Util.AddClick(self.tenProBtn, function()
 | 
						|
        local heroId = 0
 | 
						|
        for _, rewardInfo in ConfigPairs(activityRewardConfig) do
 | 
						|
            if rewardInfo.ActivityId == ActivityTypeDef.FirstRecharge then--ActivityTypeDef.AccumulativeRecharge then
 | 
						|
                heroId = rewardInfo.Reward[1][1]
 | 
						|
                break
 | 
						|
            end
 | 
						|
        end
 | 
						|
        UIManager.OpenPanel(UIName.RoleGetInfoPopup, false, heroId,10)
 | 
						|
    end)
 | 
						|
end
 | 
						|
 | 
						|
function FirstRechargePanel:OnSortingOrderChange()
 | 
						|
    Util.AddParticleSortLayer(self.effect, self.sortingOrder - orginLayer)
 | 
						|
    Util.AddParticleSortLayer(self.qianyao, self.sortingOrder - orginLayer)
 | 
						|
    orginLayer = self.sortingOrder
 | 
						|
    --特效穿透特殊处理
 | 
						|
    -- if self.itemInfo then
 | 
						|
    --     self.itemInfo:SetEffectLayer( self.sortingOrder)
 | 
						|
    -- end
 | 
						|
    -- for i = 1, #self.dayRewardList do
 | 
						|
    --     self.dayRewardList[i]:OnSortingOrderChange(self.sortingOrder)
 | 
						|
    -- end
 | 
						|
end
 | 
						|
local fun = nil
 | 
						|
function FirstRechargePanel:OnOpen(context,_fun)
 | 
						|
    self.isPlayAnim = true
 | 
						|
    context = context and context or {}
 | 
						|
    self.selectTabIndex = context.tabIndex and context.tabIndex or 1
 | 
						|
    -- self:SetOncePart()
 | 
						|
    fun = _fun
 | 
						|
    self.qianyao:SetActive(false)
 | 
						|
    local qyTime = 0
 | 
						|
    if not FirstRechargeManager.GetAnimFlag("FirstRechargeAnim") then
 | 
						|
        SoundManager.PlaySound(SoundConfig.UI_Hd_swk)
 | 
						|
        self.qianyao:SetActive(true)
 | 
						|
        qyTime = 1.5
 | 
						|
        FirstRechargeManager.SetAnimFlag("FirstRechargeAnim")
 | 
						|
    end
 | 
						|
    self.frame:SetActive(false)
 | 
						|
    self.effect:SetActive(false)
 | 
						|
    self.ani.enabled = false
 | 
						|
    self.closeBtn:GetComponent("Button").enabled = false
 | 
						|
    self.tabs[1]:SetActive(false)
 | 
						|
    Timer.New(function ()
 | 
						|
        self.frame:SetActive(true)
 | 
						|
        self.effect:SetActive(true)
 | 
						|
        self.ani.enabled = true
 | 
						|
    end, qyTime):Start()
 | 
						|
    Timer.New(function ()
 | 
						|
        self.tabs[1]:SetActive(true)
 | 
						|
        self.closeBtn:GetComponent("Button").enabled = true
 | 
						|
    end, qyTime + 1):Start()
 | 
						|
end
 | 
						|
 | 
						|
function FirstRechargePanel:OnShow()
 | 
						|
    --self.reChargeTips.text = string.format("已充值  %s  元", FirstRechargeManager.GetAccumRechargeValue())
 | 
						|
    self.activityInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.FirstRecharge)
 | 
						|
    local AccumRecharge = 0
 | 
						|
    for _, missInfo in pairs(self.activityInfo.mission) do
 | 
						|
        if missInfo and missInfo.progress then
 | 
						|
            AccumRecharge = missInfo.progress
 | 
						|
        end
 | 
						|
    end
 | 
						|
    self.reChargeTips.text = Language[10664]..string.format(MoneyUtil.GetMoneyUnitName(),AccumRecharge)--string.format(Language[10665], AccumRecharge)
 | 
						|
    self:OnTabChanged(self.selectTabIndex)
 | 
						|
    for i = 1, kMaxTab do
 | 
						|
        self:SetTabRedPointStatus(i)
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function FirstRechargePanel:OnTabClicked(index)
 | 
						|
    if self.selectTabIndex == index then
 | 
						|
        return
 | 
						|
    end
 | 
						|
    self:OnTabChanged(index)
 | 
						|
end
 | 
						|
 | 
						|
function FirstRechargePanel:OnTabChanged(index)
 | 
						|
    for i, select in ipairs(self.selectTabs) do
 | 
						|
        select:SetActive(i == index)
 | 
						|
    end
 | 
						|
    for i, title in ipairs(self.tabTitles) do
 | 
						|
        title.color = i == index and TextColorDef[2] or TextColorDef[1]
 | 
						|
        title.text = string.format(Language[12281], string.format(MoneyUtil.GetMoneyUnitName(),IndexValueDef[MoneyUtil.MT][i]))
 | 
						|
    end
 | 
						|
    self.stageImage6.gameObject:SetActive(index == 1)
 | 
						|
    self.stageImage100.gameObject:SetActive(index == 2)
 | 
						|
    self:ShowContent(index)
 | 
						|
    self.selectTabIndex = index
 | 
						|
    local AccumRecharge = 0
 | 
						|
    self.offsetIndex = 0
 | 
						|
    local tempData = {}
 | 
						|
    for _, missInfo in pairs(self.activityInfo.mission) do
 | 
						|
        if missInfo.missionId then
 | 
						|
            if activityRewardConfig[missInfo.missionId].Values[1][1] == IndexValueDef[MoneyUtil.MT][index] then
 | 
						|
            table.insert(tempData,missInfo)
 | 
						|
            end
 | 
						|
        end       
 | 
						|
    end
 | 
						|
    table.sort(tempData,function(a,b) 
 | 
						|
        return a.missionId < b.missionId
 | 
						|
    end)
 | 
						|
    for _, missInfo in ipairs(tempData) do
 | 
						|
        if missInfo and missInfo.progress and activityRewardConfig[missInfo.missionId].Values[1][1] == IndexValueDef[MoneyUtil.MT][index] then
 | 
						|
            AccumRecharge = missInfo.progress
 | 
						|
            if AccumRecharge >= activityRewardConfig[missInfo.missionId].Values[1][1] then
 | 
						|
                local day = GetTimePass(FirstRechargeManager.GetRechargeTime())--FirstRechargeManager.GetRechargeTime()
 | 
						|
                if  missInfo.state ~= 1 and activityRewardConfig[missInfo.missionId].Values[1][2] <= day then
 | 
						|
                    self.offsetIndex = _
 | 
						|
                    break
 | 
						|
                end                
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end
 | 
						|
    if self.offsetIndex == 0 then
 | 
						|
        self.offsetIndex = 1
 | 
						|
    end
 | 
						|
    if self.isPlayAnim then
 | 
						|
        self.isPlayAnim = false
 | 
						|
        local vec = self.rewardGrid.transform.localPosition
 | 
						|
        vec.x = self.rewardGridPos.x - #tempData * self.itemWidth
 | 
						|
        self.rewardGrid.transform.localPosition = vec
 | 
						|
        local x = self.rewardGridPos.x - (self.offsetIndex - 1) * self.itemWidth
 | 
						|
        local vec2 = Vector3.New(x,self.rewardGridPos.y,self.rewardGridPos.z)
 | 
						|
        self.tween = self.rewardGrid.gameObject.transform:DOLocalMove(vec2, 0.5):OnStart(function() end):OnUpdate(function() --TODO:测试速度
 | 
						|
        end):OnComplete(function ()   
 | 
						|
            --self.rewardGrid.transform.localPosition = vec2              
 | 
						|
        end)
 | 
						|
    else
 | 
						|
        local x = self.rewardGridPos.x - (self.offsetIndex - 1) * self.itemWidth
 | 
						|
        local vec2 = Vector3.New(x,self.rewardGridPos.y,self.rewardGridPos.z)
 | 
						|
        self.rewardGrid.transform.localPosition = vec2
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function FirstRechargePanel:ShowContent(index)
 | 
						|
    local tempData = {}
 | 
						|
    for _, rewardInfo in ConfigPairs(activityRewardConfig) do
 | 
						|
        if rewardInfo.ActivityId == ActivityTypeDef.FirstRecharge and
 | 
						|
                rewardInfo.Values[1][1] == IndexValueDef[MoneyUtil.MT][index] then
 | 
						|
            table.insert(tempData, rewardInfo)
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    -- self.rewardValue.text = tempData[1].TotalValues
 | 
						|
    for i, dayRewardItem in ipairs(self.dayRewardList) do
 | 
						|
        dayRewardItem.gameObject:SetActive(false)
 | 
						|
    end
 | 
						|
 | 
						|
    for i = 1,math.max(#self.dayRewardList,#tempData) do
 | 
						|
        if not tempData[i] then
 | 
						|
            self.dayRewardList[i].gameObject:SetActive(false)
 | 
						|
        else
 | 
						|
            if not self.dayRewardList[i] then
 | 
						|
                local go = newObjToParent(self.rewardDay,self.rewardGrid)
 | 
						|
                self.dayRewardList[i] = DayRewardItem.new(self,go)
 | 
						|
            end
 | 
						|
            self.dayRewardList[i].gameObject:SetActive(true)
 | 
						|
            self.dayRewardList[i]:SetValue(tempData[i],self.sortingOrder)
 | 
						|
        end
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
-- function FirstRechargePanel:SetOncePart()
 | 
						|
--     for _, rewardInfo in ConfigPairs(activityRewardConfig) do
 | 
						|
--         if rewardInfo.ActivityId == ActivityTypeDef.FirstRecharge then
 | 
						|
--             self.itemInfo:OnOpen(false, rewardInfo.Reward[1], 1,false,false,false,self.sortingOrder)
 | 
						|
--             break
 | 
						|
--         end
 | 
						|
--     end
 | 
						|
-- end
 | 
						|
 | 
						|
function FirstRechargePanel:OnRechargeBtnClicked()
 | 
						|
    if not ShopManager.IsActive(SHOP_TYPE.SOUL_STONE_SHOP) then
 | 
						|
        PopupTipPanel.ShowTip(Language[10422])
 | 
						|
        return
 | 
						|
    end
 | 
						|
    self:ClosePanel()
 | 
						|
    JumpManager.GoJump(36008)
 | 
						|
end
 | 
						|
 | 
						|
function FirstRechargePanel:SetTabRedPointStatus(tabIndex)
 | 
						|
    local redPointStatus = false
 | 
						|
    if tabIndex == 1 then
 | 
						|
        redPointStatus = redPointStatus or FirstRechargeManager.GetSixMoneyTabRedPointStatus()
 | 
						|
    else
 | 
						|
        redPointStatus = redPointStatus or FirstRechargeManager.GetHundredTabRedPointStatus()
 | 
						|
    end
 | 
						|
    self.tabRedPoint[tabIndex]:SetActive(redPointStatus)
 | 
						|
end
 | 
						|
--界面关闭时调用(用于子类重写)
 | 
						|
function FirstRechargePanel:OnClose()
 | 
						|
    if fun then
 | 
						|
        fun()
 | 
						|
        fun = nil
 | 
						|
    end
 | 
						|
    self.rewardGrid.transform.localPosition = self.rewardGridPos    
 | 
						|
end
 | 
						|
 | 
						|
function FirstRechargePanel:OnDestroy()
 | 
						|
    self.spLoader:Destroy()
 | 
						|
    for i = 1, kMaxDay do
 | 
						|
        self.dayRewardList[i]:Dispose()
 | 
						|
    end
 | 
						|
    self.dayRewardList = {}
 | 
						|
end
 | 
						|
return FirstRechargePanel |