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<GuildPreviewWin>())
|
{
|
UIManager.Instance.OpenWindow<GuildPreviewWin>(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<OtherPlayerDetailManager.RolePlusData.HeroData> 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<int, OtherPlayerDetailManager.RolePlusData.EquipData> 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<int, long>() : 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<int, long>() : 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<int, long>();
|
var skillDict = minggePresetData?.SkillDic ?? new Dictionary<int, int>();
|
// 打开属性窗口
|
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<int, long>() : gubaoData.AttrDict, "AttributeTitle02");
|
}
|
}
|