241 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			241 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Lua
		
	
local JumpConfig=ConfigManager.GetConfig(ConfigName.JumpConfig)
 | 
						|
local ItemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig)
 | 
						|
local RechargeCommodityConfig=ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
 | 
						|
JumpViewNew = {}
 | 
						|
function JumpViewNew:New(gameObject)
 | 
						|
    local b = {}
 | 
						|
    b.gameObject = gameObject
 | 
						|
    b.transform = gameObject.transform
 | 
						|
    setmetatable(b,{ __index = JumpViewNew })
 | 
						|
    return b
 | 
						|
end
 | 
						|
--初始化组件(用于子类重写)
 | 
						|
function JumpViewNew:InitComponent()
 | 
						|
    self.spLoader = SpriteLoader.New()
 | 
						|
    local tran = Util.GetGameObject(self.gameObject, "content")
 | 
						|
    self.info = Util.GetGameObject(tran, "info"):GetComponent("Text")
 | 
						|
    self.btnSure = Util.GetGameObject(tran, "btnSure")
 | 
						|
    self.btnSureIma = self.btnSure:GetComponent("Image")
 | 
						|
    self.btnSureText = Util.GetGameObject(tran, "btnSure/Text"):GetComponent("Text")
 | 
						|
 | 
						|
    self.desc = Util.GetGameObject(tran, "grid/Text"):GetComponent("Text")
 | 
						|
    self.costIconPos = Util.GetGameObject(tran, "grid/itemPos")
 | 
						|
    self.itemView = SubUIManager.Open(SubUIConfig.ItemView,self.costIconPos.transform)
 | 
						|
    self.itemView.transform:SetAsFirstSibling()
 | 
						|
end
 | 
						|
 | 
						|
--绑定事件(用于子类重写)
 | 
						|
function JumpViewNew:BindEvent()
 | 
						|
    Util.AddOnceClick(self.btnSure, function()
 | 
						|
        self:GoToJumpData()
 | 
						|
    end)
 | 
						|
end
 | 
						|
 | 
						|
--添加事件监听(用于子类重写)
 | 
						|
function JumpViewNew:AddListener()
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
--移除事件监听(用于子类重写)
 | 
						|
function JumpViewNew:RemoveListener()
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
--界面打开时调用(用于子类重写)
 | 
						|
function JumpViewNew:OnOpen(jumpId,heroConfig,parent)
 | 
						|
    self.parent = parent
 | 
						|
    self.jumpSData=JumpConfig[jumpId]
 | 
						|
    self.heroId = heroConfig.Id
 | 
						|
    self.needChipId = heroConfig.PiecesId
 | 
						|
    self.needChipNum = ItemConfig[self.needChipId].UsePerCount
 | 
						|
    self.btnSureIma.sprite = self.parent.spLoader:LoadSprite("r_hero_button_002")
 | 
						|
    local color = "EBCC97"
 | 
						|
    if self.jumpSData then
 | 
						|
        self.info.text=GetLanguageStrById(self.jumpSData.Title)
 | 
						|
        self.btnSureText.text = Language[10556]      
 | 
						|
    end
 | 
						|
    if self.jumpSData.Type == JumpType.firstRecharge then
 | 
						|
        self.costIconPos.gameObject:SetActive(false)
 | 
						|
        self.desc.text = "首次充值可直接获得孙悟空"
 | 
						|
    elseif self.jumpSData.Type == JumpType.ZhiZunJiangShi then
 | 
						|
        self.costIconPos.gameObject:SetActive(false)
 | 
						|
        self.desc.text = "完成至尊降世可直接获得玉皇大帝"
 | 
						|
    elseif self.jumpSData.Type == JumpType.Lottery  then
 | 
						|
        self.costIconPos.gameObject:SetActive(false)
 | 
						|
        self.desc.text = "设为心愿神将会有更高概率"
 | 
						|
    elseif self.jumpSData.Type == JumpType.Lottery  then
 | 
						|
        self.costIconPos.gameObject:SetActive(false)
 | 
						|
        self.desc.text = "设为心愿神将会有更高概率"
 | 
						|
    elseif self.jumpSData.Type == JumpType.ElementDrawCard  then
 | 
						|
        self.info.text = GetLanguageStrById(self.jumpSData.Title)
 | 
						|
        self.costIconPos.gameObject:SetActive(false)
 | 
						|
        self.desc.text = "抽取时额外赠送元神玉"
 | 
						|
    elseif self.jumpSData.Type == JumpType.ZhuTiHuoDong  then
 | 
						|
        self.costIconPos.gameObject:SetActive(false)
 | 
						|
        self.desc.text = "每期轮替可召唤的神将"
 | 
						|
    elseif self.jumpSData.Type == JumpType.Store then
 | 
						|
        if self.jumpSData.Skipfactor[1] == SHOP_TYPE.ENDLESS_SHOP then
 | 
						|
            self.info.text = self.info.text.."(需刷新)"
 | 
						|
        end
 | 
						|
        local storeTypeConfig = ConfigManager.GetConfigDataByKey(ConfigName.StoreTypeConfig,"StoreType",self.jumpSData.Skipfactor[1])
 | 
						|
        self.shopType = storeTypeConfig.Id
 | 
						|
        local configs = ConfigManager.GetAllConfigsDataByKey(ConfigName.StoreConfig,"StoreId",storeTypeConfig.Id)
 | 
						|
        local getChipNum = 1
 | 
						|
        local costItemId = 0
 | 
						|
        local costItemNum = 0
 | 
						|
        local rate = 0
 | 
						|
        for i = 1,#configs do
 | 
						|
            if self.needChipId == configs[i].Goods[1][1] then
 | 
						|
                self.ShopId = configs[i].Id
 | 
						|
                getChipNum = configs[i].Goods[1][2]
 | 
						|
                costItemId = configs[i].Cost[1][1]
 | 
						|
                local a,b,c,d = configs[i].Cost[2][1],configs[i].Cost[2][2],configs[i].Cost[2][3],configs[i].Cost[2][4]
 | 
						|
                local x = 1
 | 
						|
                costItemNum = a*x^3+b*x^2+c*x+d
 | 
						|
                rate = configs[i].DiscountDegree
 | 
						|
                break
 | 
						|
            end
 | 
						|
        end
 | 
						|
        local needCostNum
 | 
						|
        if rate ~= 0 then
 | 
						|
            needCostNum = math.ceil(self.needChipNum/getChipNum)*costItemNum*rate/10
 | 
						|
        else
 | 
						|
            needCostNum = math.ceil(self.needChipNum/getChipNum)*costItemNum
 | 
						|
        end
 | 
						|
        local itemcount =  BagManager.GetItemCountById(costItemId)       
 | 
						|
        self.costIconPos.gameObject:SetActive(true)
 | 
						|
        self.itemView:OnOpen(false, {costItemId,0}, 0.4, false, false, false, self.parent.sortingOrder)
 | 
						|
        if itemcount >= needCostNum then
 | 
						|
            color = "12C10B"
 | 
						|
            self.btnSureIma.sprite = self.parent.spLoader:LoadSprite("r_hero_button_001")
 | 
						|
        end
 | 
						|
        self.desc.text = string.format("<color=#%s>%s:%s/%s</color>",color, ItemConfig[costItemId].Name,itemcount,needCostNum)
 | 
						|
    elseif self.jumpSData.Type == JumpType.XingChenShangDian then
 | 
						|
        local storeTypeConfig = ConfigManager.GetConfigDataByKey(ConfigName.StoreTypeConfig,"StoreType",70)
 | 
						|
        self.shopType = 70
 | 
						|
        local configs = ConfigManager.GetAllConfigsDataByKey(ConfigName.StoreConfig,"StoreId",storeTypeConfig.Id)
 | 
						|
        local getChipNum = 1
 | 
						|
        local costItemId = 0
 | 
						|
        local costItemNum = 0
 | 
						|
        for i = 1,#configs do
 | 
						|
            if self.needChipId == configs[i].Goods[1][1] then
 | 
						|
                self.ShopId = configs[i].Id
 | 
						|
                getChipNum = configs[i].Goods[1][2]
 | 
						|
                costItemId = configs[i].Cost[1][1]
 | 
						|
                local a,b,c,d = configs[i].Cost[2][1],configs[i].Cost[2][2],configs[i].Cost[2][3],configs[i].Cost[2][4]
 | 
						|
                local x = 1
 | 
						|
                costItemNum = a*x^3+b*x^2+c*x+d
 | 
						|
                break
 | 
						|
            end
 | 
						|
        end
 | 
						|
        local needCostNum = math.ceil(self.needChipNum/getChipNum)*costItemNum
 | 
						|
        local itemcount =  BagManager.GetItemCountById(costItemId)
 | 
						|
        self.costIconPos.gameObject:SetActive(true)
 | 
						|
        self.itemView:OnOpen(false, {costItemId,0}, 0.4, false, false, false, self.parent.sortingOrder)
 | 
						|
        if itemcount >= needCostNum then
 | 
						|
            color = "12C10B"
 | 
						|
            self.btnSureIma.sprite = self.parent.spLoader:LoadSprite("r_hero_button_001")
 | 
						|
        end
 | 
						|
        self.desc.text = string.format("<color=#%s>%s:%s/%s</color>",color, ItemConfig[costItemId].Name,itemcount,needCostNum)
 | 
						|
    elseif self.jumpSData.Type == 30003 then
 | 
						|
        self.btnSureText.text = "合成"    
 | 
						|
        self.itemView:OnOpen(false, {self.needChipId,0}, 0.4, false, false, false, self.parent.sortingOrder)
 | 
						|
        local itemcount =  BagManager.GetItemCountById(self.needChipId)
 | 
						|
        if itemcount >= self.needChipNum then
 | 
						|
            color = "12C10B"
 | 
						|
            self.btnSureIma.sprite = self.parent.spLoader:LoadSprite("r_hero_button_001")
 | 
						|
        end
 | 
						|
        self.desc.text = string.format("<color=#%s>%s:%s/%s</color>",color,ItemConfig[self.needChipId].Name,itemcount,self.needChipNum)
 | 
						|
    elseif self.jumpSData.Type == JumpType.recharge then   
 | 
						|
        self.costIconPos.gameObject:SetActive(false)
 | 
						|
        self.desc.text = string.format("快速提升%s星级",heroConfig.ReadingName) 
 | 
						|
    elseif self.jumpSData.Type == 40 then      
 | 
						|
        self.costIconPos.gameObject:SetActive(false)
 | 
						|
        self.desc.text = "助力玉帝升星"
 | 
						|
    end
 | 
						|
end
 | 
						|
function JumpViewNew:GoToJumpData()
 | 
						|
    if self.jumpSData.Type == 30003 then
 | 
						|
        local itemcount = BagManager.GetItemCountById(self.needChipId)
 | 
						|
        if itemcount >= self.needChipNum then
 | 
						|
            local gameSetting = ConfigManager.GetConfigData(ConfigName.GameSetting, 1)
 | 
						|
            local endHeroNum=gameSetting.HeroNumlimit-LengthOfTable(HeroManager.GetAllHeroDatas())
 | 
						|
            local sum = math.floor(itemcount / self.needChipNum) 
 | 
						|
            if sum > 1 then
 | 
						|
                local _itemData = BagManager.bagDatas[self.needChipId]
 | 
						|
                if endHeroNum > 0 then
 | 
						|
                    UIManager.OpenPanel(UIName.BagResolveAnCompoundPanel, 3, _itemData, function()
 | 
						|
                        self.parent:OnShow()
 | 
						|
                    end)
 | 
						|
                else
 | 
						|
                    PopupTipPanel.ShowTip(Language[12157])
 | 
						|
                end
 | 
						|
            else
 | 
						|
                -- body
 | 
						|
                local compoundNum = 1
 | 
						|
                local _itemData = BagManager.bagDatas[self.needChipId]
 | 
						|
                local item={}
 | 
						|
                item.itemId= _itemData.id
 | 
						|
                item.itemNum=compoundNum*self.needChipNum
 | 
						|
                if endHeroNum > 0 then
 | 
						|
                    NetManager.HeroComposeRequest(item,function (drop)
 | 
						|
                        UIManager.OpenPanel(UIName.RewardItemPopup,drop,1,function()
 | 
						|
                            self.parent:OnShow()
 | 
						|
                        end)                        
 | 
						|
                    end)
 | 
						|
                    if compoundNum<=0 then
 | 
						|
                        PopupTipPanel.ShowTip(Language[10183])
 | 
						|
                    end
 | 
						|
                else
 | 
						|
                    PopupTipPanel.ShowTip(Language[12157])
 | 
						|
                end
 | 
						|
            end
 | 
						|
        else
 | 
						|
            PopupTipPanel.ShowTip("碎片不足!")
 | 
						|
        end
 | 
						|
    else
 | 
						|
        if self.jumpSData.Type == JumpType.Store then
 | 
						|
            ShopManager.SetSelectIndex(self.jumpSData.Skipfactor[1],{self.ShopId})
 | 
						|
        elseif self.jumpSData.Type == JumpType.XingChenShangDian then
 | 
						|
            ShopManager.SetSelectIndex(self.shopType,{self.ShopId})
 | 
						|
        elseif self.jumpSData.Type == JumpType.recharge then
 | 
						|
            local actConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.ActivityGroups,"PageType",JumpType.recharge,"Sort",self.jumpSData.Skipfactor[1])
 | 
						|
            local list = OperatingManager.GetGiftGoodsInfoList(actConfig.ShopData[1][2])
 | 
						|
            local goodIdList = {}
 | 
						|
            for i = 1,#list do               
 | 
						|
                local rechargeConfig = RechargeCommodityConfig[list[i].goodsId]
 | 
						|
                if rechargeConfig.Limit == 0 or rechargeConfig.Limit - list[i].buyTimes > 0 then
 | 
						|
                    if rechargeConfig.ShowType == actConfig.ShopData[1][3] then
 | 
						|
                        for j = 1,#rechargeConfig.RewardShow do
 | 
						|
                            if rechargeConfig.RewardShow[j][1] == self.heroId or rechargeConfig.RewardShow[j][1] == self.needChipId then
 | 
						|
                                table.insert(goodIdList,rechargeConfig.Id)
 | 
						|
                                break
 | 
						|
                            end
 | 
						|
                        end
 | 
						|
                    end
 | 
						|
                end               
 | 
						|
            end 
 | 
						|
            DynamicActivityManager.SetSelectIndex(DataType.Direct,goodIdList)     
 | 
						|
        elseif (self.jumpSData.type ~= JumpType.firstRecharge or self.jumpSData.type ~= JumpType.ZhiZunJiangShi) then
 | 
						|
            PlayerManager.RewardItemSingleShowPopupIsRoleUpStarLayout2 = false
 | 
						|
        end
 | 
						|
        JumpManager.GoJump(self.jumpSData.Id,function(isOpen)
 | 
						|
            if isOpen then
 | 
						|
                self.parent:ClosePanel()
 | 
						|
            end          
 | 
						|
        end)       
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
--界面关闭时调用(用于子类重写)
 | 
						|
function JumpViewNew:OnClose()
 | 
						|
    self.spLoader:Destroy()
 | 
						|
end
 | 
						|
 | 
						|
--界面销毁时调用(用于子类重写)
 | 
						|
function JumpViewNew:OnDestroy()
 | 
						|
    SubUIManager.Close(self.itemView)
 | 
						|
    self.itemView = nil
 | 
						|
end
 | 
						|
 | 
						|
return JumpViewNew |