Ejemplo n.º 1
0
        internal void QuitRoom(ulong guid, bool is_quit_room, int srcHandle)
        {
            UserInfo user = LobbyServer.Instance.UserProcessScheduler.GetUserInfo(guid);

            if (user != null)
            {
                if (user.CurrentState == UserState.Room)
                {
                    RoomInfo room = user.Room;
                    if (null != room)
                    {
                        Msg_LR_UserQuit msg = new Msg_LR_UserQuit();
                        msg.UserGuid = guid;
                        msg.RoomId   = room.RoomId;
                        LobbyServer.Instance.RoomSvrChannel.Send(room.RoomServerName, msg);
                    }
                }
                else if (null != user.Room)
                {
                    user.Room.DelUsers(guid);
                    user.ResetRoomInfo();
                    user.CurrentState = UserState.Online;
                    user.LeftLife     = UserInfo.c_LifeTimeWaitOffline;
                }
                LogSys.Log(LOG_TYPE.INFO, "QuitRoom Guid {0} state {1}", guid, user.CurrentState);
            }
            else
            {
                Msg_BL_QueryUserStateResult builder = new Msg_BL_QueryUserStateResult();
                builder.Guid  = guid;
                builder.State = (int)UserState.DropOrOffline;
                LobbyServer.Instance.UserChannel.Send(srcHandle, builder);
            }
        }
Ejemplo n.º 2
0
        private void HandleQueryUserStateResult(Msg_BL_QueryUserStateResult msg_, PBChannel channel, int src, uint session)
        {
            UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler;
            UserInfo             user        = dataProcess.GetUserInfo(msg_.Guid);

            if (user != null && user.CurrentState == UserState.Room)
            {
                user.CurrentState = UserState.Online;
            }
        }
        private void HandleQueryUserState(Msg_LB_QueryUserState msg_, PBChannel channel, int src, uint session)
        {
            Msg_BL_QueryUserStateResult builder = new Msg_BL_QueryUserStateResult();

            builder.Guid = msg_.Guid;

            UserInfo info = m_UserProcessScheduler.GetUserInfo(msg_.Guid);

            if (null == info)
            {
                builder.State = (int)UserState.DropOrOffline;
            }
            else
            {
                builder.State = (int)info.CurrentState;
            }

            m_UserChannel.Send(src, builder);
        }
Ejemplo n.º 4
0
        internal void UserRelogin(ulong guid, int srcHandle)
        {
            UserInfo user = LobbyServer.Instance.UserProcessScheduler.GetUserInfo(guid);

            if (user != null)
            {
                if (user.CurrentState == UserState.Room)
                {
                    RoomInfo room = m_LobbyInfo.GetRoomByID(user.CurrentRoomID);
                    if (room != null)
                    {
                        //向RoomServer发送消息,重新进入房间
                        Msg_LR_ReconnectUser urBuilder = new Msg_LR_ReconnectUser();
                        urBuilder.UserGuid = guid;
                        urBuilder.RoomId   = user.CurrentRoomID;
                        LobbyServer.Instance.RoomSvrChannel.Send(room.RoomServerName, urBuilder);

                        LogSys.Log(LOG_TYPE.INFO, "User Restart GameClient , guid:{0}", guid);
                    }
                    else
                    {
                        //房间已经关闭
                        user.ResetRoomInfo();
                        user.CurrentState = UserState.Online;

                        Msg_BL_QueryUserStateResult builder = new Msg_BL_QueryUserStateResult();
                        builder.Guid  = guid;
                        builder.State = (int)UserState.Online;
                        LobbyServer.Instance.UserChannel.Send(srcHandle, builder);
                    }
                }
            }
            else
            {
                Msg_BL_QueryUserStateResult builder = new Msg_BL_QueryUserStateResult();
                builder.Guid  = guid;
                builder.State = (int)UserState.DropOrOffline;
                LobbyServer.Instance.UserChannel.Send(srcHandle, builder);
            }
        }