Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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");
                }
            }
        }