require("Base/BasePanel") IncarnationPanel = Inherit(BasePanel) local tabs = {} local tabsImg = {"r_hero_huo 1_zh", "r_hero_feng 1_zh", "r_hero_shui 1_zh", "r_hero_dadi 1_zh"} local proId = 1 function IncarnationPanel:InitComponent() self.spLoader = SpriteLoader.New() for i = 1, 4 do tabs[i] = Util.GetGameObject(self.transform, "bg/Tabs/grid/Btn" .. i) if tabsImg[i] then Util.GetGameObject(tabs[i], "Image"):GetComponent("Image").sprite = self.spLoader:LoadSprite(tabsImg[i]) end end self.selectBtn = Util.GetGameObject(self.gameObject,"bg/Tabs/selectBtn") self.btnBack = Util.GetGameObject(self.gameObject,"bg/btnBack") self.incarnationPowerBtn = Util.GetGameObject(self.gameObject,"bg/incarnationPowerBtn") self.addBtn = Util.GetGameObject(self.gameObject,"bg/addBtn") self.helpBtn = Util.GetGameObject(self.gameObject,"bg/helpBtn") self.helpPos = self.helpBtn:GetComponent("RectTransform").localPosition self.fetterItem = Util.GetGameObject(self.gameObject,"fetterItem") local grid = Util.GetGameObject(self.gameObject,"bg/fetterGrid") local v21 = grid.transform.rect self.scroll = SubUIManager.Open(SubUIConfig.ScrollCycleView,grid.transform,self.fetterItem,nil,Vector2.New(v21.width, v21.height), 1, 1, Vector2.New(0,25)) self.itemPreList = {} self.upLayoutItemList = {} self.upLayout = Util.GetGameObject(self.gameObject,"bg/upLayout") for i = 1,3 do self.upLayoutItemList[i] = {} self.upLayoutItemList[i].go = Util.GetGameObject(self.upLayout,"card"..i) self.upLayoutItemList[i].cardBtn = Util.GetGameObject(self.upLayoutItemList[i].go,"cardPre/card") self.upLayoutItemList[i].btn = Util.GetGameObject(self.upLayoutItemList[i].go,"unLoadBtn") self.upLayoutItemList[i].pos = Util.GetGameObject(self.upLayoutItemList[i].go,"cardPre") end self.empty = Util.GetGameObject(self.gameObject,"bg/NoneImage") self.cardList = {} end function IncarnationPanel:BindEvent() for i = 1,4 do Util.AddClick(tabs[i], function() if i == proId then return end proId = i self:SetSelectBtn() self:RefreshList(false,true) end) end for i = 1,3 do Util.AddClick(self.upLayoutItemList[i].btn, function() if self.upLayoutData[i] and self.upLayoutData[i].id then NetManager.UpOrDownTransformationRequest(self.upLayoutData[i].id,i,1,function() self.upLayoutData[i] = nil self.upLayoutItemList[i].btn.gameObject:SetActive(false) self:RefreshSingleCardPre(self.upLayoutItemList[i].pos,nil) self:RefreshList(true,true) PopupTipPanel.ShowTip("成功卸下身外化身!") end) end end) end for i = 1,3 do Util.AddClick(self.upLayoutItemList[i].cardBtn, function() if self.upLayoutData[i] and self.upLayoutData[i].id then local pos = self:FindDatasIndexById(self.upLayoutData[i].id) if pos > 0 then self.scroll:SetData(pos) end end end) end Util.AddClick(self.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.Incarnation,self.helpPos.x, self.helpPos.y) end) Util.AddClick(self.btnBack, function() self:ClosePanel() end) Util.AddClick(self.incarnationPowerBtn, function() local data = {} local singData = {} singData.title = "当前化身收集度" singData.pro = {string.format("%s/%s",IncarnationManager.GetActiveNum(),LengthOfTable(IncarnationManager.itemDataList))} singData.tip = "" table.insert(data,singData) local singData = {} singData.title = "化身之力加成" singData.pro = IncarnationManager.GetproDesLst(IncarnationManager.GetIncarnationPower(),"00FF00") singData.tip = "" table.insert(data,singData) local singData = {} singData.title = "" singData.pro = {} singData.tip = string.format("说明:每获得一种化身,全体神将获得如下属性加成:%s",IncarnationManager.SingleIncarnationProDes) table.insert(data,singData) -- for i = 1 ,#data do -- LogGreen("data[i]:"..data[i].title.." #pro:"..#data[i].pro) -- for k,v in ipairs(data[i].pro) do -- LogGreen("data[i]:"..v) -- end -- end UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.IncarnationDes,data) end) Util.AddClick(self.addBtn, function() local data = {} local singData = {} singData.title = "当前化身总加成" singData.pro = IncarnationManager.GetproDesLst(IncarnationManager.GetIncarnationTotalPro(),"00FF00") singData.tip = "总加成包括化身之力提供的属性" table.insert(data,singData) -- for i = 1 ,#data do -- LogGreen("data[i]:"..data[i].title.." #pro:"..#data[i].pro) -- for k,v in ipairs(data[i].pro) do -- LogGreen("data[i]:"..v) -- end -- end UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.IncarnationDes,data) end) end function IncarnationPanel:FindDatasIndexById(id) for i = 1 ,#self.datas do if #self.datas[i].id == id then return i end end return -1 end function IncarnationPanel:SetSelectBtn() self.selectBtn.transform:SetParent(tabs[proId].transform) self.selectBtn:GetComponent("RectTransform").localPosition = Vector3.zero end function IncarnationPanel:AddListener() end function IncarnationPanel:RemoveListener() end function IncarnationPanel:OnOpen() proId = 1 end function IncarnationPanel:OnShow() self:RefreshUpList() self:SetSelectBtn() self:RefreshList(false,false) end function IncarnationPanel:RefreshUpList() self.upLayoutData = IncarnationManager.GetIncarnationData1() for i = 1,3 do self.upLayoutItemList[i].pos.gameObject:SetActive(false) self.upLayoutItemList[i].btn.gameObject:SetActive(false) end for k,v in pairs(self.upLayoutData) do self:RefreshSingleCardPre(self.upLayoutItemList[k].pos,v) self.upLayoutItemList[k].btn.gameObject:SetActive(true) end end function IncarnationPanel:RefreshSingleCardPre(cardPre,data) if not self.cardList[cardPre] then self.cardList[cardPre] = {} self.cardList[cardPre].bg = Util.GetGameObject(cardPre,"card"):GetComponent("Image") self.cardList[cardPre].icon = Util.GetGameObject(cardPre,"card/icon"):GetComponent("Image") self.cardList[cardPre].cardBg = Util.GetGameObject(cardPre,"card/bg"):GetComponent("Image") self.cardList[cardPre].proImage = Util.GetGameObject(cardPre,"card/proImage"):GetComponent("Image") self.cardList[cardPre].getBtn = Util.GetGameObject(cardPre,"card/getBtn") end if data then cardPre.gameObject:SetActive(true) if data.state >= 0 then self.cardList[cardPre].getBtn.gameObject:SetActive(false) else self.cardList[cardPre].getBtn.gameObject:SetActive(true) end self.cardList[cardPre].bg.sprite = self.spLoader:LoadSprite(GetTailsmanCardStarImage[data.quality]) self.cardList[cardPre].icon.sprite = self.spLoader:LoadSprite(GetResourcePath(data.icon)) self.cardList[cardPre].proImage.sprite = self.spLoader:LoadSprite(GetProStrImageByProNum(data.property)) self.cardList[cardPre].cardBg.sprite = self.spLoader:LoadSprite(GetTailsmanBgStarImage[data.quality]) Util.AddOnceClick(self.cardList[cardPre].getBtn,function() JumpManager.GoJump(data.jump) end) else cardPre.gameObject:SetActive(false) end end function IncarnationPanel:RefreshList(istop,isAnim) self.datas = IncarnationManager.GetItemDataListByPro(proId) self.scroll:ForeachItemGO(function(index,go) go.gameObject:SetActive(false) end) if not self.datas or #self.datas < 1 then self.empty.gameObject:SetActive(true) self.scroll.gameObject:SetActive(false) else self.empty.gameObject:SetActive(false) self.scroll.gameObject:SetActive(true) self.scroll:SetData(self.datas,function(index,go) self:SetSingleData(go,self.datas[index],index) end,istop,isAnim) end end function IncarnationPanel:SetSingleData(go,data,index) if not self.itemPreList[go] then self.itemPreList[go] = {} self.itemPreList[go].preList = {} self.itemPreList[go].obj = Util.GetGameObject(go,"bg") self.itemPreList[go].bg = self.itemPreList[go].obj:GetComponent("Image") self.itemPreList[go].cardPre = Util.GetGameObject(self.itemPreList[go].obj,"cardPre") self.itemPreList[go].nameText = Util.GetGameObject(self.itemPreList[go].obj,"nameDi/nameText"):GetComponent("Text") self.itemPreList[go].skillLayout = Util.GetGameObject(self.itemPreList[go].obj,"skillLayout") self.itemPreList[go].proGrid = Util.GetGameObject(self.itemPreList[go].skillLayout,"proScrolllRect/proScroll") self.itemPreList[go].pro = Util.GetGameObject(self.itemPreList[go].skillLayout,"pro") self.itemPreList[go].red = Util.GetGameObject(self.itemPreList[go].obj,"red") self.itemPreList[go].unGetBtn = Util.GetGameObject(self.itemPreList[go].obj,"unGetBtn") self.itemPreList[go].activableBtn = Util.GetGameObject(self.itemPreList[go].obj,"activableBtn") self.itemPreList[go].incarnationBtn = Util.GetGameObject(self.itemPreList[go].obj,"incarnationBtn") self.itemPreList[go].incarnationningBtn = Util.GetGameObject(self.itemPreList[go].obj,"incarnationningBtn") end self.itemPreList[go].unGetBtn.gameObject:SetActive(false) self.itemPreList[go].activableBtn.gameObject:SetActive(false) self.itemPreList[go].incarnationBtn.gameObject:SetActive(false) self.itemPreList[go].incarnationningBtn.gameObject:SetActive(false) self.itemPreList[go].data = data if not data then go.gameObject:SetActive(false) return end go.gameObject:SetActive(true) self.itemPreList[go].bg.sprite = self.spLoader:LoadSprite(GetTailsmanSoulDiImage[data.quality]) self.itemPreList[go].nameText.text = data.name self.itemPreList[go].red.gameObject:SetActive(data.state == 0) self:RefreshSingleCardPre(self.itemPreList[go].cardPre,data) self:SetProList(data.proDesList,self.itemPreList[go].preList,self.itemPreList[go].proGrid,self.itemPreList[go].pro.gameObject) if data.state == -1 then self.itemPreList[go].unGetBtn.gameObject:SetActive(true) elseif data.state == 0 then self.itemPreList[go].activableBtn.gameObject:SetActive(true) elseif data.state == 1 then self.itemPreList[go].incarnationBtn.gameObject:SetActive(true) elseif data.state == 2 then self.itemPreList[go].incarnationningBtn.gameObject:SetActive(true) end Util.AddOnceClick(self.itemPreList[go].unGetBtn,function() end) Util.AddOnceClick(self.itemPreList[go].activableBtn,function() NetManager.UpOrDownTransformationRequest(data.id,0,1,function() data.state = 1 self:SetSingleData(go,data,index) PopupTipPanel.ShowTip(string.format("成功激活%s",data.name)) CheckRedPointStatus(data.property + 438001) end) end) Util.AddOnceClick(self.itemPreList[go].incarnationBtn,function() local pos = 0 for i = 1,3 do if self.upLayoutData[i] and self.upLayoutData[i].id then else pos = i break end end if pos > 0 then NetManager.UpOrDownTransformationRequest(data.id,pos,2,function() data.state = 2 data.pos = pos self:SetSingleData(go,data,index) self.upLayoutData[pos] = data self:RefreshSingleCardPre(self.upLayoutItemList[pos].pos,data) self.upLayoutItemList[pos].btn.gameObject:SetActive(true) PopupTipPanel.ShowTip("化身成功!") end) else PopupTipPanel.ShowTip("身外化身位置已达上限,请卸下需要替换的化身!") end end) Util.AddOnceClick(self.itemPreList[go].incarnationningBtn,function() NetManager.UpOrDownTransformationRequest(data.id,data.pos,1,function() local oldPos = data.pos data.state = 1 data.pos = 0 self:SetSingleData(go,data,index) self.upLayoutData[oldPos] = nil self:RefreshSingleCardPre(self.upLayoutItemList[oldPos].pos,nil) self.upLayoutItemList[oldPos].btn.gameObject:SetActive(false) PopupTipPanel.ShowTip("成功卸下身外化身!") end) end) end function IncarnationPanel:SetProList(data,preList,grid,pre) for i = 1,math.max(#data,#preList) do if not data[i] then preList[i].go.gameObject:SetActive(false) else if not preList[i] then preList[i] = {} preList[i].go = newObjToParent(pre,grid) preList[i].goText = preList[i].go:GetComponent("Text") end preList[i].go.gameObject:SetActive(true) preList[i].goText.text = data[i] end end ForceRebuildLayout(grid.transform) end function IncarnationPanel:OnSortingOrderChange() end function IncarnationPanel:OnClose() end function IncarnationPanel:OnDestroy() self.spLoader:Destroy() self.upLayoutItemList = {} self.itemPreList = {} self.cardList = {} end return IncarnationPanel