using System; using System.Collections.Generic; using UnityEngine; public class OtherPlayerDetailWin : UIBase { [SerializeField] AvatarCell avatarCell; [SerializeField] OfficialTitleCell officialTitle; [SerializeField] HorseController horseModel; [SerializeField] TextEx txtPlayerName; [SerializeField] TextEx txtPlayerId; [SerializeField] TextEx txtServerName; [SerializeField] TextEx txtLV; [SerializeField] TextEx txtFightPower; [SerializeField] ButtonEx btnCopy; [SerializeField] ButtonEx btnGuild; [SerializeField] GuildEmblemCell guildEmblem; [SerializeField] TextEx txtGuildName; [SerializeField] OtherHeroFightingCardItem[] heroFightingCards; [SerializeField] OtherEquipCardItem[] equipCards; [SerializeField] ButtonEx btnMM; [SerializeField] TextEx txtMMCnt; [SerializeField] ButtonEx btnHorse; [SerializeField] HorseController horseController; [SerializeField] TextEx txtHorseLV; [SerializeField] ImageEx imgHorseBG; [SerializeField] ButtonEx btnBlock; [SerializeField] ButtonEx btnReport; [SerializeField] ButtonEx btnAddFriend; [SerializeField] ButtonEx btnPrivateChat; [SerializeField] ButtonEx btnMingge; [SerializeField] TextEx txtMinggeLv; [SerializeField] ButtonEx btnGubao; [SerializeField] TextEx txtGubaoLv; OtherPlayerDetailManager.ViewPlayerData viewPlayerData; OtherPlayerDetailManager manager { get { return OtherPlayerDetailManager.Instance; } } int funcPresetID = -1; //子方案ID protected override void InitComponent() { btnReport.SetListener(OnClickReport); btnCopy.SetListener(OnClickCopy); btnGuild.SetListener(OnClickGuild); btnMM.SetListener(OnClickMM); btnHorse.SetListener(OnClickHorse); btnMingge.SetListener(OnClickMingge); btnGubao.SetListener(OnClickGubao); } protected override void OnPreOpen() { GuildManager.Instance.OnUpdateViewFamilyInfo += OnUpdateViewFamilyInfo; funcPresetID = OtherPlayerDetailManager.Instance.GetFuncPresetID(manager.viewPlayer, functionOrder, (int)FuncPresetType.Global); Display(); } protected override void OnPreClose() { GuildManager.Instance.OnUpdateViewFamilyInfo -= OnUpdateViewFamilyInfo; } private void OnUpdateViewFamilyInfo() { if (viewPlayerData == null) { return; } if (!GuildManager.Instance.viewGuildsDict.ContainsKey(viewPlayerData.FamilyID)) { return; } if (!UIManager.Instance.IsOpened()) { UIManager.Instance.OpenWindow(viewPlayerData.FamilyID); } } private void Display() { viewPlayerData = manager.GetViewPlayerData(manager.viewPlayer); if (viewPlayerData == null) { Debug.LogError($"OtherPlayerDetailWin Display 未找到玩家ID{manager.viewPlayer}的数据"); CloseWindow(); return; } DisplayPlayerInfo(viewPlayerData); DisplayGuildInfo(viewPlayerData); int playerID = viewPlayerData.PlayerID; DisplayMM(playerID); var heroList = manager.GetHeroDataSortList(playerID, funcPresetID); if (heroList.IsNullOrEmpty()) { heroList = manager.GetHeroDataSortList(playerID, FuncPresetManager.FuncDefaultPresetID); } DisplayCard(heroList); long fightPonit; if (!manager.TryGetFightPointByTeamType(playerID, funcPresetID, out fightPonit)) { if (!manager.TryGetFightPointByTeamType(playerID, FuncPresetManager.FuncDefaultPresetID, out fightPonit)) { fightPonit = 0; } } txtFightPower.text = UIHelper.ReplaceLargeArtNum(fightPonit); var equipDict = manager.GetEquipDataDict(playerID); DisplayEquip(equipDict); DisplayGubao(playerID); DisplayMingge(playerID); } private void DisplayMM(int playerID) { OtherPlayerDetailManager.RolePlusData.BeautyData beautyData = manager.GetBeautyData(playerID); txtMMCnt.text = Language.Get("OtherPlayerDetail11", beautyData == null ? 0 : beautyData.Cnt); } private void DisplayGubao(int playerID) { OtherPlayerDetailManager.RolePlusData.GubaoData gubaoData = manager.GetGubaoData(playerID); txtGubaoLv.text = Language.Get("OtherPlayerDetail12", gubaoData == null ? 0 : gubaoData.Cnt); } private void DisplayMingge(int playerID) { var mingge = manager.GetMinggeTotalData(playerID); txtMinggeLv.text = Language.Get("OtherPlayerDetail13", mingge == null ? 0 : mingge.GWLV); } private void DisplayGuildInfo(OtherPlayerDetailManager.ViewPlayerData viewPlayerData) { if (viewPlayerData.FamilyEmblemID <= 0 || string.IsNullOrEmpty(viewPlayerData.FamilyEmblemWord)) { btnGuild.SetActive(false); return; } btnGuild.SetActive(true); guildEmblem.Display(viewPlayerData.FamilyEmblemID, viewPlayerData.FamilyEmblemWord, 0.35f); txtGuildName.text = viewPlayerData.FamilyName; } private void DisplayPlayerInfo(OtherPlayerDetailManager.ViewPlayerData viewPlayerData) { txtPlayerName.text = viewPlayerData.PlayerName; txtPlayerId.text = Language.Get("OtherPlayerDetail02", viewPlayerData.PlayerID); txtServerName.text = Language.Get("PlayerProfile11", ServerListCenter.Instance.GetServerName(viewPlayerData.ServerID)); txtLV.text = viewPlayerData.LV.ToString(); avatarCell.InitUI(AvatarHelper.GetAvatarModel(viewPlayerData.PlayerID, viewPlayerData.Face, viewPlayerData.FacePic)); officialTitle.InitUI(viewPlayerData.RealmLV, viewPlayerData.TitleID); DisplayHorseModel(viewPlayerData); } private void DisplayHorseModel(OtherPlayerDetailManager.ViewPlayerData viewPlayerData) { int horseSkinID = HorseManager.Instance.GetOtherPlayerHorseSkinID(viewPlayerData.EquipShowSwitch); int modelMark = viewPlayerData.ModelMark; // 如果 ModelMark 为 0,获取默认的 ModelMark if (modelMark == 0) { PhantasmPavilionManager.Instance.TryGetDefaultID(PhantasmPavilionType.Model, viewPlayerData.Job, out modelMark); } if (!ModelConfig.HasKey(modelMark)) { horseModel.SetActive(false); return; } horseModel.SetActive(true); var modelConfig = ModelConfig.Get(modelMark); int heroSkinID = modelConfig.SkinID; horseModel.Create(horseSkinID, heroSkinID, 1); OtherPlayerDetailManager.RolePlusData.HorseData horseData = manager.GetHorseData(viewPlayerData.PlayerID); imgHorseBG.SetActive(horseData != null); if (horseData != null) { txtHorseLV.text = Language.Get("Horse8", horseData.ClassLV, horseData.LV); horseController.Create(horseSkinID <= 0 ? 1 : horseSkinID, scale: 0.6f); } } private void DisplayCard(List heros) { if (heros.IsNullOrEmpty()) { return; } //显示卡牌 for (int i = 0; i < heroFightingCards.Length; i++) { if (i < heros.Count) { heroFightingCards[i].Display(i, heros); heroFightingCards[i].SetActive(true); } else { heroFightingCards[i].SetActive(false); } } } private void DisplayEquip(Dictionary equips) { if (equips.IsNullOrEmpty()) { return; } for (int i = 0; i < equipCards.Length; i++) { equipCards[i].Display(equips.TryGetValue(i, out var equipData) ? equipData : null); } } private void OnClickReport() { ConfirmCancel.ShowPopConfirm( Language.Get("L1003"), Language.Get("OtherPlayerDetail06", "山寨名字"), (bool isOK) => { if (isOK) { } }); } private void OnClickCopy() { if (viewPlayerData == null) { return; } UIHelper.CopyToClipboard(viewPlayerData.PlayerID.ToString()); SysNotifyMgr.Instance.ShowTip("CopySuccess"); } private void OnClickGuild() { if (viewPlayerData == null) { return; } //自己的公会 if (PlayerDatas.Instance.fairyData.HasFairy && PlayerDatas.Instance.fairyData.fairy.FamilyID == viewPlayerData.FamilyID) { SysNotifyMgr.Instance.ShowTip("GuildTip01"); return; } GuildManager.Instance.SendViewGuild(viewPlayerData.FamilyID, viewPlayerData.FamilyDataServerID); } private void OnClickMM() { if (viewPlayerData == null) { return; } int playerID = viewPlayerData.PlayerID; OtherPlayerDetailManager.RolePlusData.BeautyData beautyData = manager.GetBeautyData(playerID); AttributeManager.Instance.OpenSimpleAttributeWin(beautyData == null || beautyData.AttrDict == null ? new Dictionary() : beautyData.AttrDict, "AttributeTitle01"); } private void OnClickHorse() { if (viewPlayerData == null) { return; } int playerID = viewPlayerData.PlayerID; OtherPlayerDetailManager.RolePlusData.HorseData horseData = manager.GetHorseData(playerID); if (horseData == null) { return; } AttributeManager.Instance.OpenSimpleAttributeWin(horseData.AttrDict == null ? new Dictionary() : horseData.AttrDict, "AttributeTitle04"); } private void OnClickMingge() { if (viewPlayerData == null) return; int playerID = viewPlayerData.PlayerID; // 根据当前入口的战斗预设类型获取命格预设数据 var minggePresetData = manager.GetMinggePresetByBattleType(playerID, functionOrder); // 获取属性字典,如果为空则使用空字典 var attrDict = minggePresetData?.AttrDict ?? new Dictionary(); var skillDict = minggePresetData?.SkillDic ?? new Dictionary(); // 打开属性窗口 AttributeManager.Instance.OpenMinggeSimpleAttributeWin(attrDict, skillDict); } private void OnClickGubao() { if (viewPlayerData == null) return; int playerID = viewPlayerData.PlayerID; OtherPlayerDetailManager.RolePlusData.GubaoData gubaoData = manager.GetGubaoData(playerID); AttributeManager.Instance.OpenSimpleAttributeWin(gubaoData == null || gubaoData.AttrDict == null ? new Dictionary() : gubaoData.AttrDict, "AttributeTitle02"); } }