require("Base/BasePanel") IncarnationPanel = Inherit(BasePanel) local heroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig) local artResourcesConfig = ConfigManager.GetConfig(ConfigName.ArtResourcesConfig) local specialConfig = ConfigManager.GetConfigData(ConfigName.SpecialConfig, 155).Value local xiuxian = ConfigManager.GetConfig(ConfigName.XiuXianConfig) local cardPosition = ConfigManager.GetConfig(ConfigName.ChangingCardPosition) local curLevel = PracticeManager .PracticeLevel --ConfigManager.GetConfigData(ConfigName.ChangingForce,IncarnationManager.incarnationForceLv).Level local limits = string.split(specialConfig, "#") local tabs = {} local tabsRedpoints = {} 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 --local curIndex=1 --local allPos={1321,327,-330} function IncarnationPanel:InitComponent() self.spLoader = SpriteLoader.New() for i = 1, 5 do tabs[i] = Util.GetGameObject(self.transform, "bg/Tabs/grid/Btn" .. i) tabsRedpoints[i] = Util.GetGameObject(tabs[i], "redpoint") 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.btn_left = Util.GetGameObject(self.gameObject, "bg/left") self.btn_left:SetActive(false) self.btn_right = Util.GetGameObject(self.gameObject, "bg/right") self.btn_right:SetActive(false) self.incarnationPowerBtn = Util.GetGameObject(self.gameObject, "bg/incarnationPowerBtn") self.incarnationPowerBtn:SetActive(false) self.powerBtnRedPoint = Util.GetGameObject(self.gameObject, "bg/incarnationPowerBtn/redPoint") 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, 15)) self.itemPreList = {} self.upLayoutItemList = {} self.upLayout = Util.GetGameObject(self.gameObject, "bg/upScroll/upLayout") -- self.upLayout:GetComponent("RectTransform").anchoredPosition=Vector2.New(allPos[curIndex],-221) for i = 1, 4 do self.upLayoutItemList[i] = {} self.upLayoutItemList[i].go = Util.GetGameObject(self.upLayout, "card" .. i) self.upLayoutItemList[i].btn = Util.GetGameObject(self.upLayoutItemList[i].go, "unLoadBtn") self.upLayoutItemList[i].pos = Util.GetGameObject(self.upLayoutItemList[i].go, "cardPre") --self.upLayoutItemList[i].posImg = Util.GetGameObject(self.upLayoutItemList[i].go,"posText"):GetComponent("Image") --self.upLayoutItemList[i].posImg.sprite=self.spLoader:LoadSprite("r_fxgz_shuzi_"..i) self.upLayoutItemList[i].getBtn = Util.GetGameObject(self.upLayoutItemList[i].pos, "getBtn") self.upLayoutItemList[i].lv = Util.GetGameObject(self.upLayoutItemList[i].go, "lvText"):GetComponent("Text") self.upLayoutItemList[i].desTxt = Util.GetGameObject(self.upLayoutItemList[i].go, "desText"):GetComponent("Text") self.upLayoutItemList[i].desTxt.text = cardPosition[i].Desc end self.empty = Util.GetGameObject(self.gameObject, "bg/NoneImage") self.cardList = {} self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform) end function IncarnationPanel:BindEvent() for i = 1, 5 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, 4 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, false, i) self:RefreshList(true, true) PopupTipPanel.ShowTip(Language[11619]) end) end end) end for i = 1, 4 do Util.AddClick(self.upLayoutItemList[i].getBtn, function() if self.upLayoutData[i] and self.upLayoutData[i].id then local pos = self:FindDatasIndexById(self.upLayoutData[i].id) if proId ~= self.upLayoutData[i].property then proId = self.upLayoutData[i].property self:SetSelectBtn() self:RefreshList(false, true) end if pos > 0 then self.scroll:SetIndex(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.btn_left, function() -- curIndex=curIndex-1 -- if curIndex==1 then -- self.btn_left:SetActive(false) -- else -- self.btn_right:SetActive(true) -- end -- self.upLayout:GetComponent("RectTransform").anchoredPosition=Vector2.New(allPos[curIndex],-221) end) Util.AddClick(self.btn_right, function() -- curIndex=curIndex+1 -- if curIndex==3 then -- self.btn_right:SetActive(false) -- else -- self.btn_left:SetActive(true) -- end -- self.upLayout:GetComponent("RectTransform").anchoredPosition=Vector2.New(allPos[curIndex],-221) end) Util.AddClick(self.incarnationPowerBtn, function() UIManager.OpenPanel(UIName.IncarnationForcePanel) end) Util.AddClick(self.addBtn, function() local data = {} local singData = {} singData.title = Language[11620] singData.pro = IncarnationManager.GetproDesLstWithChengshen(IncarnationManager.GetIncarnationTotalWithOutChengshenPro(), "9c794f") singData.tip = "" --Language[11621] table.insert(data, singData) UIManager.OpenPanel(UIName.GeneralBigPopup, GENERAL_POPUP_TYPE.IncarnationDes, data) end) BindRedPointObject(RedPointType.incarnation_people, tabsRedpoints[1].gameObject) BindRedPointObject(RedPointType.incarnation_buddish, tabsRedpoints[2].gameObject) BindRedPointObject(RedPointType.incarnation_demon, tabsRedpoints[3].gameObject) BindRedPointObject(RedPointType.incarnation_taoist, tabsRedpoints[4].gameObject) BindRedPointObject(RedPointType.incarnation_Kong, tabsRedpoints[5].gameObject) BindRedPointObject(RedPointType.incarnation_force, self.powerBtnRedPoint.gameObject) 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 self.selectBtn.transform:SetAsFirstSibling() end function IncarnationPanel:RefreshUpLimitLevel() curLevel = PracticeManager .PracticeLevel --ConfigManager.GetConfigData(ConfigName.ChangingForce,IncarnationManager.incarnationForceLv).Level for i = 1, 4 do self.upLayoutItemList[i].lv.gameObject:SetActive(curLevel < tonumber(limits[i])) end end function IncarnationPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.CommonEvent.RefreshIncarnationPanel, function() self:RefreshUpList() self:RefreshList(true, true) end) Game.GlobalEvent:AddEvent(GameEvent.CommonEvent.RefreshIncarnationPanelUp, function() self:RefreshUpLimitLevel() end) end function IncarnationPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.CommonEvent.RefreshIncarnationPanel, function() self:RefreshUpList() self:RefreshList(true, true) end) Game.GlobalEvent:RemoveEvent(GameEvent.CommonEvent.RefreshIncarnationPanelUp, function() self:RefreshUpLimitLevel() end) end function IncarnationPanel:OnOpen(_proId) proId = _proId or 1 CheckRedPointStatus(RedPointType.incarnation_force) end function IncarnationPanel:OnShow() --curIndex=1 --self.upLayout:GetComponent("RectTransform").anchoredPosition=Vector2.New(allPos[1],-221) self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main }) self:RefreshUpList() self:SetSelectBtn() self:RefreshList(false, false) end function IncarnationPanel:RefreshUpList() self.upLayoutData = IncarnationManager.GetIncarnationData1() for i = 1, 4 do self.upLayoutItemList[i].pos.gameObject:SetActive(false) self.upLayoutItemList[i].btn.gameObject:SetActive(false) self.upLayoutItemList[i].lv.gameObject:SetActive(PracticeManager.PracticeLevel < tonumber(limits[i])) --local xiuxian=ConfigManager.GetConfigData(ConfigName.XiuXianConfig,tonumber(limits[i])) if xiuxian then self.upLayoutItemList[i].lv.text = GetLanguageStrById(xiuxian[tonumber(limits[i])].RealmName) .. Language[11622] end end for k, v in pairs(self.upLayoutData) do self:RefreshSingleCardPre(self.upLayoutItemList[k].pos, v, false, k) self.upLayoutItemList[k].btn.gameObject:SetActive(true) end end function IncarnationPanel:RefreshSingleCardPre(cardPre, data, isJump, index) if not self.cardList[cardPre] then self.cardList[cardPre] = {} self.cardList[cardPre].bg = Util.GetGameObject(cardPre, "Hero/Bg1"):GetComponent("Image") self.cardList[cardPre].icon = Util.GetGameObject(cardPre, "Hero/Mask/icon"):GetComponent("RawImage") self.cardList[cardPre].cardBg = Util.GetGameObject(cardPre, "Hero/Bg2"):GetComponent("Image") self.cardList[cardPre].proImage = Util.GetGameObject(cardPre, "Hero/Pro/Image"):GetComponent("Image") self.cardList[cardPre].getBtn = Util.GetGameObject(cardPre, "getBtn") self.cardList[cardPre].StarGrid = Util.GetGameObject(cardPre, "StarGrid") self.cardList[cardPre].lv = Util.GetGameObject(cardPre, "lv/Text"):GetComponent("Text") end if data then cardPre.gameObject:SetActive(true) if data.state < 0 or not isJump then self.cardList[cardPre].getBtn.gameObject:SetActive(true) else self.cardList[cardPre].getBtn.gameObject:SetActive(false) end self.cardList[cardPre].bg.sprite = self.spLoader:LoadSprite(GetIncarnationHeroCardStarBg[data.quality]) local liveName = GetResourcePath(heroConfig[data.heroId].Live) local roleConfig = ConfigManager.GetConfigData(ConfigName.RoleConfig, data.heroId) local scale = roleConfig.play_liveScale local livePos = Vector3.New(roleConfig.offset[1], roleConfig.offset[2], 0) if not isJump then self.cardList[cardPre].icon.texture = CardRendererManager.GetSpineTexture(index, liveName, Vector3.one * scale, livePos, true) else self.cardList[cardPre].icon.texture = CardRendererManager.GetSpineTexture( (index % 4 == 0 and 7 or index % 4 + 3), liveName, Vector3.one * scale, livePos, true) end self.cardList[cardPre].icon.transform.localScale = Vector3.one self.cardList[cardPre].icon.transform.localPosition = Vector3.zero SetHEeroLiveToward(self.cardList[cardPre].icon.gameObject, heroConfig[data.heroId].Toward) self.cardList[cardPre].proImage.sprite = self.spLoader:LoadSprite(GetProStrImageByProNum(data.property)) self.cardList[cardPre].cardBg.sprite = self.spLoader:LoadSprite(GetHeroCardStarFg[data.quality]) if isJump then Util.AddOnceClick(self.cardList[cardPre].getBtn, function() UIManager.OpenPanel(UIName.RewardTailsmanChipShowPopup, data.itemId) end) end SetCardStars(self.cardList[cardPre].StarGrid, data.star, 1) -- for i = 0, 8 do -- if i%s",GetIncarnationNameColor[data.quality], data.name) --if data.quality == 7 then -- self.itemPreList[go].nameText1.gameObject:SetActive(true) -- self.itemPreList[go].nameText1.text = data.name --else -- self.itemPreList[go].nameText1.gameObject:SetActive(false) --end self.itemPreList[go].red.gameObject:SetActive(data.state == 0) self.itemPreList[go].upLvRed.gameObject:SetActive(IncarnationManager.CheckCardUpLvRedData(data.id)) self.itemPreList[go].upStarRed.gameObject:SetActive(IncarnationManager.CheckCardUpStarRedData(data.id)) self:RefreshSingleCardPre(self.itemPreList[go].cardPre, data, true, index) self:SetProList(IncarnationManager.GetCardPropDesStr(data.id), self.itemPreList[go].preList, self.itemPreList[go].proGrid, self.itemPreList[go].pro.gameObject) Util.AddOnceClick(self.itemPreList[go].activableBtn, function() if data.state == 0 then NetManager.UpOrDownTransformationRequest(data.id, 0, 1, function() data.state = 1 self:SetSingleData(go, data, index) PopupTipPanel.ShowTip(string.format(Language[11623], GetLanguageStrById(data.name))) CheckRedPointStatus(RedPointType.incarnation_force) end) else PopupTipPanel.ShowTip(string.format(Language[11623], GetLanguageStrById(data.name))) end end) Util.AddOnceClick(self.itemPreList[go].incarnationBtn, function() if data.state == 1 then local pos = 0 for i = 1, 4 do if self.upLayoutData[i] and self.upLayoutData[i].id then else pos = i break end end --LogError("curLevel==="..curLevel.." limits[pos]==="..limits[pos].."PracticeManager.PracticeLevel=="..PracticeManager.PracticeLevel) if PracticeManager.PracticeLevel < tonumber(limits[pos]) then PopupTipPanel.ShowTip(GetLanguageStrById(xiuxian[tonumber(limits[pos])].RealmName) .. Language[11622]) return 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, false, pos) self.upLayoutItemList[pos].btn.gameObject:SetActive(true) PopupTipPanel.ShowTip(Language[11624]) end) else PopupTipPanel.ShowTip(Language[11625]) end else PopupTipPanel.ShowTip(Language[11624]) end end) Util.AddOnceClick(self.itemPreList[go].incarnationningBtn, function() if data.state == 2 then 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, false, oldPos) self.upLayoutItemList[oldPos].btn.gameObject:SetActive(false) PopupTipPanel.ShowTip(Language[11619]) end) end end) Util.AddOnceClick(self.itemPreList[go].upLvBtn, function() UIManager.OpenPanel(UIName.IncarnationUpPopup, 1, data.id) end) Util.AddOnceClick(self.itemPreList[go].upStarBtn, function() UIManager.OpenPanel(UIName.IncarnationUpPopup, 2, data.id) end) Util.AddOnceClick(self.itemPreList[go].helpBtn, function() UIManager.OpenPanel(UIName.IncarnationUpHelpPopup, data.id) end) 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) self.itemPreList[go].upLvBtn.gameObject:SetActive(true) self.itemPreList[go].upStarBtn.gameObject:SetActive(true) elseif data.state == 2 then self.itemPreList[go].incarnationningBtn.gameObject:SetActive(true) self.itemPreList[go].upLvBtn.gameObject:SetActive(true) self.itemPreList[go].upStarBtn.gameObject:SetActive(true) 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 = {} ClearRedPointObject(RedPointType.incarnation_people, tabsRedpoints[1].gameObject) ClearRedPointObject(RedPointType.incarnation_buddish, tabsRedpoints[2].gameObject) ClearRedPointObject(RedPointType.incarnation_demon, tabsRedpoints[3].gameObject) ClearRedPointObject(RedPointType.incarnation_taoist, tabsRedpoints[4].gameObject) ClearRedPointObject(RedPointType.incarnation_Kong, tabsRedpoints[5].gameObject) ClearRedPointObject(RedPointType.incarnation_force, self.powerBtnRedPoint.gameObject) SubUIManager.Close(self.UpView) end return IncarnationPanel