require("Base/BasePanel") RoleProInfoPopup = Inherit(BasePanel) local this=RoleProInfoPopup local sDataTable = { [1] = {name = Language[11432],showType = 1}, [2] = {name = Language[11822],showType = 2}, [3] = {name = Language[11823],showType = 3}, } local allPro = {}--所有属性 三维数组 local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig) local fristProGoList = {} local secondProGoList = {} local thirdlyProGoList = {} local heroSConFig local isShowGuild = true --初始化组件(用于子类重写) function RoleProInfoPopup:InitComponent() this.btnBack=Util.GetGameObject(self.transform, "btnBack") this.proPre1=Util.GetGameObject(self.gameObject, "proPre1") this.proPre2=Util.GetGameObject(self.gameObject, "proPre2") this.fristGrid=Util.GetGameObject(self.gameObject, "grid/ver/recordPer (1)/Mask") this.secondGrid=Util.GetGameObject(self.gameObject, "grid/ver/recordPer (2)/Mask") this.thirdlyGrid=Util.GetGameObject(self.gameObject, "grid/ver/recordPer (3)/Mask") end --绑定事件(用于子类重写) function RoleProInfoPopup:BindEvent() Util.AddClick(this.btnBack, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) end local guildSkill = nil --界面打开时调用(用于子类重写) function RoleProInfoPopup:OnOpen(...) local data={...} heroSConFig=data[2] isShowGuild=data[3]--图鉴不显示公会技能等级特殊操作 guildSkill = data[4] and data[4] or nil--其他玩家公会技能等级特殊操作 for i = 1, #sDataTable do allPro[i] = {} end --加基础 和 辅助属性 for proId, val in pairs(data[1]) do if propertyConfig[proId] then if propertyConfig[proId].IfShow ~= 0 then local curLength = #allPro[propertyConfig[proId].IfShow] > 0 and #allPro[propertyConfig[proId].IfShow] or 1 if not allPro[propertyConfig[proId].IfShow][curLength] then allPro[propertyConfig[proId].IfShow][curLength] = {} table.insert(allPro[propertyConfig[proId].IfShow][curLength],{proId = proId,proVal = val}) elseif allPro[propertyConfig[proId].IfShow][curLength] and #allPro[propertyConfig[proId].IfShow][curLength] < 2 then table.insert(allPro[propertyConfig[proId].IfShow][curLength],{proId = proId,proVal = val}) elseif allPro[propertyConfig[proId].IfShow][curLength] and #allPro[propertyConfig[proId].IfShow][curLength] >= 2 then allPro[propertyConfig[proId].IfShow][curLength + 1] = {} table.insert(allPro[propertyConfig[proId].IfShow][curLength + 1],{proId = proId,proVal = val}) end end end end --加公会技能特殊属性 allPro[3][1] = {} local allLv = isShowGuild and GuildSkillManager.GetAllGuildSkillLv(heroSConFig.Profession) or 0 if guildSkill then allLv = guildSkill end table.insert(allPro[3][1],{proId = Language[11061]..GuildSkillType[heroSConFig.Profession],proVal = allLv}) --for i = 1, #allPro do -- for j = 1, #allPro[i] do -- for k = 1, #allPro[i][j] do -- LogGreen("allPro[i][j][k] "..allPro[i][j][k].proId.." "..allPro[i][j][k].proVal) -- end -- end --end this.ShowPanelData() end function this.ShowPanelData() this.GridShowData(1,allPro[1],fristProGoList, this.proPre1,this.fristGrid) this.GridShowData(2,allPro[2],secondProGoList, this.proPre1,this.secondGrid) this.GridShowData(3,allPro[3],thirdlyProGoList, this.proPre2,this.thirdlyGrid) end function this.GridShowData(type,curAllPro,curProGoList,curPre,curGrid) for i = 1, math.max(#curAllPro, #curProGoList) do local go = curProGoList[i] if not go then go = newObject(curPre) go.transform:SetParent(curGrid.transform) go.transform.localScale = Vector3.one go.transform.localPosition = Vector3.zero curProGoList[i] = go end go.gameObject:SetActive(false) end for i = 1, #curAllPro do this.SingleProShowData(type,curAllPro[i],curProGoList[i]) end end function this.SingleProShowData(type,data,go) go:SetActive(true) if type == 3 then Util.GetGameObject(go, "proName"):GetComponent("Text").text = data[1].proId..":" Util.GetGameObject(go, "proVale"):GetComponent("Text").text = data[1].proVal if guildSkill then Util.GetGameObject(go, "jumpBtn"):SetActive(false) else Util.GetGameObject(go, "jumpBtn"):SetActive(true) end Util.AddOnceClick(Util.GetGameObject(go, "jumpBtn"), function() JumpManager.GoJump(73001) end) else for i = 1, 2 do local curGo =go .transform:GetChild(i-1).gameObject if #data > 1 then curGo:SetActive(true) --LogGreen("data.proId "..data[i].proId.." "..data[i].proVal) Util.GetGameObject(curGo, "proName"):GetComponent("Text").text = GetLanguageStrById(propertyConfig[data[i].proId].Info)..":" local proVale = Util.GetGameObject(curGo, "proVale"):GetComponent("Text") if propertyConfig[data[i].proId].Style==1 then--绝对值 proVale.text = GetPropertyFormatStr(propertyConfig[data[i].proId].Style, data[i].proVal) elseif propertyConfig[data[i].proId].Style==2 then--百分百 proVale.text = GetPropertyFormatStr(propertyConfig[data[i].proId].Style, data[i].proVal*100) end else curGo:SetActive(false) end end end end --function this.ShowProValPanelData() -- local allProKeys={} -- for k, v in pairs(allPro) do -- if k~=1000 and (propertyConfig[k].IfShow==0) then -- local singleProData={} -- singleProData.id=k -- singleProData.val=v -- table.insert(allProKeys,singleProData) -- end -- end -- table.sort(allProKeys, function (a,b)return a.id