require("Base/BasePanel") TailsmanSoulMainPanel = Inherit(BasePanel) local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig) local ItemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) local specialConfig = ConfigManager.GetConfigData(ConfigName.SpecialConfig, 177) local sortOrder = 0 local pro = tonumber(specialConfig.Value) / 10000 local addLv = 0 local curData = {} function TailsmanSoulMainPanel:InitComponent() self.spLoader = SpriteLoader.New() self.help = Util.GetGameObject(self.transform, "help") self.helpPos = self.help:GetComponent("RectTransform").localPosition self.btnBack = Util.GetGameObject(self.transform, "btnBack") self.tailsmainSoul = Util.GetGameObject(self.gameObject, "tailsmainSoul") self.tailsmainSoulDi = Util.GetGameObject(self.tailsmainSoul, "di"):GetComponent("Image") self.icon = Util.GetGameObject(self.tailsmainSoul, "icon"):GetComponent("Image") --self.starGray = Util.GetGameObject(self.transform,"proMainLayout/starGrid/starGray") --self.starLight = Util.GetGameObject(self.transform,"proMainLayout/starGrid/starLight") self.starGrid = Util.GetGameObject(self.transform, "proMainLayout/starGrid") self.upLvBtn = Util.GetGameObject(self.transform, "proMainLayout/upLvBtn") self.upLvBtnText = Util.GetGameObject(self.upLvBtn, "Text"):GetComponent("Text") self.upLvBtnRed = Util.GetGameObject(self.upLvBtn, "red") self.costLayout = Util.GetGameObject(self.transform, "proMainLayout/layout") self.costIconParent = Util.GetGameObject(self.transform, "proMainLayout/layout/iconDi") self.costIcon = Util.GetGameObject(self.costIconParent, "icon"):GetComponent("Image") self.costNum = Util.GetGameObject(self.transform, "proMainLayout/layout/num"):GetComponent("Text") self.pro = Util.GetGameObject(self.transform, "proMainLayout/pro") self.proGrid = Util.GetGameObject(self.transform, "proMainLayout/proScrollRect/proScroll") self.proList = {} self.select = Util.GetGameObject(self.transform, "select") self.tailsGrid = Util.GetGameObject(self.transform, "tailsScroll") self.tailsPre = Util.GetGameObject(self.transform, "tailsPre") self.tailsList = {} for i = 1, self.tailsGrid.transform.childCount do if not self.tailsList[i] then self.tailsList[i] = {} self.tailsList[i].go = self.tailsGrid.transform:GetChild(i - 1) self.tailsList[i].card = Util.GetGameObject(self.tailsList[i].go, "ItemView") self.tailsList[i].bg = Util.GetGameObject(self.tailsList[i].card.transform, "item/frame"):GetComponent( "Image") self.tailsList[i].icon = Util.GetGameObject(self.tailsList[i].card.transform, "item/icon"):GetComponent( "Image") self.tailsList[i].starGray = Util.GetGameObject(self.tailsList[i].card.transform, "item/starGrid/starGray") self.tailsList[i].starLight = Util.GetGameObject(self.tailsList[i].card.transform, "starGrid/starLight") self.tailsList[i].name = Util.GetGameObject(self.tailsList[i].card.transform, "name"):GetComponent("Text") self.tailsList[i].red = Util.GetGameObject(self.tailsList[i].card.transform, "redPoint") end end self.skillPro = Util.GetGameObject(self.transform, "skillLayout/pro") self.skillGrid = Util.GetGameObject(self.transform, "skillLayout/proScrolllRect/proScroll") self.skillGridPos = self.skillGrid:GetComponent("RectTransform").anchoredPosition3D self.skillList = {} self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform) self.effect = Util.GetGameObject(self.transform, "Effect") end function TailsmanSoulMainPanel:BindEvent() Util.AddClick(self.costIcon.gameObject, function() local costId, num = TailsManSoulManager.GetTailsmanCost(self.data.id, self.data.lv) UIManager.OpenPanel(UIName.RewardItemSingleShowPopup, costId, nil) end) Util.AddClick(self.btnBack, function() self:ClosePanel() end) Util.AddClick(self.help, function() UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.tailsmainSoul, self.helpPos.x, self.helpPos.y) end) --逍遥游 Util.AddClick(self.upLvBtn, function() local costId, num = TailsManSoulManager.GetTailsmanCost(self.data.id, self.data.lv) local curNum = BagManager.GetItemCountById(costId) local isEnough = false, false if num and num > 0 then if curNum >= num then local oldPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL) NetManager.FaBaoSoulUpLvRequest(self.data.id, self.data.lv + 1, function() self:OnShow() if self.data.lv < 2 then PopupTipPanel.ShowTip(string.format(Language[12891], GetLanguageStrById(self.data.config.Name))) else PopupTipPanel.ShowTip(string.format(Language[12892], GetLanguageStrById(self.data.config.Name))) end local newPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL) if newPower - oldPower > 0 then UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2, { oldValue = oldPower, newValue = newPower }) end end) else PopupTipPanel.ShowTip(string.format(Language[10600], GetLanguageStrById(ItemConfig[costId].Name))) end else PopupTipPanel.ShowTip(Language[10209]) end end) end --添加事件监听(用于子类重写) function TailsmanSoulMainPanel:AddListener() end --移除事件监听(用于子类重写) function TailsmanSoulMainPanel:RemoveListener() end function TailsmanSoulMainPanel:OnSortingOrderChange() Util.SetParticleSortLayer(self.effect, self.sortingOrder + 1) end function TailsmanSoulMainPanel:OnOpen(curCompId) self.curCompId = curCompId self.index = 1 end function TailsmanSoulMainPanel:OnShow() self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main }) self.trumpList, self.compMaxLv, self.complv, self.skillDataList = TailsManSoulManager.GetTailsmanSoulDataById(self .curCompId) self:SetTailsManList(self.trumpList, self.tailsGrid, self.tailsPre) self:ChangeTailsMan() local data1 = self:GetSkillDataList(self.skillDataList) self:SetProList(data1, self.skillList, self.skillGrid, self.skillPro) self:SetSkillGridPos(data1) Util.SetParticleSortLayer(self.effect, self.sortingOrder + 1) end function TailsmanSoulMainPanel:SetSkillGridPos() -- local pos = self.skillGrid:GetComponent("RectTransform").anchoredPosition3D -- for i = 1,#self.skillList do -- if self.complv > i then -- pos.y = self.skillGridPos.y + GetPreferredHeight(self.skillList[i].go.transform) -- end -- end -- self.skillGrid:GetComponent("RectTransform").anchoredPosition3D = pos end function TailsmanSoulMainPanel:GetSkillDataList() local datas = {} for k, v in pairs(self.skillDataList) do local str = v --[[ if self.complv == k then str = string.format("%s %s", str, Language[12893] .. pro * 100 * k .. "%") elseif self.complv < k then str = string.format("%s %s", str, Language[12893] .. pro * 100 * k .. "%") else str = string.format("%s %s", str, Language[12893] .. pro * 100 * k .. "%") end ]] datas[k] = str end return datas end function TailsmanSoulMainPanel:ChangeTailsMan() self.data = self.trumpList[self.index] self.icon.sprite = self.spLoader:LoadSprite(GetResourcePath(self.data.config.Icon)) self.tailsmainSoulDi.sprite = self.spLoader:LoadSprite(GetTailsmanDiImage[self.data.config.Quality]) --获取技能加成等级 addLv = 0 for i = 1, 5 do local curData = TailsManSoulManager.GetTailsmanSoulDatasByPro(i) for j = 1, #curData do --LogError("curData.lv=========="..curData[j].lv) if curData[j].lv > 0 then addLv = addLv + curData[j].lv end end end local data1 = self:GetProData() self:SetProList(data1, self.proList, self.proGrid, self.pro) self:SetSelect() self:SetCostItem() --self:SetStar(self.starGray,self.data.config.LvMax) --self:SetStar(self.starLight,self.data.lv) SetHeroStars(self.spLoader, self.starGrid, self.data.lv) end function TailsmanSoulMainPanel:GetProData() local proData = {} local curData = ConfigManager.GetConfigDataByDoubleKey(ConfigName.TrumpLevelupPool, "PoolId", self.data.config.LvupPool, "Level", self.data.lv).LvupProps local nextProData = {} local tempdata = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.TrumpLevelupPool, "PoolId", self.data.config.LvupPool, "Level", self.data.lv + 1) local isMax = 0 if not tempdata then isMax = 1 else nextProData = self:SetProData(tempdata.LvupProps) end local str = "" for i = 1, #curData do --LogError("addlv======================"..addLv.." pro========="..pro) local value = math.floor(curData[i][2] * (1 + addLv * pro) + 0.5) str = string.format("%s:%s", GetLanguageStrById(propertyConfig[curData[i][1]].Info), GetPropertyFormatStrOne(propertyConfig[curData[i][1]].Style, value)) if nextProData[curData[i][1]] then str = str .. string.format("(+%s)", GetPropertyFormatStrOne(propertyConfig[curData[i][1]].Style, nextProData[curData[i][1]] - value)) end table.insert(proData, str) end return proData end function TailsmanSoulMainPanel:SetProData(proData) local proList = {} for i = 1, #proData do if not proList[proData[i][1]] then proList[proData[i][1]] = 0 end proList[proData[i][1]] = proList[proData[i][1]] + proData[i][2] end for k, v in pairs(proList) do proList[k] = math.floor(v * (1 + addLv * pro) + 0.5) end return proList end function TailsmanSoulMainPanel: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.gameObject, grid.gameObject) 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 TailsmanSoulMainPanel:SetCostItem() local costId, num = TailsManSoulManager.GetTailsmanCost(self.data.id, self.data.lv) local curNum = BagManager.GetItemCountById(costId) local colo = curNum >= num and "#FF0000" or "#Ffeac6" local ismax = false if num and num > 0 then self.costLayout.gameObject:SetActive(true) self.costIcon.sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(costId)) self.costNum.text = string.format("%s/%s", colo, curNum, num) if curNum > num then self.upLvBtnRed.gameObject:SetActive(true) else self.upLvBtnRed.gameObject:SetActive(false) end Util.SetGray(self.upLvBtn, false) ismax = false else self.upLvBtnRed.gameObject:SetActive(false) self.costLayout.gameObject:SetActive(false) Util.SetGray(self.upLvBtn, true) ismax = true end if self.data.lv < 1 then self.upLvBtnText.text = Language[12894] elseif ismax then self.upLvBtnText.text = Language[10209] else self.upLvBtnText.text = Language[12642] end end function TailsmanSoulMainPanel:SetSelect() self.select.transform:SetParent(self.tailsList[self.index].go.transform) self.select.transform.localPosition = Vector3.New(-0.84, 20.73, 0) self.select.transform.localScale = Vector3.one end function TailsmanSoulMainPanel:SetTailsManList(data, grid, pre) for i = 1, math.max(#data, #self.tailsList) do if not data[i] then self.tailsList[i].go.gameObject:SetActive(false) else if not self.tailsList[i] then self.tailsList[i] = {} self.tailsList[i].go = newObjToParent(pre.gameObject, grid.gameObject) self.tailsList[i].card = Util.GetGameObject(self.tailsList[i].go, "ItemView") self.tailsList[i].bg = Util.GetGameObject(self.tailsList[i].card.transform, "item/frame"):GetComponent( "Image") self.tailsList[i].icon = Util.GetGameObject(self.tailsList[i].card.transform, "item/icon"):GetComponent( "Image") --self.tailsList[i].starGray = Util.GetGameObject(self.tailsList[i].card.transform,"item/starGrid/starGray") --self.tailsList[i].starLight = Util.GetGameObject(self.tailsList[i].card.transform,"starGrid/starLight") self.tailsList[i].starGrid = Util.GetGameObject(self.tailsList[i].card.transform, "starGrid") self.tailsList[i].name = Util.GetGameObject(self.tailsList[i].card.transform, "name"):GetComponent( "Text") self.tailsList[i].red = Util.GetGameObject(self.tailsList[i].card.transform, "redPoint") end self.tailsList[i].go.gameObject:SetActive(true) self.tailsList[i].bg.sprite = self.spLoader:LoadSprite(GetQuantityImageByquality(data[i].config.Quality)) self.tailsList[i].icon.sprite = self.spLoader:LoadSprite(GetResourcePath(data[i].config.Icon)) self.tailsList[i].name.text = GetLanguageStrById(data[i].config.Name) --self:SetStar(self.tailsList[i].starGray,data[i].config.LvMax) --self:SetStar(self.tailsList[i].starLight,data[i].lv) SetHeroStars(self.spLoader, self.tailsList[i].starGrid, data[i].lv) local costId, num = TailsManSoulManager.GetTailsmanCost(data[i].id, data[i].lv) local curNum = BagManager.GetItemCountById(costId) if num and num > 0 and curNum >= num then self.tailsList[i].red.gameObject:SetActive(true) else self.tailsList[i].red.gameObject:SetActive(false) end Util.AddOnceClick(self.tailsList[i].go, function() self.index = i self:ChangeTailsMan() end) end end end function TailsmanSoulMainPanel:SetStar(grid, star) for i = 1, grid.transform.childCount do if star >= i then grid.transform:GetChild(i - 1).gameObject:SetActive(true) else grid.transform:GetChild(i - 1).gameObject:SetActive(false) end end end function TailsmanSoulMainPanel:OnClose() end --界面销毁时调用(用于子类重写) function TailsmanSoulMainPanel:OnDestroy() self.proList = {} self.skillList = {} SubUIManager.Close(self.UpView) end return TailsmanSoulMainPanel