/// <summary> /// 打开Tip /// </summary> private void OpenTip(TeamMemberVO data) { if (m_TipPrefab) { if (!m_TipInstance1) { m_TipInstance1 = m_TipPrefab.Spawn(TipBoxLeft); m_TipInstance1.GetComponent <RectTransform>().anchoredPosition = Vector2.zero; } LayoutFriendTip(m_TipInstance1, data); } else if (!m_TipPrefabLoading) { m_TipPrefabLoading = true; LoadPrefabFromPool(TIP_PREFAB, (prefab) => { if (Opened) { m_TipPrefab = prefab; OpenTipView(); } }); } }
/// <summary> /// 获取队伍列表 /// </summary> /// <param name="buf">协议内容</param> private void OnGetTeamList(KProtoBuf buf) { S2C_TEAM_MEMBER_LIST msg = buf as S2C_TEAM_MEMBER_LIST; TeamProxy teamProxy = GetTeamProxy(); for (int i = 0; i < msg.members.Count; i++) { TeamMemberVO data = CreateMember(msg.members[i]); teamProxy.AddMember(data); } GameFacade.Instance.SendNotification(NotificationName.MSG_TEAM_MEMBER_UPDATE); }
protected override void OnCellRenderer(int groupIndex, int cellIndex, object cellData, RectTransform cellView, bool selected) { UIViewListLayout style = State.GetPageLayoutStyle(State.GetPageIndex()); Animator animator = cellView.GetComponent <Animator>(); RectTransform content = FindComponent <RectTransform>(cellView, "Content"); if (animator) { animator.SetBool("IsOn", selected); } int page = groupIndex; int index = cellIndex; ulong infoVOId = 0; SocialElement m_SocialElement = cellView.GetComponent <SocialElement>(); if (m_SocialElement == null) { m_SocialElement = cellView.gameObject.AddComponent <SocialElement>(); m_SocialElement.Initialize(); } switch (m_SocialType) { case SocialType.Team: TeamMemberVO teamMemberVO = cellData as TeamMemberVO; m_SocialElement.SetTeamData(teamMemberVO, m_SocialType, new Vector2Int(groupIndex, cellIndex)); infoVOId = teamMemberVO.UID; break; case SocialType.Friend: FriendInfoVO friendInfoVO = cellData as FriendInfoVO; m_SocialElement.SetFriendData(friendInfoVO, m_SocialType); infoVOId = friendInfoVO.UID; break; case SocialType.Ship: FriendInfoVO Ship = cellData as FriendInfoVO; m_SocialElement.SetFriendData(Ship, m_SocialType); infoVOId = Ship.UID; break; case SocialType.Other: FriendInfoVO Other = cellData as FriendInfoVO; m_SocialElement.SetFriendData(Other, m_SocialType); infoVOId = Other.UID; break; default: break; } }
/// <summary> /// 填充队伍数据 /// </summary> public void SetTeamData(TeamMemberVO infoVO, UISocialList.SocialType socialType, Vector2Int vector2Int) { UIUtil.SetIconImage(m_TeamPosImage, (uint)m_TeamPosIcons[vector2Int.y]); if (infoVO.UID > 0) { m_NullElelment.gameObject.SetActive(false); m_Elelment.gameObject.SetActive(true); m_SocialType = socialType; SetContent(); m_LevelText.text = string.Format(TableUtil.GetLanguageString("character_text_1019"), infoVO.Level.ToString()); m_DanText.text = string.Format(TableUtil.GetLanguageString("social_text_1004"), infoVO.DanLevel.ToString()); m_PlayerName.text = infoVO.Name; if (infoVO.IsOnline) { m_TeamOnLineImage.gameObject.SetActive(true); } if (infoVO.TID > 0) { if (m_CfgEternityProxy.GetPlayerByItemTId(infoVO.TID) != null) { UIUtil.SetIconImage(m_TeamHeardImage, (uint)m_CfgEternityProxy.GetPlayerByItemTId(infoVO.TID).Value.HeadPortrait); } } if (m_FriendProxy.GetFriend(infoVO.UID) != null) //好友 { m_TeamFriendImage.gameObject.SetActive(true); } else { m_TeamFriendImage.gameObject.SetActive(false); } if (m_TeamProxy.GetMember(infoVO.UID) == null) { m_TeamHeaderImage.gameObject.SetActive(false); } else { if (m_TeamProxy.GetMember(infoVO.UID).IsLeader) //队长 { m_TeamHeaderImage.gameObject.SetActive(true); } else { m_TeamHeaderImage.gameObject.SetActive(false); } } } else { m_NullElelment.gameObject.SetActive(true); m_Elelment.gameObject.SetActive(false); } }
/// <summary> /// 更新队长ID /// </summary> public void UpdateLeaderID() { ulong old = m_CurrentCaptainID; for (int t = 0; t < m_Members.Count; t++) { TeamMemberVO member = m_Members[t]; if (member.IsLeader) { m_CurrentCaptainID = member.UID; break; } } }
/// <summary> /// 删除成员 /// </summary> /// <param name="playerID">队员ID</param> public void DelMember(ulong playerID) { TeamMemberVO member = null; for (int i = m_Members.Count - 1; i >= 0; i--) { if (m_Members[i].UID == playerID) { member = m_Members[i]; m_Members.RemoveAt(i); } } GameFacade.Instance.SendNotification(NotificationName.MSG_TEAM_MEMBER_UPDATE); }
/// <summary> /// 加载队伍数据 /// </summary> /// <param name="tip">tip物体</param> /// <param name="data">数据</param> private void LayoutFriendTip(GameObject tip, TeamMemberVO data) { if (data.UID > 0) { SetEmptyRootActive(false); Initialize(); m_PlayerName.text = data.Name; m_Level.text = string.Format(TableUtil.GetLanguageString("character_text_1019"), data.Level.ToString()); m_Rank.text = string.Format(TableUtil.GetLanguageString("social_text_1004"), data.DanLevel.ToString()); } else { SetEmptyRootActive(true); } }
/// <summary> /// 更新成员列表 /// </summary> /// <param name="members">新的队员列表</param> public void UpdateMember(List <TeamMemberVO> members) { m_Members.Clear(); m_CurrentCaptainID = 0; if (members != null) { for (int i = 0; i < members.Count; i++) { TeamMemberVO member = members[i]; m_Members.Add(member); } } UpdateLeaderID(); GameFacade.Instance.SendNotification(NotificationName.MSG_TEAM_MEMBER_UPDATE); }
/// <summary> /// 改变成员 /// </summary> /// <param name="id">队员ID</param> /// <param name="level">等级</param> /// <param name="isOnline">是否在线</param> /// <param name="isReady">是否准备好了</param> /// <param name="isLeader">是否为队长</param> public void SetMember(ulong id, int level, bool isOnline, bool isReady, bool isLeader, int areaId, ulong mapId, int danLevel) { TeamMemberVO member = GetMember(id); if (member != null) { member.Level = level; member.DanLevel = danLevel; member.IsOnline = isOnline; member.IsLeader = isLeader; member.AreaId = areaId; member.MapID = mapId; GameFacade.Instance.SendNotification(NotificationName.MSG_TEAM_MEMBER_UPDATE, member); GameFacade.Instance.SendNotification(NotificationName.MSG_TEAM_MEMBER_UPDATEAREA, member); } }
/// <summary> /// 界面添加队伍数据 /// </summary> /// <param name="title">标题</param> /// <param name="list">数据</param> /// <param name=""></param> public void AddTeamDataToView(List <TeamMemberVO> list, string title = null) { List <object> listRef = new List <object>(); if (list.Count == 0)//没有队伍 { //Debug.Log("没有队伍啦"); TeamMemberVO vo = new TeamMemberVO(); vo.UID = m_ServerListProxy.GetCurrentCharacterVO().UId; vo.Level = m_ServerListProxy.GetCurrentCharacterVO().Level; vo.DanLevel = m_ServerListProxy.GetCurrentCharacterVO().DanLevel; vo.Name = m_ServerListProxy.GetCurrentCharacterVO().Name; vo.TID = m_ServerListProxy.GetCurrentCharacterVO().Tid; listRef.Add(vo); for (int i = 0; i < 4; i++) { TeamMemberVO teamMemberVO = new TeamMemberVO(); teamMemberVO.UID = 0; listRef.Add(teamMemberVO); } } else { for (int i = 0; i < list.Count; i++) { listRef.Add((object)list[i]); } if (listRef.Count < 5) { while (listRef.Count < 5) { TeamMemberVO teamMemberVO = new TeamMemberVO(); teamMemberVO.UID = 0; listRef.Add(teamMemberVO); } } } if (title == null) { AddDatas(null, listRef); } else { AddDatas(title, listRef); } }
/// <summary> /// 创建队员数据 /// </summary> /// <param name="msg">协议数据</param> /// <returns>队员数据</returns> private TeamMemberVO CreateMember(TeamMember msg) { TeamMemberVO member = new TeamMemberVO(); member.UID = msg.id; member.TID = msg.tempid; member.Name = msg.name; Debug.Log(msg.position + "新成员名字===" + msg.name + "状态==" + msg.isOnline + "TID==" + msg.tempid + "死亡==" + msg.alive); Debug.Log(msg.areaid + "区域===地图" + msg.mapid + "===等级" + msg.level + "段位===" + msg.dan_level); member.Level = msg.level; member.DanLevel = msg.dan_level; member.IsOnline = msg.isOnline == 1; member.IsLeader = msg.position == 1; member.JoinTime = msg.jointime; member.IsDead = msg.alive == 0; member.AreaId = msg.areaid; member.MapID = msg.mapid; return(member); }
/// <summary> /// 邀请玩家组队 /// </summary> /// <param name="playerID">玩家ID</param> public void Invite(ulong playerID) { Debug.Log("邀请======>" + playerID); CfgLanguageProxy languageProxy = GameFacade.Instance.RetrieveProxy(ProxyName.CfgLanguageProxy) as CfgLanguageProxy; TeamMemberVO member = GetTeamProxy().GetMember(playerID); if (member != null) { //已在队伍里 Debug.Log("已在队伍里"); return; } C2S_TEAM_INVITE msg = new C2S_TEAM_INVITE(); msg.protocolID = (ushort)KC2S_Protocol.c2s_team_invite; msg.playerID = playerID; NetworkManager.Instance.SendToGameServer(msg); }
/// <summary> /// 添加成员 /// </summary> /// <param name="member">新的队伍成员</param> public void AddMember(TeamMemberVO member) { for (int i = m_Members.Count - 1; i >= 0; i--) { if (m_Members[i].UID == member.UID) { member.Name = m_Members[i].Name; member.HP = m_Members[i].HP; member.MaxHP = m_Members[i].MaxHP; member.Defense = m_Members[i].Defense; member.MaxDefense = m_Members[i].MaxDefense; //member.IsDead = m_Members[i].IsDead ; m_Members.RemoveAt(i); } } m_Members.Add(member); }
/// <summary> /// 切换队长 /// </summary> public void SwitchingCaptain(ulong CurrentID) { TeamMemberVO OldCaptain = null; if (m_CurrentCaptainID > 0) { if (GetMember(m_CurrentCaptainID) != null) { OldCaptain = GetMember(m_CurrentCaptainID); OldCaptain.IsLeader = false; } } if (CurrentID > 0) { for (int i = 0; i < m_Members.Count; i++) { m_Members[i].IsLeader = false; } TeamMemberVO CurrCaptain = GetMember(CurrentID); if (CurrCaptain != null) { CurrCaptain.IsLeader = true; m_CurrentCaptainID = CurrentID; } else { if (OldCaptain != null) { OldCaptain.IsLeader = true; } } } GameFacade.Instance.SendNotification(NotificationName.MSG_TEAM_MEMBER_UPDATE); }