242 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			242 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Lua
		
	
require("Base/BasePanel")
 | 
						||
require("View/FourElementSingleWave")
 | 
						||
FourElementMonsterCampPanel = Inherit(BasePanel)
 | 
						||
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
 | 
						||
local this = FourElementMonsterCampPanel
 | 
						||
 | 
						||
this.grid = {}
 | 
						||
this.singledataList = {}
 | 
						||
--this.singlePreList = {}
 | 
						||
 | 
						||
local curType = 0
 | 
						||
local trailData = {}
 | 
						||
local itemId = 0
 | 
						||
local costNum = 0
 | 
						||
local freeTimes = 0
 | 
						||
local buyTimes = 0
 | 
						||
local storeDataId = 0
 | 
						||
local callBack
 | 
						||
local screenwidth
 | 
						||
local redTrailType = {
 | 
						||
    [1] = RedPointType.PersonTrailHelp,
 | 
						||
    [2] = RedPointType.BuddishTrailHelp,
 | 
						||
    [3] = RedPointType.DemonTrailHelp,
 | 
						||
    [4] = RedPointType.TaoistTrailHelp,
 | 
						||
}
 | 
						||
local typebg={
 | 
						||
[1]="UI_hz_xm_10",
 | 
						||
[2]="UI_hz_xm_11",
 | 
						||
[3]="UI_hz_xm_12",
 | 
						||
[4]="UI_hz_xm_13",
 | 
						||
 | 
						||
 | 
						||
}
 | 
						||
--初始化组件(用于子类重写)
 | 
						||
function FourElementMonsterCampPanel:InitComponent()
 | 
						||
    screenwidth=self.gameObject.transform.rect.width
 | 
						||
    this.spLoader = SpriteLoader.New()
 | 
						||
    this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform)
 | 
						||
    this.TypeImg=Util.GetGameObject(self.gameObject, "InfoRoot/bg"):GetComponent("Image")
 | 
						||
    this.btnBack = Util.GetGameObject(self.gameObject, "InfoRoot/btnBack")    
 | 
						||
    this.helpBtn = Util.GetGameObject(self.gameObject, "InfoRoot/help")  
 | 
						||
    this.helpPosition=this.helpBtn:GetComponent("RectTransform").localPosition
 | 
						||
    this.pre = Util.GetGameObject(self.gameObject, "InfoRoot/pre")
 | 
						||
    this.grid = Util.GetGameObject(self.gameObject, "InfoRoot/grid")   
 | 
						||
    local rootHight = this.grid.transform.rect.height
 | 
						||
    local width = this.grid.transform.rect.width
 | 
						||
    this.scrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView,this.grid.transform,
 | 
						||
        this.pre, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0, 0))       
 | 
						||
    this.scrollView.moveTween.MomentumAmount = 1
 | 
						||
    this.scrollView.moveTween.Strength = 2
 | 
						||
 | 
						||
    this.titleText = Util.GetGameObject(self.gameObject, "InfoRoot/tiitleRoot/title"):GetComponent("Text")     
 | 
						||
    this.moppingUpBtn = Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/moppingUpBtn")
 | 
						||
    this.moppingUpBtn:SetActive(false)
 | 
						||
    this.canFightWaves = Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/canFightWaves"):GetComponent("Text")     
 | 
						||
    this.freeMoppingTimes = Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/freeMoppingTimes"):GetComponent("Text") 
 | 
						||
    Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/timesdes1"):GetComponent("Text").text="扫荡次数:"    
 | 
						||
    Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/timesdes2"):GetComponent("Text").text="购买次数:" 
 | 
						||
    this.buyMoppingTimes = Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/buyMoppingTimes"):GetComponent("Text")     
 | 
						||
    this.addBtn = Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/addBtn")     
 | 
						||
    this.btnRank = Util.GetGameObject(self.gameObject, "InfoRoot/btnRank")
 | 
						||
    this.btnFormation = Util.GetGameObject(self.gameObject, "InfoRoot/btnFormation")
 | 
						||
    this.btnHelpFight = Util.GetGameObject(self.gameObject, "InfoRoot/btnHelpFight")
 | 
						||
    this.btnHelpFight:SetActive(false)
 | 
						||
    this.btnHelpFightRed = Util.GetGameObject(this.btnHelpFight, "redPoint")
 | 
						||
    Util.GetGameObject(self.gameObject, "InfoRoot/btnBG1 (1)"):SetActive(false)
 | 
						||
  --  this.btnHelpFight:GetComponent("Image").sprite = this.spLoader:LoadSprite("s_silingshilian_zhuzhananniu_zh")     
 | 
						||
end
 | 
						||
 | 
						||
--绑定事件(用于子类重写)
 | 
						||
function FourElementMonsterCampPanel:BindEvent()
 | 
						||
    Util.AddClick(this.btnBack, function ()
 | 
						||
        self:ClosePanel()
 | 
						||
        if callBack then callBack() end
 | 
						||
    end)
 | 
						||
    Util.AddClick(this.helpBtn, function ()
 | 
						||
        if curType == 1 then
 | 
						||
            UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.FoueElementPeo,this.helpPosition.x,this.helpPosition.y)
 | 
						||
        elseif curType == 2 then
 | 
						||
            UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.FoueElementBud,this.helpPosition.x,this.helpPosition.y)
 | 
						||
        elseif curType == 3 then
 | 
						||
            UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.FoueElementDem,this.helpPosition.x,this.helpPosition.y)
 | 
						||
        elseif curType == 4 then
 | 
						||
            UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.FoueElementTao,this.helpPosition.x,this.helpPosition.y)
 | 
						||
        end
 | 
						||
    end)
 | 
						||
    Util.AddClick(this.addBtn, function ()
 | 
						||
        if buyTimes < 1 then
 | 
						||
            PopupTipPanel.ShowTip("今日已无购买次数")
 | 
						||
            return
 | 
						||
        else
 | 
						||
            if BagManager.GetItemCountById(itemId) < costNum then
 | 
						||
                PopupTipPanel.ShowTip(string.format(Language[10298], itemConfig[itemId].Name))
 | 
						||
                return
 | 
						||
            end
 | 
						||
            MsgPanel.ShowTwo(string.format("是否花费%s%s购买一次扫荡次数?",costNum,itemConfig[itemId].Name),function() end,function()
 | 
						||
                ShopManager.RequestBuyShopItem(SHOP_TYPE.FUNCTION_SHOP,storeDataId,1,function()
 | 
						||
                    PrivilegeManager.RefreshPrivilegeUsedTimes(trailData.buyTimeId, 1)     
 | 
						||
                    this.UpdatePrivilage()             
 | 
						||
                end)
 | 
						||
            end,"取消","确定")
 | 
						||
        end
 | 
						||
    end)
 | 
						||
    Util.AddClick(this.btnRank, function ()
 | 
						||
        UIManager.OpenPanel(UIName.RankingSingleListPanel,rankKingList[curType+26])
 | 
						||
    end)
 | 
						||
    Util.AddClick(this.btnFormation, function ()
 | 
						||
        UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.FOUR_ELEMENT, trailData.fourElementType, nil, 2)
 | 
						||
    end)
 | 
						||
    Util.AddClick(this.btnHelpFight, function ()
 | 
						||
        local MyHeroData = HeroManager.GetHeroDataByProperty(curType,0)
 | 
						||
        MonsterCampManager.GetFriendHelpHeros(curType,function(data)        
 | 
						||
            UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.FourElementHelpFight,trailData.monsterWave + 1,curType,data,MyHeroData)
 | 
						||
        end)       
 | 
						||
    end)
 | 
						||
    Util.AddClick(this.moppingUpBtn, function ()
 | 
						||
        if trailData.canFightTime < 1 then
 | 
						||
            PopupTipPanel.ShowTip("今日已无挑战次数")
 | 
						||
            return
 | 
						||
        end
 | 
						||
        if not ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.CampTowerConfig,"CampId",curType,"FloorId",trailData.monsterWave + 1) then
 | 
						||
            PopupTipPanel.ShowTip("已通关全部层数,无法继续挑战")
 | 
						||
            return
 | 
						||
        end
 | 
						||
        if FormationManager.CheckFormationValid(curType + 3000) then
 | 
						||
            MonsterCampManager.ExecuteFightBattle(trailData.monsterWave + 1 ,0,function() this:OnShow() end,curType,true)
 | 
						||
        else
 | 
						||
            PopupTipPanel.ShowTip("编队不能为空")
 | 
						||
            return
 | 
						||
        end
 | 
						||
    end)
 | 
						||
end
 | 
						||
 | 
						||
this.UpdatePrivilage = function()   
 | 
						||
    if this.singledataList[trailData.monsterWave] then
 | 
						||
        this.singledataList[trailData.monsterWave]:UpdatePrivilage()
 | 
						||
    end
 | 
						||
    storeDataId,itemId,costNum = MonsterCampManager.GetCost(curType)
 | 
						||
    freeTimes,buyTimes = MonsterCampManager.GetTimeTip(curType)  
 | 
						||
    this.freeMoppingTimes.text = freeTimes
 | 
						||
    this.buyMoppingTimes.text = buyTimes
 | 
						||
end 
 | 
						||
--添加事件监听(用于子类重写)
 | 
						||
function FourElementMonsterCampPanel:AddListener()
 | 
						||
    Game.GlobalEvent:AddEvent(GameEvent.FourEle.UpdatePri, self.UpdatePrivilage,self)
 | 
						||
    Game.GlobalEvent:AddEvent(GameEvent.FourEle.RefreshView, self.OnShow,self)
 | 
						||
end
 | 
						||
 | 
						||
--移除事件监听(用于子类重写)
 | 
						||
function FourElementMonsterCampPanel:RemoveListener()
 | 
						||
    Game.GlobalEvent:RemoveEvent(GameEvent.FourEle.UpdatePri, self.UpdatePrivilage,self)
 | 
						||
    Game.GlobalEvent:RemoveEvent(GameEvent.FourEle.RefreshView, self.OnShow,self)
 | 
						||
end
 | 
						||
 | 
						||
--界面打开时调用(用于子类重写)
 | 
						||
function FourElementMonsterCampPanel:OnOpen(index)
 | 
						||
    curType = index 
 | 
						||
    BindRedPointObject(redTrailType[curType],this.btnHelpFightRed) 
 | 
						||
    this.UpView:OnOpen({showType = UpViewOpenType.ShowLeft, panelType = PanelType.MonsterCamp })
 | 
						||
end
 | 
						||
 | 
						||
--界面打开时调用(用于子类重写)
 | 
						||
function FourElementMonsterCampPanel:OnShow()
 | 
						||
    trailData = MonsterCampManager.GetCurFourElementMonsterInfo(curType)
 | 
						||
    if trailData.openState == 0 then
 | 
						||
        self:ClosePanel()
 | 
						||
        return
 | 
						||
    end
 | 
						||
    storeDataId,itemId,costNum = MonsterCampManager.GetCost(curType)
 | 
						||
    this.titleText.text = FourElementName[curType]
 | 
						||
    this.TypeImg.sprite =this.spLoader:LoadSprite(typebg[curType])
 | 
						||
    this.canFightWaves.text = "可挑战层数:"..trailData.canFightTime
 | 
						||
    freeTimes,buyTimes = MonsterCampManager.GetTimeTip(curType)  
 | 
						||
    this.freeMoppingTimes.text = freeTimes
 | 
						||
    this.buyMoppingTimes.text= buyTimes
 | 
						||
    this.InitMonsterShow()
 | 
						||
 | 
						||
    local waves = MonsterCampManager.GetFourElementTotalWave()
 | 
						||
    if not PlayerPrefs.HasKey("FourElement"..PlayerManager.uid) then
 | 
						||
        PlayerPrefs.SetInt("FourElement"..PlayerManager.uid,-1)
 | 
						||
    end
 | 
						||
    --[[
 | 
						||
    if waves ~= PlayerPrefs.GetInt("FourElement"..PlayerManager.uid) then
 | 
						||
        PlayerPrefs.SetInt("FourElement"..PlayerManager.uid,waves)
 | 
						||
        local propertyId = SacredTreeManager.GetUnLockNewProperty(waves)
 | 
						||
        if propertyId > 0 then
 | 
						||
            Timer.New(function()
 | 
						||
                UIManager.OpenPanel(UIName.RewardItemPopup,nil,nil,nil,CompShowType.fourElement,nil,nil,nil,propertyId) 
 | 
						||
            end,0.2):Start()  
 | 
						||
            local power = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
 | 
						||
            if power - MonsterCampManager.oldpower > 0 then
 | 
						||
                UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2,{oldValue = MonsterCampManager.oldpower,newValue = power})
 | 
						||
            end        
 | 
						||
        end
 | 
						||
    end
 | 
						||
    ]]
 | 
						||
end
 | 
						||
 | 
						||
function this.SingleDataShow(go, data)
 | 
						||
    local singledata = FourElementSingleWave:New(go)
 | 
						||
    go:GetComponent("RectTransform").sizeDelta=Vector2.New(screenwidth,380)
 | 
						||
    singledata:InitComponent(go,data,curType)
 | 
						||
    singledata:OnOpen()   
 | 
						||
    return singledata
 | 
						||
end
 | 
						||
 | 
						||
function this.InitMonsterShow()
 | 
						||
    local curwaves = trailData.monsterWave + 1  --当前可挑战层
 | 
						||
    local monsterInfo = MonsterCampManager.GetFourElementMonstersInfo(curType,curwaves)
 | 
						||
    table.sort(monsterInfo,function(a,b) return a.wave > b.wave end)
 | 
						||
    this.scrollView:SetData(monsterInfo, function (index, go)
 | 
						||
        local tempData = this.SingleDataShow(go, monsterInfo[index])
 | 
						||
        this.singledataList[monsterInfo[index].wave] = tempData
 | 
						||
        --this.singlePreList[go] = this.singledataList[monsterInfo[index].wave]
 | 
						||
    end,true,true)    
 | 
						||
    this.scrollView:SetIndex(#monsterInfo - curwaves - 1) 
 | 
						||
    -- if MonsterCampManager.CurOffsetIndex  < 0 then
 | 
						||
    --     this.scrollView:SetIndex((#monsterInfo-trailData.monsterWave-2))
 | 
						||
    -- else
 | 
						||
    --     this.scrollView:SetIndex((#monsterInfo-MonsterCampManager.CurOffsetIndex-2))
 | 
						||
    -- end
 | 
						||
end
 | 
						||
 | 
						||
--界面关闭时调用(用于子类重写)
 | 
						||
function FourElementMonsterCampPanel:OnClose() 
 | 
						||
    ClearRedPointObject(redTrailType[curType],this.btnHelpFightRed)  
 | 
						||
    MonsterCampManager.CurOffsetIndex = -1
 | 
						||
end
 | 
						||
 | 
						||
--界面销毁时调用(用于子类重写)
 | 
						||
function FourElementMonsterCampPanel:OnDestroy()  
 | 
						||
    this.spLoader:Destroy()
 | 
						||
    for k,v in pairs(this.singledataList) do
 | 
						||
        v:OnDestroy()
 | 
						||
    end
 | 
						||
    --this.singlePreList = {}
 | 
						||
    this.singledataList = {}
 | 
						||
    SubUIManager.Close(this.scrollView)
 | 
						||
    this.spLoader:Destroy()
 | 
						||
end
 | 
						||
 | 
						||
return FourElementMonsterCampPanel |