240 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			240 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Lua
		
	
require("Base/BasePanel")
 | 
						|
XiaoyaoGetItemPopup = Inherit(BasePanel)
 | 
						|
local this=XiaoyaoGetItemPopup
 | 
						|
 | 
						|
local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig)
 | 
						|
local FreeTravelStore=ConfigManager.GetConfig(ConfigName.FreeTravelStore)
 | 
						|
local HeroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
 | 
						|
local artResourceConfig = ConfigManager.GetConfig(ConfigName.ArtResourcesConfig)
 | 
						|
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
 | 
						|
 | 
						|
local curHeroData = {}
 | 
						|
local curIndex = 1
 | 
						|
local heroData = {}
 | 
						|
local pointPrefabs = {}
 | 
						|
local allSkillDatas = {}
 | 
						|
local costId = 0
 | 
						|
local costNum = 0
 | 
						|
local heroSData
 | 
						|
local itemView
 | 
						|
--初始化组件(用于子类重写)
 | 
						|
function XiaoyaoGetItemPopup:InitComponent()
 | 
						|
    this.spLoader = SpriteLoader.New()
 | 
						|
    this.titleText = Util.GetGameObject(self.transform, "Panel/bg/title"):GetComponent("Text")
 | 
						|
    this.BtnBack=Util.GetGameObject(self.transform, "Panel/bg/btnBack")
 | 
						|
    this.remainTimes = Util.GetGameObject(self.transform, "Panel/remainTimes"):GetComponent("Text")
 | 
						|
    this.costIcon=Util.GetGameObject(self.transform,"Panel/buyPanel/item/proImage/proImage"):GetComponent("Image")
 | 
						|
    this.costNum=Util.GetGameObject(self.transform,"Panel/buyPanel/item/heroName"):GetComponent("Text")
 | 
						|
    this.buyBtn = Util.GetGameObject(self.transform,"Panel/buyPanel/buy")
 | 
						|
    this.itemPar=Util.GetGameObject(self.transform,"Panel/bg/itemPar")
 | 
						|
    this.pointGrid = Util.GetGameObject(self.transform,"Panel/buyPanel/grid")
 | 
						|
    this.point = Util.GetGameObject(self.transform,"Panel/buyPanel/point")
 | 
						|
    this.selectKuang = Util.GetGameObject(self.transform,"Panel/buyPanel/select")
 | 
						|
    this.leftBtn= Util.GetGameObject(self.transform,"Panel/leftBtn")
 | 
						|
    this.rightBtn = Util.GetGameObject(self.transform,"Panel/rightBtn")
 | 
						|
    this.zhekouImage = Util.GetGameObject(self.transform,"Panel/buyPanel/Image"):GetComponent("Image")
 | 
						|
    itemView = SubUIManager.Open(SubUIConfig.ItemView, this.itemPar.transform)
 | 
						|
end
 | 
						|
 | 
						|
local triggerCallBack
 | 
						|
--绑定事件(用于子类重写)
 | 
						|
function XiaoyaoGetItemPopup:BindEvent()
 | 
						|
    Util.AddClick(this.BtnBack, function()
 | 
						|
        PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
 | 
						|
        self:ClosePanel()
 | 
						|
    end)
 | 
						|
    Util.AddClick(this.rightBtn, function()
 | 
						|
        curIndex = curIndex + 1
 | 
						|
        if curIndex > #heroData then
 | 
						|
            curIndex = 1
 | 
						|
        end
 | 
						|
        curHeroData = heroData[curIndex]
 | 
						|
        this:SetSelectHero(curHeroData)
 | 
						|
    end)
 | 
						|
 | 
						|
    Util.AddClick(this.leftBtn, function()
 | 
						|
        curIndex = curIndex - 1
 | 
						|
        if curIndex < 1 then
 | 
						|
            curIndex = #heroData
 | 
						|
        end
 | 
						|
        curHeroData = heroData[curIndex]
 | 
						|
        this:SetSelectHero(curHeroData)
 | 
						|
    end)
 | 
						|
 | 
						|
    Util.AddClick(this.buyBtn, function(msg)
 | 
						|
        if BagManager.GetItemCountById(costId) < costNum then
 | 
						|
            PopupTipPanel.ShowTip(GetLanguageStrById(itemConfig[costId].Name)..Language[10657])
 | 
						|
        else
 | 
						|
        local rightAction = function() 
 | 
						|
            NetManager.XiaoyaoyouGetHeroRequest(curHeroData.goodsIndex,function(msg)
 | 
						|
                XiaoYaoManager.UpdateHeroData(curHeroData.goodsIndex)
 | 
						|
                XiaoYaoManager.GetHeroIndex = 0
 | 
						|
                this:OnShow()
 | 
						|
                UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop,1)
 | 
						|
            end)
 | 
						|
        end
 | 
						|
            MsgPanel.ShowTwo(Language[11999]..costNum.."</color>"..GetLanguageStrById(itemConfig[costId].Name)..Language[12000]..GetLanguageStrById(heroSData.Name).."</color>]?", nil, rightAction, Language[10731], Language[10732], Language[12001],false,"")          
 | 
						|
        end
 | 
						|
    end)
 | 
						|
end
 | 
						|
--添加事件监听(用于子类重写)
 | 
						|
function XiaoyaoGetItemPopup:AddListener()
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
--移除事件监听(用于子类重写)
 | 
						|
function XiaoyaoGetItemPopup:RemoveListener()
 | 
						|
 | 
						|
end
 | 
						|
function this.CalculateHeroAllProValList(heroConFigData,_starNum,isCalculateStarVal)
 | 
						|
    local allAddProVal = {}
 | 
						|
    for i, v in ConfigPairs(propertyConfig) do
 | 
						|
        allAddProVal[i] = 0
 | 
						|
    end
 | 
						|
    local heroRankupConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.HeroRankupConfig, "Star", heroConFigData.Star, "LimitStar", _starNum)
 | 
						|
    local curLvNum=1
 | 
						|
    local breakId = 0
 | 
						|
    local upStarId = 0
 | 
						|
    if isCalculateStarVal then
 | 
						|
        --等级
 | 
						|
        curLvNum = heroRankupConfig.OpenLevel
 | 
						|
        --解锁天赋
 | 
						|
        for i, v in ConfigPairs(ConfigManager.GetConfig(ConfigName.HeroRankupConfig)) do
 | 
						|
            if v.OpenStar == _starNum and v.Star==heroConFigData.Star then
 | 
						|
                if v.Type == 1 then
 | 
						|
                    breakId = v.Id
 | 
						|
                end
 | 
						|
                if v.Type == 2 then
 | 
						|
                    upStarId = v.Id
 | 
						|
                end
 | 
						|
            end
 | 
						|
        end
 | 
						|
        if breakId==0 then
 | 
						|
            breakId=6
 | 
						|
        end
 | 
						|
    end
 | 
						|
    allAddProVal[HeroProType.Attack]=HeroManager.CalculateProVal(heroConFigData.Attack, curLvNum, breakId,upStarId,HeroProType.Attack)
 | 
						|
    allAddProVal[HeroProType.Hp]=HeroManager.CalculateProVal(heroConFigData.Hp, curLvNum, breakId,upStarId,HeroProType.Hp)
 | 
						|
    allAddProVal[HeroProType.PhysicalDefence]=HeroManager.CalculateProVal(heroConFigData.PhysicalDefence, curLvNum, breakId,upStarId,HeroProType.PhysicalDefence)
 | 
						|
    allAddProVal[HeroProType.MagicDefence]=HeroManager.CalculateProVal(heroConFigData.MagicDefence, curLvNum, breakId,upStarId,HeroProType.MagicDefence)
 | 
						|
    Util.AddOnceClick(this.talentBtn,function()
 | 
						|
        UIManager.OpenPanel(UIName.RoleTalentPopup,heroConFigData,breakId,upStarId)
 | 
						|
    end)
 | 
						|
    if heroConFigData.OpenPassiveSkillRules then
 | 
						|
        local openlists,compoundOpenNum,compoundNum = HeroManager.GetAllPassiveSkillIds(heroConFigData,breakId,upStarId)
 | 
						|
        this.talentProgress.text = #openlists - compoundOpenNum .."/"..#heroConFigData.OpenPassiveSkillRules - compoundNum
 | 
						|
    end
 | 
						|
    return allAddProVal
 | 
						|
end
 | 
						|
--界面打开时调用(用于子类重写)
 | 
						|
function XiaoyaoGetItemPopup:OnOpen()
 | 
						|
    this.titleText = "东海寻仙"
 | 
						|
end
 | 
						|
function XiaoyaoGetItemPopup:OnShow()
 | 
						|
    curIndex = XiaoYaoManager.GetHeroIndex < 1 and 1 or XiaoYaoManager.GetHeroIndex
 | 
						|
    heroData = XiaoYaoManager.GetHeroDatas()
 | 
						|
    if not heroData or #heroData < 1 then
 | 
						|
        this:ClosePanel()
 | 
						|
        return
 | 
						|
    end
 | 
						|
 | 
						|
    curHeroData = heroData[curIndex]
 | 
						|
 | 
						|
    for i = 1 , #pointPrefabs do
 | 
						|
        pointPrefabs[i].gameObject:SetActive(false)
 | 
						|
    end
 | 
						|
    for i = 1 , #heroData do
 | 
						|
        if not pointPrefabs[i] then
 | 
						|
            pointPrefabs[i] = newObjToParent(this.point,this.pointGrid)
 | 
						|
        end
 | 
						|
        pointPrefabs[i].gameObject:SetActive(true)
 | 
						|
    end
 | 
						|
 | 
						|
    this:SetSelectHero(curHeroData)
 | 
						|
end
 | 
						|
 | 
						|
function this:TimerDown()
 | 
						|
    if this.timer then
 | 
						|
        this.timer:Stop()
 | 
						|
        this.timer = nil
 | 
						|
    end
 | 
						|
    local timeDown = curHeroData.remainTime - PlayerManager.serverTime
 | 
						|
    local temp = 0
 | 
						|
    this.remainTimes.text = Language[10023]..TimeToHMS(timeDown)
 | 
						|
    this.timer = Timer.New(function()
 | 
						|
        if timeDown < 1 then
 | 
						|
           XiaoYaoManager.GetHeroIndex = 0
 | 
						|
           this:OnShow()         
 | 
						|
           return 
 | 
						|
        end
 | 
						|
        for i = 1 , #heroData do
 | 
						|
            temp = heroData[i].remainTime - PlayerManager.serverTime
 | 
						|
            if temp < 1 then
 | 
						|
                this:OnShow()
 | 
						|
                return 
 | 
						|
            end
 | 
						|
        end
 | 
						|
        timeDown = timeDown - 1
 | 
						|
        this.remainTimes.text = Language[10023]..TimeToHMS(timeDown)
 | 
						|
    end, 1, -1, true)
 | 
						|
    this.timer:Start()
 | 
						|
end
 | 
						|
 | 
						|
function this:SetSelectHero(curHeroData)
 | 
						|
    --LogGreen("curHeroData.goodsId  :"..curHeroData.goodsId)
 | 
						|
    local heroSId = FreeTravelStore[curHeroData.goodsId].Goods[1]  
 | 
						|
    heroSData = itemConfig[heroSId]
 | 
						|
    itemView:OnOpen(false, { heroSId, 1 }, 0.97,false,false,false,self.sortingOrder)
 | 
						|
    -- local heroStar = heroSData.Star
 | 
						|
    -- allSkillDatas = HeroManager.GetCurHeroSidAndCurStarAllSkillDatas(heroSId,heroStar)   
 | 
						|
    
 | 
						|
    this.selectKuang.transform:SetParent(pointPrefabs[curIndex].transform)
 | 
						|
    this.selectKuang:GetComponent("RectTransform").localPosition = Vector3.zero
 | 
						|
    this.ShowHeroBuyInfo(curHeroData)
 | 
						|
    this:TimerDown()
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
function this.ShowHeroBuyInfo(_heroSConfigData)
 | 
						|
    local heroBuyInfo = FreeTravelStore[curHeroData.goodsId]
 | 
						|
    costId = heroBuyInfo.Cost[1]
 | 
						|
    costNum = heroBuyInfo.Cost[2]
 | 
						|
    this.costIcon.sprite = this.spLoader:LoadSprite(artResourceConfig[itemConfig[costId].ResourceID].Name) 
 | 
						|
    if BagManager.GetItemCountById(costId) < costNum then
 | 
						|
        this.costNum.text = "<color=#FF0000>" .. costNum .. "</color>"
 | 
						|
    else
 | 
						|
        this.costNum.text = "<color=#C8AD83>" .. costNum .. "</color>"
 | 
						|
    end
 | 
						|
    this.zhekouImage.sprite = this.spLoader:LoadSprite(heroBuyInfo.Discount)
 | 
						|
end
 | 
						|
 | 
						|
--界面关闭时调用(用于子类重写)
 | 
						|
function XiaoyaoGetItemPopup:OnClose()
 | 
						|
    Game.GlobalEvent:DispatchEvent(GameEvent.XiaoYao.RefreshEventShow)
 | 
						|
    if  this.testLiveGO then
 | 
						|
        poolManager:UnLoadLive(this.testLiveGO.name, this.testLiveGO)
 | 
						|
        this.testLiveGO = nil
 | 
						|
    end
 | 
						|
    if this.timer then
 | 
						|
        this.timer:Stop()
 | 
						|
        this.timer = nil
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
--界面销毁时调用(用于子类重写)
 | 
						|
function XiaoyaoGetItemPopup:OnDestroy()
 | 
						|
    this.spLoader:Destroy()
 | 
						|
    if  this.testLiveGO then
 | 
						|
        poolManager:UnLoadLive(this.testLiveGO.name, this.testLiveGO)
 | 
						|
        this.testLiveGO = nil
 | 
						|
    end
 | 
						|
    if this.timer then
 | 
						|
        this.timer:Stop()
 | 
						|
        this.timer = nil
 | 
						|
    end
 | 
						|
    pointPrefabs = {}
 | 
						|
    SubUIManager.Close(itemView)
 | 
						|
    itemView=nil
 | 
						|
end
 | 
						|
 | 
						|
return XiaoyaoGetItemPopup |