305 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			305 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Lua
		
	
require("Base/BasePanel")
 | 
						|
FightMopUpEndPanel = Inherit(BasePanel)
 | 
						|
local this=FightMopUpEndPanel
 | 
						|
local rewardGos
 | 
						|
local curIndex=1
 | 
						|
local isClick=true--是否已退出扫荡
 | 
						|
local mopUpFightId--传过来的小地图id
 | 
						|
local needItemNum = 0--需要材料的个数
 | 
						|
local mopUpFightData--通过小地图id 获取的关卡静态数据
 | 
						|
local openPanel--打开扫荡界面的界面
 | 
						|
local allRewardList ={}--后端返回的掉落数据
 | 
						|
local msgItemInfo ={}--后端返回体力信息
 | 
						|
local itemData = {}--关卡掉落的特殊奖励
 | 
						|
local isShowMsgPanel = false--是否弹直接返回主角天赋界面 的二级弹窗
 | 
						|
this.selfsortingOrder = 0
 | 
						|
local curCanMopUpNum = 0--当前能扫荡的次数
 | 
						|
local curOneOrTenMopUp = false--true 十扫 false 单扫
 | 
						|
--初始化组件(用于子类重写)
 | 
						|
function FightMopUpEndPanel:InitComponent()
 | 
						|
    this.spLoader = SpriteLoader.New()
 | 
						|
 | 
						|
    rewardGos={}
 | 
						|
    this.levelName = Util.GetGameObject(self.transform, "Bg/nameImage/name"):GetComponent("Text")
 | 
						|
    this.rewardGridGo = Util.GetGameObject(self.transform, "Bg/scroll/grid")
 | 
						|
    this.rewardScrollGo = Util.GetGameObject(self.transform, "Bg/scroll")
 | 
						|
    this.curPlayerName = Util.GetGameObject(self.transform, "Bg/curPlayer/name"):GetComponent("Text")
 | 
						|
    this.curPlayerLv = Util.GetGameObject(self.transform, "Bg/curPlayer/lv/lv"):GetComponent("Text")
 | 
						|
    this.curPlayerexp = Util.GetGameObject(self.transform, "Bg/curPlayer/exp"):GetComponent("Slider")
 | 
						|
    this.curPlayerexpText=Util.GetGameObject(self.transform,"Bg/curPlayer/ExpText"):GetComponent("Text")
 | 
						|
    for i = 1, 10 do
 | 
						|
        rewardGos[i]= Util.GetGameObject(self.gameObject, "Bg/scroll/grid/mapAreaPre"..i)
 | 
						|
        Util.GetGameObject(rewardGos[i].transform, "areaName"):GetComponent("Text").text=Language[10262]..i..Language[10263]
 | 
						|
    end
 | 
						|
 | 
						|
 | 
						|
    this.armorInfo = Util.GetGameObject(self.transform, "Bg/armorInfo/frameItemParent")
 | 
						|
    --this.icon = Util.GetGameObject(self.transform, "Bg/armorInfo/frame/icon"):GetComponent("Image")
 | 
						|
    --this.frameMask = Util.GetGameObject(self.transform, "Bg/armorInfo/frameMask")
 | 
						|
    --this.frame = Util.GetGameObject(self.transform, "Bg/armorInfo/frame")
 | 
						|
    --this.pokemonFrame = Util.GetGameObject(self.transform, "Bg/armorInfo/pokemonFrame")
 | 
						|
    --this.pokemonImage = Util.GetGameObject(self.transform, "Bg/armorInfo/pokemonFrame/pokemonImage"):GetComponent("Image")
 | 
						|
    --this.itenName = Util.GetGameObject(self.transform, "Bg/armorInfo/frame/name")
 | 
						|
    this.itemName = Util.GetGameObject(self.transform, "Bg/armorInfo/armorName"):GetComponent("Text")
 | 
						|
    this.needNum = Util.GetGameObject(self.transform, "Bg/armorInfo/needNum"):GetComponent("Text")
 | 
						|
    --this.haveNumGo = Util.GetGameObject(self.transform, "Bg/armorInfo/haveNum")
 | 
						|
    --this.haveNumText = Util.GetGameObject(self.transform, "Bg/armorInfo/haveNum/haveNum"):GetComponent("Text")
 | 
						|
 | 
						|
 | 
						|
    this.oneBtn = Util.GetGameObject(self.transform, "Bg/oneBtn")
 | 
						|
    this.oneBtnText = Util.GetGameObject(self.transform, "Bg/oneBtn/tiliNum"):GetComponent("Text")
 | 
						|
    this.tenBtn = Util.GetGameObject(self.transform, "Bg/tenBtn")
 | 
						|
    this.tenBtnText = Util.GetGameObject(self.transform, "Bg/tenBtn/tiliNum"):GetComponent("Text")
 | 
						|
    this.btnBack = Util.GetGameObject(self.transform, "Bg/btnBack")
 | 
						|
    this.noOneImage = Util.GetGameObject(self.transform, "Bg/scroll/noOneImage")
 | 
						|
end
 | 
						|
 | 
						|
--绑定事件(用于子类重写)
 | 
						|
function FightMopUpEndPanel:BindEvent()
 | 
						|
 | 
						|
    Util.AddClick(this.btnBack, function()
 | 
						|
        PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
 | 
						|
        if isClick then
 | 
						|
            if openPanel then
 | 
						|
                UIManager.ClosePanel(UIName.RewardItemSingleShowPopup)
 | 
						|
                self:ClosePanel()
 | 
						|
            else
 | 
						|
                self:ClosePanel()
 | 
						|
            end
 | 
						|
        else
 | 
						|
            PopupTipPanel.ShowTip(Language[10254])
 | 
						|
        end
 | 
						|
    end)
 | 
						|
    Util.AddClick(this.oneBtn, function()
 | 
						|
        curOneOrTenMopUp = false
 | 
						|
        this.OneAndTenBtnClick(1)
 | 
						|
    end)
 | 
						|
    Util.AddClick(this.tenBtn, function()
 | 
						|
        curOneOrTenMopUp = true
 | 
						|
        this.OneAndTenBtnClick(10)
 | 
						|
    end)
 | 
						|
end
 | 
						|
 | 
						|
--添加事件监听(用于子类重写)
 | 
						|
function FightMopUpEndPanel:AddListener()
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
--移除事件监听(用于子类重写)
 | 
						|
function FightMopUpEndPanel:RemoveListener()
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
--界面打开时调用(用于子类重写)
 | 
						|
function FightMopUpEndPanel:OnOpen(_mopUpFightId,_opePanel,_needItemNum)
 | 
						|
 | 
						|
    this.selfsortingOrder = self.sortingOrder
 | 
						|
    this.noOneImage:SetActive(true)
 | 
						|
    mopUpFightId =_mopUpFightId
 | 
						|
    needItemNum = _needItemNum
 | 
						|
    local levelConfig = ConfigManager.GetConfigData(ConfigName.LevelDifficultyConfig,mopUpFightId)
 | 
						|
    if levelConfig then
 | 
						|
        itemData = levelConfig.Show[1]
 | 
						|
    end
 | 
						|
    mopUpFightData = FightManager.GetSingleFightDataByFightId(mopUpFightId)
 | 
						|
    --天赋需要材料信息 临时存在了背包manager信息中   在此界面进行判断 id相等时取其信息使用
 | 
						|
    if itemData and BagManager.tianFuMaterial then
 | 
						|
        for i, v in ipairs(BagManager.tianFuMaterial) do
 | 
						|
            if v[1] == itemData[1] then
 | 
						|
                needItemNum = v[2]
 | 
						|
                openPanel = _opePanel
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end
 | 
						|
    this.rewardScrollGo:GetComponent("ScrollRect").enabled = false
 | 
						|
    this.rewardGridGo:GetComponent("RectTransform").anchoredPosition=Vector2.New(0,0)
 | 
						|
    for i = 1, 10 do
 | 
						|
        rewardGos[i]:SetActive(false)
 | 
						|
    end
 | 
						|
    allRewardList = {}
 | 
						|
    this.ShowPanelData()
 | 
						|
end
 | 
						|
function this.ShowPanelData()
 | 
						|
    this.curPlayerName.text = PlayerManager.nickName
 | 
						|
    this.curPlayerLv.text = PlayerManager.level
 | 
						|
    this.curPlayerexp.value= PlayerManager.exp/PlayerManager.userLevelData[PlayerManager.level].Exp
 | 
						|
    this.curPlayerexpText.text=PlayerManager.exp.."/"..PlayerManager.userLevelData[PlayerManager.level].Exp
 | 
						|
    if mopUpFightData then
 | 
						|
        this.levelName.text=Language[10608]..GetLanguageStrById(mopUpFightData.fightData.Name).."】"
 | 
						|
        this.oneBtnText.text = mopUpFightData.fightData.Cost[1][2]+mopUpFightData.fightData.PreLevelCost[1][2]
 | 
						|
        this.tenBtnText.text = (mopUpFightData.fightData.Cost[1][2]+mopUpFightData.fightData.PreLevelCost[1][2])*10
 | 
						|
    end
 | 
						|
    if itemData then
 | 
						|
        Util.ClearChild(this.armorInfo.transform)
 | 
						|
        SubUIManager.Open(SubUIConfig.ItemView, this.armorInfo.transform):OnOpen(false, itemData, 1,false)
 | 
						|
        this.itemName.text = GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.ItemConfig,itemData[1]).Name)
 | 
						|
    end
 | 
						|
    if openPanel then
 | 
						|
        this.needNum.text = BagManager.GetItemCountById(itemData[1]) .."/"..needItemNum
 | 
						|
    else
 | 
						|
        this.needNum.text = BagManager.GetItemCountById(itemData[1])
 | 
						|
    end
 | 
						|
    if allRewardList and #allRewardList>0 then
 | 
						|
        this.rewardScrollGo:GetComponent("ScrollRect").enabled = false
 | 
						|
        this.rewardGridGo:GetComponent("RectTransform").anchoredPosition=Vector2.New(0,0)
 | 
						|
        curIndex=1
 | 
						|
        --this.ShowDrop()
 | 
						|
        this.ShowAllMopUpRewardList()
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
local callList = Stack.New()
 | 
						|
function this.ShowAllMopUpRewardList()
 | 
						|
    isClick=false
 | 
						|
    callList:Clear()
 | 
						|
    callList:Push(function ()
 | 
						|
        Log("结束了!!!")
 | 
						|
        isClick=true
 | 
						|
        this.rewardScrollGo:GetComponent("ScrollRect").enabled = true
 | 
						|
        if openPanel and isShowMsgPanel and itemData then--如果带着需求材料进来的 材料集齐的时候 直接退出
 | 
						|
            if BagManager.GetItemCountById(itemData[1]) >= needItemNum then
 | 
						|
                --MsgPanel.ShowOne("已集齐材料请前往注入", function()
 | 
						|
                    UIManager.ClosePanel(UIName.RewardItemSingleShowPopup)
 | 
						|
                    this:ClosePanel()
 | 
						|
                --end )
 | 
						|
            end
 | 
						|
        end
 | 
						|
        --如果是十连扫荡 并且已扫荡完毕 无需检测材料是否集齐的时候
 | 
						|
        if curOneOrTenMopUp and not isShowMsgPanel and openPanel == nil then
 | 
						|
            curCanMopUpNum = math.floor(BagManager.GetItemCountById(2) / (mopUpFightData.fightData.Cost[1][2]+mopUpFightData.fightData.PreLevelCost[1][2]))
 | 
						|
            if curCanMopUpNum < 1 then
 | 
						|
                UIManager.OpenPanel(UIName.QuickPurchasePanel, { type = UpViewRechargeType.Energy })
 | 
						|
                return
 | 
						|
            end
 | 
						|
        end
 | 
						|
 | 
						|
        BagManager.BackDataRefreshEnerny(msgItemInfo)
 | 
						|
        msgItemInfo = {}
 | 
						|
    end)
 | 
						|
    local oldLv = 0
 | 
						|
    local newLv = 0
 | 
						|
    for i = #allRewardList, 1, -1 do
 | 
						|
        callList:Push(function ()
 | 
						|
            oldLv = PlayerManager.level
 | 
						|
            rewardGos[i]:SetActive(true)
 | 
						|
            this.SetGridPosY(i)
 | 
						|
            this.SetItemShow(rewardGos[i],allRewardList[i])
 | 
						|
            if mopUpFightData and mopUpFightData.fightData and mopUpFightData.fightData.Cost then
 | 
						|
                --BagManager.UpdateItemsNum(2,(mopUpFightData.fightData.Cost[1][2]+mopUpFightData.fightData.PreLevelCost[1][2]))
 | 
						|
                PlayerManager.PromoteLevel(mopUpFightData.fightData.Cost[1][2]+mopUpFightData.fightData.PreLevelCost[1][2])
 | 
						|
            end
 | 
						|
            this.curPlayerLv.text = PlayerManager.level
 | 
						|
            this.curPlayerexp.value= PlayerManager.exp/PlayerManager.userLevelData[PlayerManager.level].Exp
 | 
						|
            this.curPlayerexpText.text=PlayerManager.exp.."/"..PlayerManager.userLevelData[PlayerManager.level].Exp
 | 
						|
            newLv = PlayerManager.level
 | 
						|
 | 
						|
            if oldLv < newLv then
 | 
						|
                local curOpenFightId = FightManager.GetCurInSmallFightId()--
 | 
						|
                local fightConFigData = ConfigManager.GetConfigData(ConfigName.LevelDifficultyConfig,curOpenFightId)
 | 
						|
                if fightConFigData and fightConFigData.PicShow == 1 and FightManager.isOpenLevelPat then
 | 
						|
                    UIManager.OpenPanel(UIName.FightEndLvUpPanel, oldLv, newLv, function ()
 | 
						|
                        --UIManager.OpenPanel(UIName.UnlockCheckpointPopup,curOpenFightId,function ()
 | 
						|
                        --    Timer.New(function ()
 | 
						|
                                callList:Pop()()
 | 
						|
                            --end, 0.2):Start()
 | 
						|
                        --end)
 | 
						|
                    end)
 | 
						|
                else
 | 
						|
                    UIManager.OpenPanel(UIName.FightEndLvUpPanel, oldLv, newLv, function ()
 | 
						|
                        Timer.New(function ()
 | 
						|
                            callList:Pop()()
 | 
						|
                        end, 0.2):Start()
 | 
						|
                    end)
 | 
						|
                end
 | 
						|
            else
 | 
						|
                Timer.New(function ()
 | 
						|
                    callList:Pop()()
 | 
						|
                end, 0.2):Start()
 | 
						|
            end
 | 
						|
        end)
 | 
						|
    end
 | 
						|
    callList:Pop()()
 | 
						|
end
 | 
						|
function  this.SetGridPosY(curIndex)
 | 
						|
    if curIndex==3 then--53  246   193
 | 
						|
        this.rewardGridGo:GetComponent("RectTransform").anchoredPosition=Vector2.New(0,53)
 | 
						|
    elseif curIndex>3 then
 | 
						|
        this.rewardGridGo:GetComponent("RectTransform").anchoredPosition=Vector2.New(0,53+(199*(curIndex-3)))
 | 
						|
    end
 | 
						|
end
 | 
						|
local itemListPrefab={}
 | 
						|
-- 根据物品列表数据显示物品
 | 
						|
function  this.SetItemShow(_parentGo,drop)
 | 
						|
    if drop==nil then return end
 | 
						|
    local itemDataList={}
 | 
						|
    itemDataList=BagManager.GetTableByBackDropData(drop)
 | 
						|
    Util.ClearChild(Util.GetGameObject(_parentGo, "rect/grid").transform)
 | 
						|
    for i = 1, #itemDataList do
 | 
						|
        local view = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(_parentGo, "rect/grid").transform)
 | 
						|
        view:OnOpen(true,itemDataList[i],0.75)
 | 
						|
    end
 | 
						|
    if openPanel then
 | 
						|
        this.needNum.text = BagManager.GetItemCountById(itemData[1]) .."/"..needItemNum
 | 
						|
    else
 | 
						|
        this.needNum.text = BagManager.GetItemCountById(itemData[1])
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function this.OneAndTenBtnClick(_num)
 | 
						|
    this.noOneImage:SetActive(false)
 | 
						|
    if isClick then
 | 
						|
        --体力不足时直接弹 体力购买界面
 | 
						|
        curCanMopUpNum = _num
 | 
						|
        if BagManager.GetItemCountById(2) < (mopUpFightData.fightData.Cost[1][2]+mopUpFightData.fightData.PreLevelCost[1][2])*_num then
 | 
						|
            curCanMopUpNum = math.floor(BagManager.GetItemCountById(2) / (mopUpFightData.fightData.Cost[1][2]+mopUpFightData.fightData.PreLevelCost[1][2]))
 | 
						|
            if curCanMopUpNum < 1 then
 | 
						|
                UIManager.OpenPanel(UIName.QuickPurchasePanel, { type = UpViewRechargeType.Energy })
 | 
						|
                return
 | 
						|
            end
 | 
						|
        end
 | 
						|
        --隐藏十个缓存奖励条目
 | 
						|
        for i = 1, 10 do
 | 
						|
            rewardGos[i]:SetActive(false)
 | 
						|
        end
 | 
						|
        --
 | 
						|
        local itemId = 0
 | 
						|
        local itemNum = 0--扫荡前 数量就满足 就不中通打断  并且穿0
 | 
						|
        isShowMsgPanel = false
 | 
						|
        if openPanel then
 | 
						|
            if BagManager.GetItemCountById(itemData[1]) < needItemNum then--如果一开始背包数量小于需求数量
 | 
						|
                isShowMsgPanel = true--当扫荡达到要求是  弹二级弹窗跳转天赋注入界面
 | 
						|
                itemId = itemData[1]
 | 
						|
                itemNum = needItemNum
 | 
						|
            end
 | 
						|
        end
 | 
						|
        --扫荡协议
 | 
						|
        NetManager.GetMopUpFightDataRequest(1,mopUpFightData.fightId,curCanMopUpNum,itemId,itemNum,function(msg)
 | 
						|
            allRewardList = {msg.Drop, msg.randomDrop}
 | 
						|
            table.insert(msgItemInfo,msg.ItemInfo)
 | 
						|
            this.ShowPanelData()
 | 
						|
        end)
 | 
						|
    else
 | 
						|
        PopupTipPanel.ShowTip(Language[10254])
 | 
						|
    end
 | 
						|
 | 
						|
end
 | 
						|
--界面关闭时调用(用于子类重写)
 | 
						|
function FightMopUpEndPanel:OnClose()
 | 
						|
 | 
						|
    openPanel = nil
 | 
						|
    curOneOrTenMopUp = false
 | 
						|
    this.noOneImage:SetActive(false)
 | 
						|
    if PlayerManager.curLevelAndExp then
 | 
						|
        if PlayerManager.curLevelAndExp.level and PlayerManager.curLevelAndExp.level > 0 then
 | 
						|
            PlayerManager.BcakUpdateUserExp(PlayerManager.curLevelAndExp)
 | 
						|
        end
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
--界面销毁时调用(用于子类重写)
 | 
						|
function FightMopUpEndPanel:OnDestroy()
 | 
						|
    this.spLoader:Destroy()
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
return FightMopUpEndPanel |