/// <summary> /// 移除申请 /// </summary> /// <param name="groupId"></param> /// <param name="playerId"></param> public void RemoveApply(int groupId, int playerId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } for (int i = 0; i < group.ApplyList.Count; ++i) { if (group.ApplyList[i].id == playerId) { group.ApplyList.RemoveAt(i); break; } } group.hasNewApply = group.ApplyList.Count > 0; TransferData data = new TransferData(); data.SetValue("GroupId", groupId); data.SetValue("PlayerId", playerId); data.SetValue("HasNewApply", group.hasNewApply); SendNotification(ON_GROUP_REMOVE_APPLY, data); }
/// <summary> /// 进入房间 /// </summary> /// <param name="obj"></param> private void OnEnterRoom(TransferData data) { ChatGroupEntity group = data.GetValue <ChatGroupEntity>("GroupEntity"); if (group.id != m_GroupId) { return; } int roomId = data.GetValue <int>("RoomId"); PlayerEntity player = data.GetValue <PlayerEntity>("PlayerEntity"); for (int i = 0; i < m_RoomList.Count; ++i) { if (m_RoomList[i].RoomId != roomId) { continue; } UIItemChatRoom room = m_RoomList[i]; for (int j = 0; j < room.PlayerList.Count; ++j) { if (room.PlayerList[j].PlayerId == 0) { room.PlayerList[j].SetUI(group.id, roomId, player.id, player.avatar, group.isOwner); break; } } } }
/// <summary> /// 显示群列表 /// </summary> /// <param name="lst"></param> public void ShowGroupList(List <ChatGroupEntity> lst) { SetPageActive(lst.Count > 0 ? m_ExistGroup : m_NoneGroupPage); if (lst == null || lst.Count == 0) { return; } for (int i = 0; i < m_GroupList.Count; ++i) { UIItemChatGroup item = m_GroupList[i]; UIPoolManager.Instance.Despawn(item.transform); } m_GroupList.Clear(); for (int i = 0; i < lst.Count; ++i) { ChatGroupEntity group = lst[i]; UIItemChatGroup item = UIPoolManager.Instance.Spawn("UIItemChatGroup").GetComponent <UIItemChatGroup>(); item.gameObject.SetParent(m_ChatGroupContainer); item.SetUI(group.id, group.name, group.avatar /*GetChatGroupHead(group.avatarIndex)*/, group.currMemberCount, group.maxMemberCount, group.roomCount); item.SetSelect(false); item.SetNewTip(group.hasNewApply); m_GroupList.Add(item); } }
/// <summary> /// 设置成员身份 /// </summary> /// <param name="groupId"></param> /// <param name="playerId"></param> /// <param name="isManager"></param> public void SetMemberIdentity(int groupId, int playerId, bool isManager, bool isPlayer) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } PlayerEntity player = GetMember(groupId, playerId); if (player == null) { return; } player.isManager = isManager; group.members.Sort(); TransferData data = new TransferData(); data.SetValue("GroupEntity", group); data.SetValue("PlayerEntity", player); data.SetValue("OneselfEntity", group.playerEntity); data.SetValue("IsPlayer", isPlayer); data.SetValue("Index", group.members.IndexOf(player)); SendNotification(ON_PLAYER_INFO_CHANGED, data); }
/// <summary> /// 添加成员 /// </summary> /// <param name="obj"></param> private void OnAddMember(TransferData data) { ChatGroupEntity group = data.GetValue <ChatGroupEntity>("GroupEntity"); if (group.id != m_GroupId) { return; } PlayerEntity playerEntity = data.GetValue <PlayerEntity>("PlayerEntity"); PlayerEntity oneselfEntity = data.GetValue <PlayerEntity>("OneselfEntity"); int index = data.GetValue <int>("Index"); UIItemChatMember item = UIPoolManager.Instance.Spawn("UIItemChatMember").GetComponent <UIItemChatMember>(); item.SetUI(group.id, playerEntity.id, playerEntity.nickname, playerEntity.online > 0, playerEntity.avatar, playerEntity.isOwner, playerEntity.isManager, oneselfEntity.isOwner, oneselfEntity.isManager); item.gameObject.SetParent(m_MemberContainer, true); item.transform.SetSiblingIndex(index); m_MemberList.Add(item); bool isPlayer = data.GetValue <bool>("IsPlayer"); if (isPlayer) { m_BtnManage.gameObject.SetActive(playerEntity.isManager || playerEntity.isOwner); } }
/// <summary> /// 设置成员状态 /// </summary> public void SetMemberStatus(int groupId, int playerId, long onLine) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } PlayerEntity player = GetMember(groupId, playerId); if (player == null) { return; } player.online = onLine; //group.members.Sort(); TransferData data = new TransferData(); data.SetValue("GroupEntity", group); data.SetValue("PlayerEntity", player); data.SetValue("OneselfEntity", group.playerEntity); data.SetValue("Index", group.members.IndexOf(player)); SendNotification(ON_PLAYER_INFO_CHANGED, data); }
public void RemoveRecord(int groupId, int battleId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } for (int i = 0; i < group.recordList.Count; ++i) { if (group.recordList[i].battleId == battleId) { group.recordList.RemoveAt(i); break; } } TransferData data = new TransferData(); data.SetValue("GroupId", groupId); data.SetValue("BattleId", battleId); SendNotification(ON_REMOVE_RECORD, data); }
/// <summary> /// 群信息变更 /// </summary> /// <param name="obj"></param> private void OnGroupInfoChanged(TransferData data) { ChatGroupEntity group = data.GetValue <ChatGroupEntity>("GroupEntity"); if (group == null) { return; } for (int i = 0; i < m_GroupList.Count; ++i) { if (group.id == m_GroupList[i].GroupId) { m_GroupList[i].SetUI(group.id, group.name, group.avatar, group.currMemberCount, group.maxMemberCount, group.roomCount); break; } } if (group.id == m_GroupId) { m_CurrentGroup.SetUI(group.id, group.name, group.avatar, group.currMemberCount, group.maxMemberCount, group.rooms.Count); } m_TxtPlayerCount.SafeSetText(string.Format("{0}人", group.currMemberCount, group.maxMemberCount)); m_TxtCards.SafeSetText(group.cards.ToString()); m_TxtWaitingRoomCount.SafeSetText(group.WaitingRoomCount.ToString()); m_TxtGamingRoomCount.SafeSetText(group.GamingRoomCount.ToString()); }
/// <summary> /// 移除房间 /// </summary> /// <param name="groupId">群Id</param> /// <param name="roomId">房间Id</param> public void RemoveRoom(int groupId, int roomId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } for (int i = 0; i < group.rooms.Count; ++i) { if (group.rooms[i].roomId == roomId) { group.rooms.RemoveAt(i); group.roomCount = group.rooms.Count; break; } } TransferData data = new TransferData(); data.SetValue("GroupId", groupId); data.SetValue("RoomId", roomId); SendNotification(ON_REMOVE_ROOM, data); SendGroupInfoChangedNotification(group); }
/// <summary> /// 获取群成员列表 /// </summary> /// <param name="groupId"></param> /// <returns></returns> public List <PlayerEntity> GetMemberList(int groupId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return(null); } return(group.members); }
/// <summary> /// 检测是否是群主 /// </summary> /// <param name="groupId">群Id</param> /// <param name="playerId">玩家Id</param> /// <returns></returns> public bool CheckOwner(int groupId, int playerId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return(false); } return(group.ownerId == playerId); }
private void OnGroupInfoChanged(TransferData data) { ChatGroupEntity group = data.GetValue <ChatGroupEntity>("GroupEntity"); if (group == null) { return; } m_GroupCardCount = group.cards; m_TxtGroupCardCount.SafeSetText(group.cards.ToString()); }
/// <summary> /// 发送群信息变更消息 /// </summary> /// <param name="group"></param> private void SendGroupInfoChangedNotification(ChatGroupEntity group) { if (group == null) { return; } TransferData data = new TransferData(); data.SetValue("GroupEntity", group); SendNotification(ON_GROUP_INFO_CHANGED, data); }
/// <summary> /// 设置群房卡数量 /// </summary> /// <param name="groupId"></param> /// <param name="cards"></param> public void SetGroupCards(int groupId, int cards) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } group.cards += cards; SendGroupInfoChangedNotification(group); }
/// <summary> /// 添加新群 /// </summary> /// <param name="data"></param> private void OnAddGroup(TransferData data) { SetPageActive(m_ExistGroup); ChatGroupEntity group = data.GetValue <ChatGroupEntity>("ChatGroup"); UIItemChatGroup item = UIPoolManager.Instance.Spawn("UIItemChatGroup").GetComponent <UIItemChatGroup>(); item.gameObject.SetParent(m_ChatGroupContainer); item.SetUI(group.id, group.name, group.avatar /*GetChatGroupHead(group.avatarIndex)*/, group.currMemberCount, group.maxMemberCount, group.roomCount); item.SetSelect(false); item.SetNewTip(group.hasNewApply); m_GroupList.Add(item); }
/// <summary> /// 添加战绩 /// </summary> /// <param name="groupId"></param> /// <param name="record"></param> public void AddRecord(int groupId, RecordEntity record) { if (record == null) { return; } ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } if (!group.isRequested) { return; } for (int i = 0; i < group.recordList.Count; ++i) { if (group.recordList[i].battleId == record.battleId) { RemoveRecord(groupId, record.battleId); break; } } group.recordList.Add(record); TransferData data = new TransferData(); data.SetValue("GroupId", group.id); data.SetValue("BattleId", record.battleId); data.SetValue <int>("RoomId", record.roomId); data.SetValue <string>("DateTime", record.time); data.SetValue <string>("GameName", record.gameName); List <TransferData> lstPlayer = new List <TransferData>(); for (int i = 0; i < record.players.Count; ++i) { RecordPlayerEntity playerEntity = record.players[i]; TransferData playerData = new TransferData(); playerData.SetValue("PlayerId", playerEntity.id); playerData.SetValue("Avatar", playerEntity.avatar); playerData.SetValue("Gold", playerEntity.gold); playerData.SetValue("Nickname", playerEntity.nickname); lstPlayer.Add(playerData); } data.SetValue <List <TransferData> >("Player", lstPlayer); SendNotification(ON_ADD_RECORD, data); }
/// <summary> /// 清空申请人 /// </summary> public void ClearApply(int groupId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } while (group.ApplyList.Count > 0) { RemoveApply(groupId, group.ApplyList[0].id); } }
/// <summary> /// 清空房间 /// </summary> /// <param name="groupId">群Id</param> public void ClearRoom(int groupId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } while (group.rooms.Count > 0) { RemoveRoom(group.id, group.rooms[0].roomId); } }
/// <summary> /// 清空群成员 /// </summary> /// <param name="groupId">群Id</param> public void ClearMember(int groupId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } while (group.members.Count > 0) { RemoveMember(groupId, group.members[0].id); } }
/// <summary> /// 添加群 /// </summary> /// <param name="entity">群数据实体</param> public void AddGroup(ChatGroupEntity entity) { if (GetGroup(entity.id) != null)//有这个群的信息了就不加了 { AppDebug.LogWarning("这个群存在了"); return; } AllGroup.Add(entity); TransferData data = new TransferData(); data.SetValue("ChatGroup", entity); SendNotification(ON_ADD_GROUP, data); }
/// <summary> /// 添加群成员 /// </summary> /// <param name="groupId">群Id</param> /// <param name="entity">玩家数据实体</param> public void AddMember(int groupId, PlayerEntity entity, bool isPlayer) { if (entity == null) { return; } ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } if (GetMember(groupId, entity.id) != null) { AppDebug.LogWarning("这个玩家存在了"); return; } AppDebug.Log("玩家" + entity.nickname + "加入群" + group.name); if (group.ownerId == entity.id) { entity.isOwner = true; } if (!group.isRequested) { ++group.currMemberCount; } else { group.members.Add(entity); group.currMemberCount = group.members.Count; } group.members.Sort(); if (isPlayer) { group.playerEntity = entity; } TransferData data = new TransferData(); data.SetValue("GroupEntity", group); data.SetValue("PlayerEntity", entity); data.SetValue("IsPlayer", isPlayer); data.SetValue("Index", group.members.IndexOf(entity)); data.SetValue("OneselfEntity", group.playerEntity); SendNotification(ON_ADD_MEMBER, data); SendGroupInfoChangedNotification(group); }
/// <summary> /// 添加房间 /// </summary> /// <param name="groupId"></param> /// <param name="entity"></param> public void AddRoom(int groupId, RoomEntityBase entity, List <int> lstPlayerId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } if (entity == null) { return; } if (GetRoom(groupId, entity.gameId) != null) { AppDebug.LogWarning("房间存在了"); return; } AppDebug.Log("有一个新的房间"); if (lstPlayerId != null) { for (int i = 0; i < lstPlayerId.Count; ++i) { bool isExists = false; for (int j = 0; j < group.members.Count; ++j) { if (lstPlayerId[i] == group.members[j].id) { entity.players.Add(group.members[j]); isExists = true; break; } } if (!isExists) { entity.players.Add(null); } } } group.rooms.Add(entity); group.roomCount = group.rooms.Count; TransferData data = new TransferData(); data.SetValue("GroupEntity", group); data.SetValue("RoomEntity", entity); SendNotification(ON_ADD_ROOM, data); SendGroupInfoChangedNotification(group); }
/// <summary> /// 移除群 /// </summary> /// <param name="groupId">群Id</param> public void RemoveGroup(int groupId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } AllGroup.Remove(group); TransferData data = new TransferData(); data.SetValue("ChatGroup", group); SendNotification(ON_REMOVE_GROUP, data); }
/// <summary> /// 刷新申请 /// </summary> /// <param name="groupId"></param> /// <param name="playerId"></param> public void RefreshApply(int groupId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } Debug.Log("---------group.ApplyList-----------------" + group.ApplyList.Count); TransferData data = new TransferData(); data.SetValue("GroupId", groupId); data.SetValue("ApplyList", group.ApplyList); SendNotification(ON_GROUP_REFRESH_APPLY, data); }
public static int CreateChatGroup(ChatGroupInfo GroupInfo) { var _Context = new SystemContext(); var entity = new ChatGroupEntity() { GroupName = GroupInfo.GroupName, GroupDesc = GroupInfo.GroupDesc, CreateDate = DateTime.Now, CreateEmpID = GroupInfo.CreateEmpID, IsDelete = false, IsPublic = false }; _Context.ChatGroupEntity.Add(entity); _Context.SaveChanges(); // 将自己添加进组成员 _Context.ChatGroupEmpsEntity.Add(new ChatGroupEmpsEntity() { GroupID = entity.GroupID, EmpID = GroupInfo.CreateEmpID }); foreach (var id in GroupInfo.Emps) { if (id != GroupInfo.CreateEmpID) { _Context.ChatGroupEmpsEntity.Add(new ChatGroupEmpsEntity() { GroupID = entity.GroupID, EmpID = id }); } } _Context.SaveChanges(); var notifySrv = UnityContainerHelper.GetServer <WSHandler>(); notifySrv.Send(new { TargetGroup = entity.GroupID, MessageType = 104 }); return(entity.GroupID); }
/// <summary> /// 添加聊天消息 /// </summary> /// <param name="data"></param> private void OnAddMessage(TransferData data) { ChatGroupEntity group = data.GetValue <ChatGroupEntity>("GroupEntity"); if (group == null) { return; } MessageEntity message = data.GetValue <MessageEntity>("Message"); if (message == null) { return; } if (group.id != m_GroupId) { for (int i = 0; i < m_GroupList.Count; ++i) { if (m_GroupList[i].GroupId == group.id) { m_GroupList[i].SetNewTip(true); } } } else { int index = data.GetValue <int>("Index"); UIItemChatGroupMessage item = UIPoolManager.Instance.Spawn("UIItemChatGroupMessage").GetComponent <UIItemChatGroupMessage>(); item.SetUI(message.sendPlayer.avatar, message.message.ToUTF8String(), message.isPlayer); item.gameObject.SetParent(m_MessageContainer); m_MessageList.Add(item); item.transform.SetSiblingIndex(index); if (index > 0) { m_ScrollViewMessage.scrollView.DOVerticalNormalizedPos(0f, 0.2f); if (!m_MessageContainer.gameObject.activeInHierarchy) { m_NewMessageTip.SetActive(true); } } else { m_ScrollViewMessage.scrollView.DOVerticalNormalizedPos(0.99f, 0.2f); } } }
/// <summary> /// 获取房间 /// </summary> /// <param name="groupId">群Id</param> /// <param name="roomId">房间Id</param> /// <returns></returns> public RoomEntityBase GetRoom(int groupId, int roomId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return(null); } for (int i = 0; i < group.rooms.Count; ++i) { if (group.rooms[i].roomId == roomId) { return(group.rooms[i]); } } return(null); }
/// <summary> /// 申请加入群 /// </summary> public void SetNewApply(int groupId, bool hasNewApply) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return; } group.hasNewApply = hasNewApply; TransferData data = new TransferData(); data.SetValue("GroupId", groupId); data.SetValue("HasNewApply", group.hasNewApply); SendNotification(ON_GROUP_NEW_APPLY, data); }
/// <summary> /// 获取成员 /// </summary> /// <param name="groupId"></param> /// <param name="playerId"></param> /// <returns></returns> public PlayerEntity GetMember(int groupId, int playerId) { ChatGroupEntity group = GetGroup(groupId); if (group == null) { return(null); } for (int i = 0; i < group.members.Count; ++i) { if (group.members[i].id == playerId) { return(group.members[i]); } } return(null); }
/// <summary> /// 玩家信息变更 /// </summary> /// <param name="obj"></param> private void OnPlayerInfoChanged(TransferData data) { ChatGroupEntity group = data.GetValue <ChatGroupEntity>("GroupEntity"); if (group == null) { return; } if (group.id != m_GroupId) { return; } PlayerEntity player = data.GetValue <PlayerEntity>("PlayerEntity"); PlayerEntity oneselfEntity = data.GetValue <PlayerEntity>("OneselfEntity"); if (player == null) { return; } int index = data.GetValue <int>("Index"); for (int i = 0; i < m_MemberList.Count; ++i) { if (m_MemberList[i].PlayerId == player.id) { m_MemberList[i].SetUI(group.id, player.id, player.nickname, player.online > 0, player.avatar, player.isOwner, player.isManager, oneselfEntity.isOwner, oneselfEntity.isManager); m_MemberList[i].transform.SetSiblingIndex(index); break; } } bool isPlayer = data.GetValue <bool>("IsPlayer"); if (isPlayer) { m_BtnManage.gameObject.SetActive(player.isManager || player.isOwner); for (int i = 0; i < m_RoomPlayerList.Count; ++i) { m_RoomPlayerList[i].SetAuthority(player.isManager); } } }