internal bool LeaveGroup(GroupInfo group, GroupMemberInfo member) { if (null == group || null == member) { return(false); } if (member.Guid == group.CreatorGuid && group.Members.Count > 1) { m_Groups.Remove(group.CreatorGuid); group.CreatorGuid = group.Members[1].Guid; if (!m_Groups.ContainsKey(group.CreatorGuid)) { m_Groups.Add(group.CreatorGuid, group); } /// UserInfo leader = LobbyServer.Instance.DataProcessScheduler.GetUserInfo(group.CreatorGuid); if (null != leader) { JsonMessageWithGuid slgMsg = new JsonMessageWithGuid(JsonMessageID.ChangeCaptain); slgMsg.m_Guid = group.CreatorGuid; ArkCrossEngineMessage.Msg_LC_ChangeCaptain protoData = new ArkCrossEngineMessage.Msg_LC_ChangeCaptain(); protoData.m_CreatorGuid = group.CreatorGuid; slgMsg.m_ProtoData = protoData; JsonMessageDispatcher.SendDcoreMessage(leader.NodeName, slgMsg); } } bool result = group.Members.Remove(member); if (group.Members.Count == 0) { recycles.Enqueue(group); } return(result); }
private void HandleChangeCaptain(JsonMessage lobbyMsg) { RoleInfo role_info = LobbyClient.Instance.CurrentRole; if (null == role_info) { return; } GroupInfo group = role_info.Group; if (null == group) { return; } JsonData jsonData = lobbyMsg.m_JsonData; ArkCrossEngineMessage.Msg_LC_ChangeCaptain protoData = lobbyMsg.m_ProtoData as ArkCrossEngineMessage.Msg_LC_ChangeCaptain; if (null != protoData) { ulong group_id = protoData.m_CreatorGuid; if (role_info.Guid == group_id) { GfxSystem.PublishGfxEvent("ge_change_captain", "group"); } } }