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; 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); } protected override void OnPreOpen() { GuildManager.Instance.OnRefreshFairyList += OnRefreshFairyList; funcPresetID = OtherPlayerDetailManager.Instance.GetFuncPresetID(manager.viewPlayer, functionOrder, (int)FuncPresetType.Team); Display(); } protected override void OnPreClose() { GuildManager.Instance.OnRefreshFairyList -= OnRefreshFairyList; } private void OnRefreshFairyList() { if (viewPlayerData == null) { return; } if (!GuildManager.Instance.guildsDict.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); } private void DisplayMM(int playerID) { OtherPlayerDetailManager.RolePlusData.BeautyData beautyData = manager.GetBeautyData(playerID); txtMMCnt.text = Language.Get("OtherPlayerDetail08", beautyData == null ? 0 : beautyData.Cnt); } 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 == null ? 0 : horseData.ClassLV, horseData == null ? 0 : horseData.LV); horseController.Create(horseSkinID, 0, 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.SendFindGuildNoDecrypt(viewPlayerData.FamilyID.ToString()); } private void OnClickMM() { if (viewPlayerData == null) { return; } int playerID = viewPlayerData.PlayerID; OtherPlayerDetailManager.RolePlusData.BeautyData beautyData = manager.GetBeautyData(playerID); AttributeManager.Instance.OpenTotalAttributeWin(beautyData == null || beautyData.AttrDict == null ? new Dictionary() : beautyData.AttrDict); } private void OnClickHorse() { if (viewPlayerData == null) { return; } int playerID = viewPlayerData.PlayerID; OtherPlayerDetailManager.RolePlusData.HorseData horseData = manager.GetHorseData(playerID); if (horseData == null) { return; } AttributeManager.Instance.OpenTotalAttributeWin(horseData.AttrDict == null ? new Dictionary() : horseData.AttrDict); } }