require("Base/BasePanel") local PlayerInfoPopup = Inherit(BasePanel) local this = PlayerInfoPopup local netserverName = nil local XiuXianSkillConfig = ConfigManager.GetConfig(ConfigName.XiuXianSkillConfig) local GemConfig = ConfigManager.GetConfig(ConfigName.GemConfig) local ItemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) local ChangingCard = ConfigManager.GetConfig(ConfigName.ChangingCard) local isNpc = false --是否是机器人 local _ViewConfig = { [PLAYER_INFO_VIEW_TYPE.NORMAL] = { formationType = FormationTypeDef.FORMATION_NORMAL, tip = Language[10933], isAddFriend = true, btnType = { --{name = "举 报", func = 1}, { name = Language[11496], func = 2 }, { name = Language[11497], func = 3 }, } }, [PLAYER_INFO_VIEW_TYPE.BLACK_REMOVE] = { formationType = FormationTypeDef.FORMATION_NORMAL, tip = Language[10933], isAddFriend = true, btnType = { { name = Language[11498], func = 4 }, } }, [PLAYER_INFO_VIEW_TYPE.GO_TO_BLACK] = { formationType = FormationTypeDef.FORMATION_NORMAL, tip = Language[10933], isAddFriend = true, btnType = { { name = Language[11499], func = 5 }, } }, [PLAYER_INFO_VIEW_TYPE.ARENA] = { formationType = FormationTypeDef.FORMATION_ARENA_DEFEND, tip = Language[11500], isAddFriend = true, }, [PLAYER_INFO_VIEW_TYPE.MIND_DEMON] = { formationType = FormationTypeDef.MONSTER_CAMP_ATTACK, tip = Language[12306], isAddFriend = true, btnType = {} }, [PLAYER_INFO_VIEW_TYPE.TSLX] = { formationType = FormationTypeDef.FORMATION_TSLX, tip = "挑战阵容", isAddFriend = true, btnType = {} }, [PLAYER_INFO_VIEW_TYPE.JUPMSERVER] = { formationType = FormationTypeDef.JUMPSERVER_HIGHTLADDER, tip = "鸟笼竞技场阵容:", isAddFriend = false, btnType = { -- {name = "挑战", func = 6}, { name = "切磋", func = 6 }, } }, [PLAYER_INFO_VIEW_TYPE.JUPMSERVER_NORMAL] = { formationType = FormationTypeDef.FORMATION_NORMAL, tip = Language[10933], isAddFriend = false, btnType = { { name = "切磋", func = 7 }, } }, [PLAYER_INFO_VIEW_TYPE.TOP_MATCH] = { formationType = FormationTypeDef.ARENA_TOM_MATCH, tip = "巅峰赛阵容", isAddFriend = false, }, [PLAYER_INFO_VIEW_TYPE.QIJIESHILIAN] = { formationType = FormationTypeDef.FORMATION_QIJIESHILIAN, tip = "宇宙生存挑战阵容:", isAddFriend = false, btnType = { -- {name = "切磋", func = 7}, } }, [PLAYER_INFO_VIEW_TYPE.LINGMAIMIJING] = { formationType = FormationTypeDef.FORMATION_LINGMAIMIJING, tip = "空岛阵容:", isAddFriend = false, btnType = { { name = "切磋", func = 9 }, { name = "挑战", func = 8 }, { name = "调整编队", func = 8 }, } }, } local InfoBtns = { [1] = { name = "紫府神印", gridName = "imprintInfo", func = function(data, obj) this.imprintInfoShow(data, obj) end }, [2] = { name = "奥义卡", gridName = "huashenInfo", func = function(data, obj) this.huashenInfoShow(data, obj) end }, [3] = { name = "四象心法", gridName = "fourElementInfo", func = function(data, obj) this.fourElementInfoShow(data, obj) end }, [4] = { name = "命 格", gridName = "GemInfo", func = function(data, obj) this.GemInfoShow(data, obj) end }, [5] = { name = "坐 骑", gridName = "RideInfo", func = function(data, obj) this.RideInfoShow(data, obj) end }, [6] = { name = "礼 物", gridName = "giftInfo", func = function(data, obj) this.GiftInfoShow(data, obj) end }, } local curPlayerName = "" local _PlayerHead = nil --初始化组件(用于子类重写) function PlayerInfoPopup:InitComponent() this.spLoader = SpriteLoader.New() this.extraInfo = require("Modules/Popup/PlayerInfoPopup_extra") this.btnBack = Util.GetGameObject(self.transform, "btnClose") this.BgMask = Util.GetGameObject(self.transform, "BgMask") this.memHead = Util.GetGameObject(self.transform, "tipImage/panel/info/head") this.memName = Util.GetGameObject(self.transform, "tipImage/panel/info/name"):GetComponent("Text") this.memProfess = Util.GetGameObject(self.transform, "tipImage/panel/info/profess"):GetComponent("Text") this.rankName = Util.GetGameObject(self.transform, "tipImage/panel/info/rankName"):GetComponent("Text") this.addFriendBtn = Util.GetGameObject(self.transform, "tipImage/panel/info/btnAdd") this.addFriendBtnText = Util.GetGameObject(this.addFriendBtn, "text"):GetComponent("Text") this.starBox = Util.GetGameObject(self.transform, "tipImage/panel/info/starBox") this.star = Util.GetGameObject(self.transform, "tipImage/panel/info/starBox/star") this.titlePar = Util.GetGameObject(self.transform, "tipImage/panel/info/titlePar") this.memPower = Util.GetGameObject(self.transform, "tipImage/panel/defendbox/power"):GetComponent("Text") this.formationTip = Util.GetGameObject(self.transform, "tipImage/panel/defendbox/Image/tip"):GetComponent("Text") this.demonsHeroList = Util.GetGameObject(self.gameObject, "tipImage/panel/defendbox/demons") this.diffDemonsHeroList = Util.GetGameObject(self.gameObject, "tipImage/panel/defendbox/diffdemons") this.Demons = {} for i = 1, 6 do this.Demons[i] = {} this.Demons[i].go = Util.GetGameObject(self.gameObject, "tipImage/panel/defendbox/Demons/heroPro (" .. i .. ")") this.Demons[i].frameBtn = Util.GetGameObject(this.Demons[i].go, "frame") this.Demons[i].frame = this.Demons[i].frameBtn:GetComponent("Image") this.Demons[i].hero = Util.GetGameObject(this.Demons[i].go, "hero") this.Demons[i].starGrid = Util.GetGameObject(this.Demons[i].hero, "starGrid") this.Demons[i].proIcon = Util.GetGameObject(this.Demons[i].hero, "proIcon"):GetComponent("Image") this.Demons[i].levelText = Util.GetGameObject(this.Demons[i].hero, "lvbg/levelText"):GetComponent("Text") this.Demons[i].icon = Util.GetGameObject(this.Demons[i].hero, "icon"):GetComponent("Image") end Util.GetGameObject(self.transform, "tipImage/panel/pokemonInfo/Image/tip"):GetComponent("Text").text = Language [11501] this.Pokemons = {} for i = 1, 6 do table.insert(this.Pokemons, Util.GetGameObject(self.gameObject, "tipImage/panel/pokemonInfo/Demons/heroPro (" .. i .. ")")) end this.Weapons = {} for i = 1, 6 do table.insert(this.Weapons, Util.GetGameObject(self.gameObject, "tipImage/panel/weaponInfo/Demons/heroPro (" .. i .. ")")) end this.newGems = {} for i = 1, 16 do table.insert(this.newGems, Util.GetGameObject(self.gameObject, "tipImage/panel/InfoGrids/Bg/GemInfo/Grid/heroPro (" .. i .. ")")) end this.pokemonObj = Util.GetGameObject(self.transform, "tipImage/panel/pokemonInfo").gameObject this.weaponInfo = Util.GetGameObject(self.transform, "tipImage/panel/weaponInfo") this.newGemInfo = Util.GetGameObject(self.transform, "tipImage/panel/newGemInfo") this.newGemInfo:SetActive(false) --this.boxLine = Util.GetGameObject(self.transform, "tipImage/panel/defendbox/line") this.btnBox = Util.GetGameObject(self.transform, "tipImage/box") -- this.bgImg= Util.GetGameObject(self.transform, "tipImage/tipImage"):GetComponent("RectTransform") this.btnList = {} this.btnList[1] = Util.GetGameObject(this.btnBox, "btn1") this.btnList[2] = Util.GetGameObject(this.btnBox, "btn2") this.btnList[3] = Util.GetGameObject(this.btnBox, "btn3") --神印信息 -- this.imprintObj = Util.GetGameObject(self.transform, "tipImage/panel/imprintInfo") -- this.imprintGrid = Util.GetGameObject(this.imprintObj, "Imprints") -- this.imprintPre = Util.GetGameObject(self.transform, "imprintPre") --所有信息Obj的PreList this.InfoBtns = Util.GetGameObject(self.transform, "tipImage/panel/InfoBtns") this.InfoBtnsGrid = Util.GetGameObject(this.InfoBtns, "Grid") this.InfoContentGrid = Util.GetGameObject(self.transform, "tipImage/panel/InfoGrids") this.InfoContent = Util.GetGameObject(this.InfoContentGrid, "Bg") this.infoBtnPre = Util.GetGameObject(self.transform, "btnPre") --按钮的Pre this.imprintPre = Util.GetGameObject(self.transform, "imprintPre") --神印的Pre this.emptyPre = Util.GetGameObject(self.transform, "emptyPre") --空的Pre this.InfoBtnsList = {} this.ItemPreList = {} this.ItemList = {} end --绑定事件(用于子类重写) function PlayerInfoPopup:BindEvent() Util.AddClick(this.btnBack, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) this:ClosePanel() end) Util.AddClick(this.BgMask, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) this:ClosePanel() end) Util.AddClick(this.addFriendBtn, function() if this.serverName and this.serverName ~= "" then PopupTipPanel.ShowTip("无法跨服添加好友") return end if not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.GOODFRIEND) then PopupTipPanel.ShowTip(ActTimeCtrlManager.GetFuncTip(FUNCTION_OPEN_TYPE.GOODFRIEND)) return end if GoodFriendManager.IsInBlackList(this._PlayerId) then PopupTipPanel.ShowTip(Language[10814]) return end if this._PlayerId == PlayerManager.uid then PopupTipPanel.ShowTip(Language[10931]) return end if GoodFriendManager.IsMyFriend(this._PlayerId) then PopupTipPanel.ShowTip(Language[10932]) return end if this._PlayerData.isApplyed == 1 then PopupTipPanel.ShowTip(Language[10819]) return end GoodFriendManager.InviteFriendRequest(this._PlayerId, function() PopupTipPanel.ShowTip(Language[11502]) this._PlayerData.isApplyed = 1 this.RefreshFunction() end) end) end --添加事件监听(用于子类重写) function PlayerInfoPopup:AddListener() end --移除事件监听(用于子类重写) function PlayerInfoPopup:RemoveListener() end --界面打开时调用(用于子类重写) function PlayerInfoPopup:OnOpen(playerId, viewType, serverName, _otherdata) this._PlayerId = playerId this._ViewType = viewType or PLAYER_INFO_VIEW_TYPE.NORMAL this.serverName = serverName --跨服加的服务器数据 this.data = _otherdata isNpc = this._PlayerId <= 1000000 -- 界面类型修正 if this._ViewType == PLAYER_INFO_VIEW_TYPE.NORMAL and GoodFriendManager.IsInBlackList(this._PlayerId) then this._ViewType = PLAYER_INFO_VIEW_TYPE.GO_TO_BLACK end this._Config = _ViewConfig[this._ViewType] -- 注册按钮事件 this.btnFunc = { [1] = this.Report, [2] = this.AddToBlackList, [3] = this.BeatHim, [4] = this.RemoveFromBlackList, [5] = this.GoToBlack, [6] = this.JumpServerBattle, [7] = this.JumpServerBattle_NORMAL, [8] = this.LingMaiFormaion, [9] = this.LingMaiQieCuo, } end -- 设置界面类型 function PlayerInfoPopup:SetViewType(viewType) this._ViewType = viewType or PLAYER_INFO_VIEW_TYPE.NORMAL this._Config = _ViewConfig[this._ViewType] this:OnShow() end --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function PlayerInfoPopup:OnShow() -- this.RefreshBtnShow() -- 请求数据 if this._ViewType == PLAYER_INFO_VIEW_TYPE.JUPMSERVER then this._Config.formationType = JumpServerManager.showRankType end LogGreen("角色Id:" .. tostring(this._PlayerId) .. " 编队Id:" .. tostring(this._Config.formationType)) if this._PlayerId > 0 then --如果PlayerId > 0 说明是真人或者机器人,为0暂时为灵脉使用,直接是怪物组,数据需要自己拼接 netserverName = nil if this.serverName and this.serverName ~= "" then --and this.serverName ~= PlayerManager.serverInfo.name netserverName = 1 end this.curPlayerData = {} NetManager.RequestPlayerInfo(this._PlayerId, this._Config.formationType, netserverName, 0, function(msg) -- 如果是好友更新好友数据 this.curPlayerData = msg.teamInfo curPlayerName = msg.teamInfo.name GoodFriendManager.UpdateFriendData(this._PlayerId, msg.teamInfo.level, JingJiShouWeiToEn(msg.teamInfo.name), msg.teamInfo.head, msg.teamInfo.headFrame) this._PlayerData = msg.teamInfo this.RefreshPlayerInfo(msg.teamInfo) local teamInfo = msg.teamInfo.team this.FormationAdapter(teamInfo) -- this.RefreshFunction() this.RefreshBtnShow() end) else --目前只给灵脉,如果还有其他请写明备注 this.InfoBtns:SetActive(false) this.InfoContentGrid:SetActive(false) this.pokemonObj:SetActive(false) this.weaponInfo:SetActive(false) this.extraInfo.Init(this, this.data, _ViewConfig[this._ViewType]) end end -- 刷新基础信息显示 local titleLiveStr local titleLive function this.RefreshPlayerInfo(data) local curname = "" if data.serverName and data.serverName ~= "" then curname = data.serverName .. " " .. data.name elseif this.serverName and this.serverName ~= "" then curname = this.serverName .. " " .. data.name else curname = data.name end this.memName.text = PracticeManager.SetNameColor(curname, data.practiceLevel) --data.name if (data.guildName ~= "") then this.memProfess.text = Language[10633] .. data.guildName --GUILD_GRANT_STR[data.position] else this.memProfess.text = Language[10633] .. Language[10086] end if data.arenaLvId > 0 then this.rankName.gameObject:SetActive(true) this.rankName.text = ConfigManager.GetConfigData(ConfigName.ArenaLevel, data.arenaLvId).ArenaLevelName else this.rankName.gameObject:SetActive(true) this.rankName.text = ArenaManager.GetArenaMyRankName() end -- 头像 if not _PlayerHead then _PlayerHead = SubUIManager.Open(SubUIConfig.PlayerHeadView, this.memHead.transform) end _PlayerHead:Reset() _PlayerHead:SetScale(Vector3.one * 0.85) _PlayerHead:SetHead(data.head) _PlayerHead:SetFrame(data.headFrame) _PlayerHead:SetLevel(data.level) _PlayerHead:SetLayer(this.sortingOrder) _PlayerHead:SetEffectScale(0.9) local title = data.userTitle if title and title > 0 then this.titlePar:SetActive(true) if titleLive then SubUIManager.Close(titleLive) titleLive = nil end if not titleLive then titleLive = SubUIManager.Open(SubUIConfig.PlayerTitle, this.titlePar.transform) titleLive:SetShow(title, Vector3.New(0, 0, 0), 0.5, 0.03 * 20, this.sortingOrder) end else this.titlePar:SetActive(false) end end function this:OnSortingOrderChange() if _PlayerHead then _PlayerHead:SetLayer(self.sortingOrder) end for i, demon in ipairs(this.Demons) do Util.SetParticleSortLayer(demon.starGrid, self.sortingOrder + 1) end end -- 刷新功能区 function this.RefreshFunction() this.addFriendBtn:SetActive(false) this.starBox:SetActive(false) if this._ViewType == PLAYER_INFO_VIEW_TYPE.NORMAL or this._ViewType == PLAYER_INFO_VIEW_TYPE.MIND_DEMON then this.addFriendBtn:SetActive(true) local isSelf = this._PlayerId == PlayerManager.uid local isMyFriend = isSelf and true or GoodFriendManager.IsMyFriend(this._PlayerId) local isApplyed = this._PlayerData.isApplyed == 1 Util.SetGray(this.addFriendBtn, isMyFriend or isApplyed) this.addFriendBtnText.text = isApplyed and Language[10816] or Language[10937] end end -- 编队数据匹配 function this.FormationAdapter(teamInfo) --====================编队信息====================== this.formationTip.text = _ViewConfig[this._ViewType].tip -- 战斗力 this.memPower.text = teamInfo.totalForce for i, demon in ipairs(this.Demons) do demon.frame.sprite = this.spLoader:LoadSprite(GetQuantityImageByquality(1)) demon.hero:SetActive(false) demon.frame.transform:GetComponent("Button").enabled = false end --队伍阵容 for i, hero in ipairs(teamInfo.team) do local demonId = teamInfo.team[i].heroTid if demonId then this.Demons[hero.position].hero:SetActive(true) local star, starType = GetStarOrGodSoulLv(1, hero) local starSize = Vector2.New(35, 35) local starScale = -8 if starType == 3 then starSize = Vector2.New(1, -15.65) starScale = -13 elseif starType == 2 then starSize = Vector2.New(60, 57) end SetHeroStars(this.spLoader, this.Demons[hero.position].starGrid, star, starType, starSize, starScale) Util.SetParticleSortLayer(this.Demons[hero.position].starGrid, this.sortingOrder + 1) local heroConfig = ConfigManager.GetConfigData(ConfigName.HeroConfig, demonId) this.Demons[hero.position].proIcon.sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(hero.propertyId)) this.Demons[hero.position].levelText.text = hero.level this.Demons[hero.position].frame.sprite = this.spLoader:LoadSprite(GetQuantityImageByquality( heroConfig.Quality, hero.star)) SetHeroIcon(this.spLoader, hero, this.Demons[hero.position].icon, heroConfig) SetHeroFlyEffect(this.Demons[hero.position].hero, this.spLoader, hero.star, this.sortingOrder + 1, 0.9, 2) local heroData = {} local frameBtn = this.Demons[hero.position].frameBtn frameBtn.transform:GetComponent("Button").enabled = true if this._Config.formationType == FormationTypeDef.FORMATION_TSLX then Util.AddOnceClick(frameBtn, function() UIManager.OpenPanel(UIName.RoleGetInfoPopup, false, demonId, hero.star) end) else Util.AddOnceClick(frameBtn, function() if not hero.heroid or not heroConfig then return end NetManager.ViewHeroInfoRequest(this._PlayerId, hero.heroid, netserverName, this._Config .formationType, function(msg) heroData = GoodFriendManager.GetHeroDatas(msg.hero, msg.force, msg.SpecialEffects, msg .guildSkill) GoodFriendManager.InitEquipData(msg.equip, heroData) --HeroManager.GetSingleHeroData(heroData.dynamicId) LogError("msg.playerGiftLv===================" .. msg.playerGiftLv) for k, v in pairs(heroData.potential) do v.giftLv = msg.playerGiftLv end UIManager.OpenPanel(UIName.RoleInfoPopup, heroData, true) end) end) end end end local len = #teamInfo.PokemonInfos -- LogError("长度:"..len) if len > 0 then this.pokemonObj:SetActive(true) for i, demon in ipairs(this.Pokemons) do demon.gameObject:SetActive(false) Util.GetGameObject(demon, "frame"):GetComponent("Image").sprite = this.spLoader:LoadSprite( GetQuantityImageByquality(1)) Util.GetGameObject(demon, "hero"):SetActive(false) Util.GetGameObject(demon, "pos"):SetActive(true) end else this.pokemonObj:SetActive(false) end --====================队伍灵兽信息====================== for i, hero in ipairs(teamInfo.PokemonInfos) do local demonId = teamInfo.PokemonInfos[i].heroTid this.Pokemons[i].gameObject:SetActive(true) if demonId then local heroGo = Util.GetGameObject(this.Pokemons[i], "hero") heroGo:SetActive(true) local starSize = Vector2.New(35, 35) local star = hero.star local type = 1 local starScale = -10 if star > 5 then star = star + 5 starSize = Vector2.New(0.8, -25) starScale = -20 type = 3 else starScale = -15 end Util.GetGameObject(this.Pokemons[i], "pos"):SetActive(false) local grid = Util.GetGameObject(heroGo, "starGrid") SetHeroStars(this.spLoader, grid, star, type, starSize, starScale) --SetHeroStars(this.spLoader,grid ,star,type,starSize, starScale,Vector2.New(0.5,1)) Util.AddParticleSortLayer(Util.GetGameObject(heroGo, "starGrid"), this.sortingOrder + 1) local heroConfig = ConfigManager.GetConfigData(ConfigName.SpiritAnimal, demonId) Util.GetGameObject(heroGo, "lvbg/levelText"):GetComponent("Text").text = hero.level Util.GetGameObject(this.Pokemons[i], "frame"):GetComponent("Image").sprite = this.spLoader:LoadSprite( GetQuantityImageByquality(heroConfig.Quality)) Util.GetGameObject(heroGo, "icon"):GetComponent("Image").sprite = this.spLoader:LoadSprite(GetResourcePath( heroConfig.Icon)) local frameBtn = Util.GetGameObject(this.Pokemons[i], "frame") local heroData = {} Util.AddOnceClick(frameBtn, function() local pokemonData = { tempId = demonId, id = demonId, star = hero.star, level = hero.level } UIManager.OpenPanel(UIName.PokemonGetInfoPopup, true, pokemonData) end) end end --====================队伍神兵信息====================== local len2 = #teamInfo.MagicSoldier LogError("长度:" .. len) if len2 > 0 and type(teamInfo.MagicSoldier[1].heroTid) ~= "userdata" then LogError("teamInfo.MagicSoldier[1].heroTid==" .. teamInfo.MagicSoldier[1].heroTid) this.weaponInfo:SetActive(true) for i, demon in ipairs(this.Weapons) do --demon.gameObject:SetActive(false) Util.GetGameObject(demon, "frame"):GetComponent("Image").sprite = this.spLoader:LoadSprite( GetQuantityImageByquality(1)) Util.GetGameObject(demon, "hero"):SetActive(false) Util.GetGameObject(demon, "pos"):SetActive(true) end else this.weaponInfo:SetActive(false) end for i, hero in ipairs(teamInfo.MagicSoldier) do local demonId = teamInfo.MagicSoldier[i].heroTid --this.Weapons[].gameObject:SetActive(true) if demonId then LogError("hero.position==" .. teamInfo.MagicSoldier[i].position) local heroGo = Util.GetGameObject(this.Weapons[hero.position], "hero") heroGo:SetActive(true) SetHeroStars(this.spLoader, Util.GetGameObject(heroGo, "starGrid"), hero.star, 1) local heroConfig = ConfigManager.GetConfigData(ConfigName.ShenBing, demonId) Util.GetGameObject(this.Weapons[hero.position], "pos"):SetActive(false) Util.GetGameObject(heroGo, "lvbg/levelText"):GetComponent("Text").text = hero.level Util.GetGameObject(this.Weapons[hero.position], "frame"):GetComponent("Image").sprite = this.spLoader :LoadSprite(GetQuantityImageByquality(heroConfig.Quality)) Util.GetGameObject(heroGo, "icon"):GetComponent("Image").sprite = this.spLoader:LoadSprite(GetResourcePath( heroConfig.Icon)) local frameBtn = Util.GetGameObject(this.Weapons[hero.position], "frame") local heroData = {} Util.AddOnceClick(frameBtn, function() local pokemonData = { tempId = demonId, id = demonId, star = hero.star, level = hero.level } UIManager.OpenPanel(UIName.GodWeaponGetInfoPopup, true, pokemonData) end) end end --====================其他信息按钮显示====================== this.infoIndex = 0 for index, value in ipairs(InfoBtns) do LogError("teamInfo.giftEquipIds len=============" .. #teamInfo.giftEquipIds) --添加按钮 local item = this.InfoBtnsList[index] if not item then item = newObjToParent(this.infoBtnPre, this.InfoBtnsGrid.transform) this.InfoBtnsList[index] = item item.gameObject:SetActive(true) end local name = Util.GetGameObject(item, "btnName"):GetComponent("Text") name.text = value.name --判断按钮是否显示 if (index == 1 and teamInfo.sealShow and #teamInfo.sealShow > 0) or --神印 (index == 2 and teamInfo.transformationCardInfo and #teamInfo.transformationCardInfo > 0) or --身外化身 (index == 3 and teamInfo.sixiangxinfaInfo and #teamInfo.sixiangxinfaInfo > 0) or --四象心法 (index == 5 and teamInfo.userMountInfo and #teamInfo.userMountInfo > 0) then --坐骑 item.gameObject:SetActive(true) if this.infoIndex == 0 then this.infoIndex = index end elseif (index == 4 and teamInfo.gemNews and #teamInfo.gemNews > 0) then --命石 -- local num = 0 -- for i = 1, #teamInfo.gemNews do -- local data = teamInfo.gemNews[i] -- if data.itemId and data.itemId > 0 then -- num = num + 1 -- end -- end item.gameObject:SetActive(#teamInfo.gemNews > 0) if this.infoIndex == 0 then this.infoIndex = index end elseif (index == 6 and teamInfo.giftEquipIds and #teamInfo.giftEquipIds > 0) then item.gameObject:SetActive(#teamInfo.giftEquipIds > 0) if this.infoIndex == 0 then this.infoIndex = index end else item.gameObject:SetActive(false) end --添加点击事件 Util.AddOnceClick(item, function() this.infoIndex = index this.ShowInfos(teamInfo) end) end --初始化一次 if this.infoIndex == 0 then this.InfoBtns:SetActive(false) this.InfoContentGrid:SetActive(false) else this.InfoBtns:SetActive(true) this.InfoContentGrid:SetActive(true) this.ShowInfos(teamInfo) end end --选择展示下方框框中显示的内容 function this.ShowInfos(teamInfo) for index, value in ipairs(this.InfoBtnsList) do local img = value:GetComponent("Image") local text = Util.GetGameObject(value, "btnName"):GetComponent("Text") if this.infoIndex == index then img.sprite = this.spLoader:LoadSprite("Btn_hz_tongyong_001") --text.color = Color.New(253 / 255, 244 / 255, 214 / 255, 1) else img.sprite = this.spLoader:LoadSprite("UI_hz_gonghui_28") --text.color = Color.New(181 / 255, 164 / 255, 129 / 255, 1) end Util.GetGameObject(this.InfoContent, InfoBtns[index].gridName):SetActive(false) end local MainContent = Util.GetGameObject(this.InfoContent, InfoBtns[this.infoIndex].gridName) local Grid = Util.GetGameObject(MainContent, "Grid") MainContent:SetActive(true) if not this.ItemPreList[this.infoIndex] then this.ItemPreList[this.infoIndex] = {} end for i = 1, #this.ItemPreList[this.infoIndex] do this.ItemPreList[this.infoIndex][i].gameObject:SetActive(false) end InfoBtns[this.infoIndex].func(teamInfo, Grid) end --===========================滑动条中的信息展示==================== --神印的 function this.imprintInfoShow(teamInfo, Grid) for i = 1, #teamInfo.sealShow do local item = this.ItemPreList[this.infoIndex][i] local value = teamInfo.sealShow[i] if not item then item = newObjToParent(this.imprintPre, Grid.transform) item:SetActive(true) this.ItemPreList[this.infoIndex][i] = item end item.gameObject:SetActive(true) local icon = Util.GetGameObject(item, "icon"):GetComponent("Image") icon.sprite = this.spLoader:LoadSprite(GetResourcePath(XiuXianSkillConfig[value.id].Icon)) Util.AddOnceClick(item.gameObject, function() UIManager.OpenPanel(UIName.GeneralInfoPopup, GENERALINFO_TYPE.Imprint, value.id, value.heroTId) end) end end --身外化身 function this.huashenInfoShow(teamInfo, Grid) -- for i = 1, #teamInfo.transformationCardInfo do -- local data = teamInfo.transformationCardInfo[i] -- LogGreen("身外化身卡 id:"..tostring(data.id).." 位置:"..tostring(data.index).." 状态:"..tostring(data.status)) -- end for i = 1, #teamInfo.transformationCardInfo do local item = this.ItemPreList[this.infoIndex][i] local value = teamInfo.transformationCardInfo[i] if not item then item = newObjToParent(this.emptyPre, Grid.transform) item:SetActive(true) this.ItemPreList[this.infoIndex][i] = item local itemview = SubUIManager.Open(SubUIConfig.ItemView, item.transform) this.ItemList[i] = itemview this.ItemList[i].transform:SetSiblingIndex(1) end this.ItemList[i]:OnOpen(false, { ChangingCard[value.id].CardId, 0, 0, value.level, value.star }, 1, false, false, false, this.sortingOrder) Util.GetGameObject(item, "Name"):GetComponent("Text").text = ItemConfig[ChangingCard[value.id].CardId].Name Util.GetGameObject(item, "lvbg/levelText"):GetComponent("Text").text = value.level Util.GetGameObject(item, "lvbg"):SetActive(true) local starGrid = Util.GetGameObject(item, "starGrid") starGrid.gameObject:SetActive(true) for i = 0, 5 do if i < value.star then starGrid.transform:GetChild(i).gameObject:SetActive(true) else starGrid.transform:GetChild(i).gameObject:SetActive(false) end end this.ItemList[i].gameObject:SetActive(true) item:SetActive(true) end end --四象心法 function this.fourElementInfoShow(teamInfo, Grid) local textList = {} local TRANS = { [1] = 2, [2] = 1, [3] = 3, [4] = 4, } for i = 1, 4 do textList[i] = Util.GetGameObject(Grid, "fourPre (" .. i .. ")/lv/Text") textList[i]:GetComponent("Text").text = "0" end for i = 1, #teamInfo.sixiangxinfaInfo do local data = teamInfo.sixiangxinfaInfo[i] -- LogYellow("四象心法 职业id:"..tostring(data.professionId).." 等级:"..tostring(data.level)) textList[TRANS[data.professionId]]:GetComponent("Text").text = data.level end end --命格 function this.GemInfoShow(teamInfo, Grid) -- local iconList = {} -- local levelList = {} -- for i = 1, 8 do -- iconList[i] = {} -- levelList[i] = {} -- for j = 1, 3 do -- iconList[i][j] = Util.GetGameObject(Grid,"item ("..i..")/stone ("..j..")/icon") -- levelList[i][j] = Util.GetGameObject(Grid,"item ("..i..")/stone ("..j..")/Text") -- iconList[i][j]:SetActive(false) -- levelList[i][j]:GetComponent("Text").text = "" -- end -- end -- for i = 1, #teamInfo.lifeGridInfo do -- local data = teamInfo.lifeGridInfo[i] -- -- LogBlue("命格 id:"..tostring(data.gridId).." 位置:"..tostring(data.gridIndex).." 命石Id:"..tostring(data.itemId)) -- if data.itemId and data.itemId > 0 then -- iconList[data.gridId][data.gridIndex]:GetComponent("Image").sprite = this.spLoader:LoadSprite(GetSpriteNameByItemId(data.itemId)) -- levelList[data.gridId][data.gridIndex]:GetComponent("Text").text = GemConfig[data.itemId].Level -- iconList[data.gridId][data.gridIndex]:SetActive(true) -- end -- end --队伍命石信息 local gems = teamInfo.gemNews if gems and #gems > 0 then this.newGemInfo:SetActive(false) for i = 1, 16 do if gems[i] then this.newGems[i]:SetActive(true) local data = GemNewManager.ChangeOneGemData(gems[i]) Util.GetGameObject(this.newGems[i], "frame"):GetComponent("Image").sprite = this.spLoader:LoadSprite( data.frame) Util.GetGameObject(this.newGems[i], "hero/icon"):GetComponent("Image").sprite = this.spLoader:LoadSprite( data.icon) local frameBtn = Util.GetGameObject(this.newGems[i], "frame") local heroData = {} Util.AddOnceClick(frameBtn, function() UIManager.OpenPanel(UIName.RewardGemSingleShowPopup, data, 3) end) else this.newGems[i]:SetActive(false) end end else this.newGemInfo:SetActive(false) end end --坐骑 function this.RideInfoShow(teamInfo, Grid) -- for i = 1, #teamInfo.userMountInfo do -- local data = teamInfo.userMountInfo[i] -- LogPink("坐骑 id:"..tostring(data.mountId).." 过期时间:"..tostring(data.overTime)) -- end for i = 1, #teamInfo.userMountInfo do local item = this.ItemPreList[this.infoIndex][i] local value = teamInfo.userMountInfo[i] if not item then item = SubUIManager.Open(SubUIConfig.ItemView, Grid.transform) this.ItemPreList[this.infoIndex][i] = item end item:OnOpen(false, { value.mountId, 0 }, 1, true, false, false, this.sortingOrder) item.gameObject:SetActive(true) end if #teamInfo.userMountInfo > 4 then -- Grid:GetComponent("HorizontalLayoutGroup").padding.left = 30 Grid:GetComponent("RectTransform").pivot = Vector2.New(0, 0.5) else -- Grid:GetComponent("HorizontalLayoutGroup").padding.left = -30 Grid:GetComponent("RectTransform").pivot = Vector2.New(0.5, 0.5) end end --礼物 function this.GiftInfoShow(teamInfo, Grid) for i = 1, #teamInfo.giftEquipIds do local item = this.ItemPreList[this.infoIndex][i] local value = teamInfo.giftEquipIds[i] if not item then item = SubUIManager.Open(SubUIConfig.ItemView, Grid.transform) this.ItemPreList[this.infoIndex][i] = item end item:OnOpen(false, { value, 0 }, 1, true, false, false, this.sortingOrder) item.gameObject:SetActive(true) end if #teamInfo.giftEquipIds > 4 then -- Grid:GetComponent("HorizontalLayoutGroup").padding.left = 30 Grid:GetComponent("RectTransform").pivot = Vector2.New(0, 0.5) else -- Grid:GetComponent("HorizontalLayoutGroup").padding.left = -30 Grid:GetComponent("RectTransform").pivot = Vector2.New(0.5, 0.5) end end --============================底部按钮显示=========================== function this.RefreshBtnShow() this.btnBox:SetActive(true) -- 按钮功能 local btnType = this._Config.btnType or {} for index, btn in ipairs(this.btnList) do btn:SetActive(btnType[index] ~= nil) if btnType[index] then Util.GetGameObject(btn, "Text"):GetComponent("Text").text = btnType[index].name Util.AddOnceClick(btn, function() local funcType = btnType[index].func if not this.btnFunc[funcType] then Log("方法不存在") return end this.btnFunc[funcType](btnType[index].param) end) end end -- 自己 if this._PlayerId == PlayerManager.uid or curPlayerName == Language[12230] then --this.boxLine:SetActive(false) this.btnBox:SetActive(false) this.addFriendBtn:SetActive(false) end -- 判断该界面类型是否有按钮显示 if not this._Config or not this._Config.btnType or isNpc then --this.boxLine:SetActive(false) this.btnBox:SetActive(false) this.addFriendBtn:SetActive(false) end this.addFriendBtn:SetActive(this._Config.isAddFriend) --一些按钮需要特殊显示 this.SpecialBtnShow() end --按钮特殊显示 function this.SpecialBtnShow() if this._ViewType == PLAYER_INFO_VIEW_TYPE.LINGMAIMIJING then this.btnBox:SetActive(true) local bool = this._PlayerId == PlayerManager.uid if UIManager.IsOpen(UIName.RankingSingleListPanel) then this.btnList[1]:SetActive(not bool) this.btnList[2]:SetActive(false) this.btnList[3]:SetActive(false) else this.btnList[1]:SetActive(not bool) this.btnList[2]:SetActive(not bool) this.btnList[3]:SetActive(bool) if LingMaiMiJingManager.myPlaceId ~= 0 and LingMaiMiJingManager.myPlaceId < this.data.Id then this.btnList[2]:SetActive(false) end end --临时修改如果灵脉已占领无法抢夺挑战 if this._PlayerId > 0 then this.btnBox:SetActive(false) end end end ----=============================== 按钮事件================================== -- 举报 function this.Report() Log("举报") end -- 拉黑 function this.AddToBlackList() if this.serverName and this.serverName ~= "" then PopupTipPanel.ShowTip("无法跨服添加黑名单") return end if not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.GOODFRIEND) then PopupTipPanel.ShowTip(Language[10828]) return end if table.nums(GoodFriendManager.blackFriendList) >= GoodFriendManager.blackFriendLimit then PopupTipPanel.ShowTip(Language[11503]) return end GoodFriendManager.RequestAddToBlackList(this._PlayerId, function() PopupTipPanel.ShowTip(Language[11504]) this:SetViewType(PLAYER_INFO_VIEW_TYPE.GO_TO_BLACK) end) end -- 移除黑名单 function this.RemoveFromBlackList() if not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.GOODFRIEND) then PopupTipPanel.ShowTip(Language[10828]) return end GoodFriendManager.RequestDeleteFromBlackList(this._PlayerId, function() PopupTipPanel.ShowTip(Language[11505]) this:ClosePanel() end) end -- 移除黑名单 function this.GoToBlack() if not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.GOODFRIEND) then PopupTipPanel.ShowTip(Language[10828]) return end this:ClosePanel() UIManager.OpenPanel(UIName.GoodFriendMainPanel, true, 4) end -- 打他 function this.BeatHim() this:ClosePanel() UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.PLAY, this._PlayerData) end -- 跨服天梯 function this.JumpServerBattle() this:ClosePanel() UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.JUMPSERVER_HIGHTLADDER, true, this._PlayerData) end -- 跨服天梯 function this.JumpServerBattle_NORMAL() this:ClosePanel() UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.PLAY, this._PlayerData, true) end --灵脉秘境 function this.LingMaiFormaion() if this.data.uid == PlayerManager.uid then this:ClosePanel() Log("调整编队") UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.LINGMAIMIJING, this.data) else LingMaiMiJingManager.CheckPrivilage(function() this:ClosePanel() Log("正常战斗") UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.LINGMAIMIJING, this.data) end) end end --灵脉秘境 function this.LingMaiQieCuo() this:ClosePanel() local sdata = {} sdata.uid = this._PlayerId sdata.name = this.curPlayerData.name sdata.head = this.curPlayerData.head sdata.headFrame = this.curPlayerData.headFrame UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.LINGMAIMIJING, sdata, true) end --=====================================按钮事件结束====================================== --界面关闭时调用(用于子类重写) function PlayerInfoPopup:OnClose() -- this.imprintObj:SetActive(false) JumpServerManager.SetCurPersonInfo(nil) if titleLive then SubUIManager.Close(titleLive) titleLive = nil end curPlayerData = {} end --界面销毁时调用(用于子类重写) function PlayerInfoPopup:OnDestroy() this.spLoader:Destroy() -- 头像 if _PlayerHead then _PlayerHead:Recycle() _PlayerHead = nil end titleLive = nil titleLiveStr = nil -- this.imprintItemList = {} this.InfoBtnsList = {} this.ItemPreList = {} this.Demons = {} if this.extraInfo then this.extraInfo.OnDestroy() end end return PlayerInfoPopup