DelUsers() private method

private DelUsers ( ) : void
return void
コード例 #1
0
        internal void OnRoomUserQuit(int roomid, ulong guid, Msg_RL_UserQuit originalMsg)
        {
            UserInfo user = LobbyServer.Instance.UserProcessScheduler.GetUserInfo(guid);

            if (user != null)
            {
                RoomInfo room = user.Room;
                if (null != room)
                {
                    if (room.RoomId == roomid)
                    {
                        room.DelUsers(guid);
                        user.ResetRoomInfo();
                        user.CurrentRoomID = 0;
                        user.CurrentState  = UserState.Room == user.CurrentState ? UserState.Online : user.CurrentState;
                    }
                }
                else
                {
                    user.CurrentRoomID = 0;
                    user.CurrentState  = UserState.Room == user.CurrentState ? UserState.Online : user.CurrentState;
                }

                LobbyServer.Instance.ForwardToWorld(user.UserSvrName, originalMsg);

                LogSys.Log(LOG_TYPE.INFO, "RoomServer User Quit Guid {0} State {1}", guid, user.CurrentState);
            }
        }
コード例 #2
0
        internal void OnChangeSceneResult(ulong userGuid, int roomID, int targetRoomID, int result, int hp, int mp)
        {
            UserInfo user = LobbyServer.Instance.UserProcessScheduler.GetUserInfo(userGuid);

            if (user == null)
            {
                return;
            }
            if ((int)SceneOperationResultEnum.Success == result)
            {
                RoomInfo room       = m_LobbyInfo.GetRoomByID(roomID);
                RoomInfo targetRoom = m_LobbyInfo.GetRoomByID(targetRoomID);
                if (null != room && null != targetRoom)
                {
                    int   fromSceneId = room.SceneType;
                    int   targetSceneId = targetRoom.SceneType;
                    float enterX = 50, enterY = 50;

                    /*
                     * int transportId = TransportConfigProvider.GenTransportId(fromSceneId, targetSceneId);
                     * TransportConfig cfg = TransportConfigProvider.Instance.GetTransportConfig(transportId);
                     * if (null != cfg) {
                     *  enterX = cfg.m_EnterX;
                     *  enterY = cfg.m_EnterY;
                     * }
                     */
                    room.DelUsers(userGuid);
                    if (room.RoomServerName == targetRoom.RoomServerName)
                    {
                        targetRoom.AddUsers(user.CampId, userGuid);
                        user.CurrentState = UserState.Room;

                        Msg_BL_UserChangeScene msg = new Msg_BL_UserChangeScene();
                        msg.Guid    = userGuid;
                        msg.SceneId = targetRoom.SceneType;
                        LobbyServer.Instance.UserChannel.Send(user.UserSvrName, msg);
                    }
                    else
                    {
                        user.CurrentState = UserState.Online;
                        RequestEnterSceneRoom(user, targetRoomID, hp, mp, enterX, enterY);
                    }
                    LogSys.Log(LOG_TYPE.INFO, "User change field success ! , guid:{0} room:{1} target room:{2} result:{3}", userGuid, roomID, targetRoomID, (SceneOperationResultEnum)result);
                }
                else
                {
                    LobbyServer.Instance.HighlightPrompt(user, 42);//进入游戏失败,请稍后重试
                }
            }
            else
            {
                LogSys.Log(LOG_TYPE.INFO, "User change field failed ! guid:{0} room:{1} target room:{2} result:{3}", userGuid, roomID, targetRoomID, (SceneOperationResultEnum)result);

                LobbyServer.Instance.HighlightPrompt(user, 42);//进入游戏失败,请稍后重试
            }
        }
コード例 #3
0
        //===================================================================
        //以下为与RoomServer之间的消息通信
        //响应RoomServer发来的房间创建反馈消息
        internal void OnEnterSceneResult(ulong userGuid, int roomID, int result)
        {
            UserInfo user = LobbyServer.Instance.UserProcessScheduler.GetUserInfo(userGuid);

            if (user == null)
            {
                return;
            }
            if ((int)SceneOperationResultEnum.Success == result)
            {
                user.CurrentState  = UserState.Room;
                user.CurrentRoomID = roomID;
                RoomInfo room = m_LobbyInfo.GetRoomByID(roomID);
                if (null != room)
                {
                    RoomServerInfo svrInfo;
                    if (m_LobbyInfo.RoomServerInfos.TryGetValue(room.RoomServerName, out svrInfo))
                    {
                        if (null != svrInfo)
                        {
                            NodeMessage enterSceneResultMsg = new NodeMessage(LobbyMessageDefine.EnterSceneResult, user.Guid);
                            GameFrameworkMessage.EnterSceneResult protoData = new GameFrameworkMessage.EnterSceneResult();
                            protoData.server_ip   = svrInfo.ServerIp;
                            protoData.server_port = svrInfo.ServerPort;
                            protoData.key         = user.Key;
                            protoData.camp_id     = user.CampId;
                            protoData.scene_type  = room.SceneType;
                            protoData.result      = (int)GeneralOperationResult.LC_Succeed;
                            protoData.prime       = Helper.Random.Next(2, 21);

                            enterSceneResultMsg.m_ProtoData = protoData;
                            LobbyServer.Instance.TransmitToWorld(user, enterSceneResultMsg);

                            LogSys.Log(LOG_TYPE.INFO, "user enter field success! guid {0} room {1} result {2}",
                                       userGuid, roomID, (SceneOperationResultEnum)result);
                        }
                        else
                        {
                            LobbyServer.Instance.HighlightPrompt(user, 42);//进入游戏失败,请稍后重试
                        }
                    }
                    else
                    {
                        LobbyServer.Instance.HighlightPrompt(user, 42);//进入游戏失败,请稍后重试
                    }
                }
                else
                {
                    LobbyServer.Instance.HighlightPrompt(user, 42);//进入游戏失败,请稍后重试
                }
            }
            else
            {
                RoomInfo curRoom = user.Room;
                if (null != curRoom)
                {
                    curRoom.DelUsers(userGuid);
                }
                user.CurrentState = UserState.Online;

                LogSys.Log(LOG_TYPE.INFO, "user enter field failed! guid {0} room {1} result {2}",
                           userGuid, roomID, (SceneOperationResultEnum)result);

                LobbyServer.Instance.HighlightPrompt(user, 42);//进入游戏失败,请稍后重试
            }
        }