示例#1
0
        internal void DismissGroup(GroupInfo group)
        {
            if (null == group)
            {
                return;
            }
            UserInfo          leader = LobbyServer.Instance.DataProcessScheduler.GetUserInfo(group.CreatorGuid);
            TeamOperateResult result = TeamOperateResult.OR_Dismiss;

            foreach (GroupMemberInfo m in group.Members)
            {
                UserInfo user = LobbyServer.Instance.DataProcessScheduler.GetUserInfo(m.Guid);
                if (null != user)
                {
                    JsonMessageWithGuid msg = new JsonMessageWithGuid(JsonMessageID.SyncLeaveGroup);
                    msg.m_Guid = m.Guid;
                    ArkCrossEngineMessage.Msg_LC_SyncLeaveGroup protoData = new ArkCrossEngineMessage.Msg_LC_SyncLeaveGroup();
                    if (null != leader)
                    {
                        protoData.m_GroupNick = leader.Nickname;
                    }
                    protoData.m_Result = (int)result;
                    msg.m_ProtoData    = protoData;
                    JsonMessageDispatcher.SendDcoreMessage(leader.NodeName, msg);
                    user.Group = null;
                }
            }
            m_Groups.Remove(group.CreatorGuid);
            if (null != group.Members)
            {
                group.Members.Clear();
            }
            recycles.Enqueue(group);
        }
示例#2
0
        private void HandleConfirmJoinGroupResult(JsonMessage lobbyMsg)
        {
            JsonData jsonData = lobbyMsg.m_JsonData;

            ArkCrossEngineMessage.Msg_LC_ConfirmJoinGroupResult protoData = lobbyMsg.m_ProtoData as ArkCrossEngineMessage.Msg_LC_ConfirmJoinGroupResult;
            if (null != protoData)
            {
                string            nick   = protoData.m_Nick;
                TeamOperateResult result = (TeamOperateResult)protoData.m_Result;
                GfxSystem.PublishGfxEvent("ge_confirm_join_group_result", "group", nick, result);

                //Note:加入队伍,通知RC
                RoleInfo role_info = LobbyClient.Instance.CurrentRole;
                if (result == TeamOperateResult.OR_Succeed && role_info != null)
                {
                    if (role_info.Guid == role_info.Group.CreatorGuid)
                    {
                        GfxSystem.PublishGfxEvent("ge_joinABandWithBandId", "gt", role_info.Group.CreatorGuid.ToString());
                    }
                    else
                    {
                        GfxSystem.PublishGfxEvent("ge_joinABandWithBandId", "gt", role_info.Group.CreatorGuid.ToString());
                    }
                }
            }
        }
示例#3
0
    /*s申请加入结果*/
    void RequestJoinResult(string name, TeamOperateResult result)
    {
        RoleInfo role = LobbyClient.Instance.CurrentRole;

        switch (result)
        {
        case TeamOperateResult.OR_Succeed:
            if (role.Guid == role.Group.CreatorGuid)
            {
            }
            break;

        case TeamOperateResult.OR_Busyness:
            SendScreeTipCenter(564);
            break;

        case TeamOperateResult.OR_Exists:
            SendScreeTipCenter(576);
            break;

        case TeamOperateResult.OR_Overflow:
            SendScreeTipCenter(567);
            break;

        case TeamOperateResult.OR_Unknown:
            SendScreeTipCenter(568);
            break;

        case TeamOperateResult.OR_HasTeam:
            SendScreeTipCenter(569);
            break;
        }
    }
示例#4
0
    /*离开队伍结果*/
    void LeaveTeamResult(string name, TeamOperateResult result)
    {
        RoleInfo role = LobbyClient.Instance.CurrentRole;

        switch (result)
        {
        case TeamOperateResult.OR_Succeed:
            SendScreeTipCenter(571);
            role.Group.Reset();
            LogicSystem.EventChannelForGfx.Publish("ge_updata_member_info", "team");
            ClearItem();
            UIManager.Instance.HideWindowByName("Team");
            break;

        case TeamOperateResult.OR_Kickout:
            SendScreeTipCenter(572);
            role.Group.Reset();
            LogicSystem.EventChannelForGfx.Publish("ge_updata_member_info", "team");
            ClearItem();
            UIManager.Instance.HideWindowByName("Team");
            break;

        case TeamOperateResult.OR_Dismiss:
            SendScreeTipCenter(578);
            role.Group.Reset();
            ClearItem();
            LogicSystem.EventChannelForGfx.Publish("ge_updata_member_info", "team");
            UIManager.Instance.HideWindowByName("Team");
            break;

        case TeamOperateResult.OR_Notice:
            SendScreeTipCenter(580, name);
            break;
        }
    }
示例#5
0
        private void HandleRequestJoinGroupResult(JsonMessage lobbyMsg)
        {
            JsonData jsonData = lobbyMsg.m_JsonData;

            ArkCrossEngineMessage.Msg_LC_RequestJoinGroupResult protoData = lobbyMsg.m_ProtoData as ArkCrossEngineMessage.Msg_LC_RequestJoinGroupResult;
            if (null != protoData)
            {
                string            nick   = protoData.m_Nick;
                TeamOperateResult result = (TeamOperateResult)protoData.m_Result;
                GfxSystem.PublishGfxEvent("ge_request_join_group_result", "group", nick, result);
            }
        }
示例#6
0
    /*离开队伍结果*/
    void LeaveTeamResult(string name, TeamOperateResult result)
    {
        RoleInfo role = LobbyClient.Instance.CurrentRole;

        switch (result)
        {
        case TeamOperateResult.OR_Notice:
            SendScreeTipCenter(580, name);
            SetMemberShow();
            break;
        }
    }
示例#7
0
        internal TeamOperateResult RequestJoinGroup(ulong guid, ulong groupid)
        {
            TeamOperateResult result = TeamOperateResult.OR_Busyness;

            if (guid == groupid)
            {
                return(result);
            }
            DataProcessScheduler dataProcess = LobbyServer.Instance.DataProcessScheduler;
            UserInfo             intrant     = dataProcess.GetUserInfo(guid);

            if (null != intrant && UserState.Online == intrant.CurrentState)
            {
                GroupInfo ginfo;
                if (m_Groups.TryGetValue(groupid, out ginfo))
                {
                    if (null != ginfo.Confirms &&
                        ginfo.Confirms.Count < GroupInfo.c_ConfirmNumMax)
                    {
                        bool ishave = false;
                        foreach (GroupMemberInfo info in ginfo.Confirms)
                        {
                            if (info.Guid == guid)
                            {
                                ishave = true;
                                result = TeamOperateResult.OR_Exists;
                                break;
                            }
                        }
                        if (!ishave)
                        {
                            GroupMemberInfo member = new GroupMemberInfo();
                            member.Guid          = guid;
                            member.HeroId        = intrant.HeroId;
                            member.Nick          = intrant.Nickname;
                            member.Level         = intrant.Level;
                            member.FightingScore = intrant.FightingScore;
                            member.Status        = intrant.CurrentState;
                            ginfo.Confirms.Add(member);
                            result = TeamOperateResult.OR_Succeed;
                        }
                    }
                    else
                    {
                        result = TeamOperateResult.OR_Overflow;
                    }
                }
            }
            return(result);
        }
示例#8
0
    /*确认加入结果*/
    void ConfirmJoinResult(string name, TeamOperateResult result)
    {
        RoleInfo role = LobbyClient.Instance.CurrentRole;

        switch (result)
        {
        case TeamOperateResult.OR_Succeed:
            if (role.Guid == role.Group.CreatorGuid)
            {
                SendScreeTipCenter(570, name);
            }
            else
            {
                SendScreeTipCenter(565, name);
            }
            break;

        case TeamOperateResult.OR_Busyness:
            SendScreeTipCenter(564);
            break;

        case TeamOperateResult.OR_Exists:
            SendScreeTipCenter(583);
            break;

        case TeamOperateResult.OR_Overflow:
            SendScreeTipCenter(567);
            break;

        case TeamOperateResult.OR_Unknown:
            SendScreeTipCenter(568);
            break;

        case TeamOperateResult.OR_Notice:
            SendScreeTipCenter(581, name);
            break;

        case TeamOperateResult.OR_OutDate:
            SendScreeTipCenter(582);
            break;

        case TeamOperateResult.OR_HasTeam:
            SendScreeTipCenter(569);
            break;
        }
    }
示例#9
0
        private void HandleSyncLeaveGroup(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_SyncLeaveGroup protoData = lobbyMsg.m_ProtoData as ArkCrossEngineMessage.Msg_LC_SyncLeaveGroup;
            if (null != protoData)
            {
                string            group_nick = protoData.m_GroupNick;
                TeamOperateResult result     = (TeamOperateResult)protoData.m_Result;
                if (TeamOperateResult.OR_Succeed == result)
                {
                    group.Reset();
                }
                GfxSystem.PublishGfxEvent("ge_leave_group_result", "group", group_nick, result);
                switch (result)
                {
                case TeamOperateResult.OR_Succeed:
                    GfxSystem.PublishGfxEvent("ge_quitFromABandUserJoined", "gt");
                    break;

                case TeamOperateResult.OR_Kickout:
                    GfxSystem.PublishGfxEvent("ge_quitFromABandUserJoined", "gt");
                    break;

                case TeamOperateResult.OR_Dismiss:
                    GfxSystem.PublishGfxEvent("ge_breakBandUserJoined", "gt");
                    break;
                }
            }
        }
示例#10
0
        internal TeamOperateResult JoinGroup(ulong guid, ulong groupid, int count)
        {
            if (guid == groupid)
            {
                return(TeamOperateResult.OR_Unknown);
            }
            DataProcessScheduler dataProcess = LobbyServer.Instance.DataProcessScheduler;
            TeamOperateResult    result      = TeamOperateResult.OR_OutDate;
            GroupInfo            info;

            if (m_Groups.TryGetValue(groupid, out info))
            {
                if (info.Count > info.Members.Count)
                {
                    UserInfo player = dataProcess.GetUserInfo(guid);
                    if (null != player && player.CurrentState == UserState.Online)
                    {
                        GroupMemberInfo member = new GroupMemberInfo();
                        member.Guid          = guid;
                        member.HeroId        = player.HeroId;
                        member.Nick          = player.Nickname;
                        member.Level         = player.Level;
                        member.FightingScore = player.FightingScore;
                        member.Status        = player.CurrentState;
                        bool isExist = false;
                        foreach (GroupMemberInfo atom in info.Members)
                        {
                            if (atom.Guid == guid)
                            {
                                isExist = true;
                                result  = TeamOperateResult.OR_Exists;
                                break;
                            }
                        }
                        if (!isExist)
                        {
                            info.Members.Add(member);
                            player.Group = info;
                            result       = TeamOperateResult.OR_Succeed;
                        }
                    }
                }
                else
                {
                    result = TeamOperateResult.OR_Overflow;
                }
            }
            else
            {
                UserInfo creator = dataProcess.GetUserInfo(groupid);
                UserInfo intrant = dataProcess.GetUserInfo(guid);
                if (null != creator && creator.CurrentState == UserState.Online &&
                    null != intrant && intrant.CurrentState == UserState.Online)
                {
                    GroupInfo group = NewGroupInfo();
                    group.CreatorGuid = groupid;
                    group.Count       = count;
                    List <GroupMemberInfo> members = new List <GroupMemberInfo>();
                    GroupMemberInfo        leader  = new GroupMemberInfo();
                    leader.Guid          = groupid;
                    leader.HeroId        = creator.HeroId;
                    leader.Nick          = creator.Nickname;
                    leader.Level         = creator.Level;
                    leader.FightingScore = creator.FightingScore;
                    leader.Status        = creator.CurrentState;
                    members.Add(leader);
                    GroupMemberInfo member = new GroupMemberInfo();
                    member.Guid          = guid;
                    member.HeroId        = intrant.HeroId;
                    member.Nick          = intrant.Nickname;
                    member.Level         = intrant.Level;
                    member.FightingScore = intrant.FightingScore;
                    member.Status        = intrant.CurrentState;
                    members.Add(member);
                    group.Members = members;
                    m_Groups.Add(groupid, group);
                    ///
                    creator.Group = group;
                    intrant.Group = group;
                    result        = TeamOperateResult.OR_Succeed;
                }
                else
                {
                    result = TeamOperateResult.OR_OutDate;
                }
            }
            return(result);
        }