Exemple #1
0
        /// <summary>
        /// 加入房间
        /// </summary>
        /// <param name="room">房间号</param>
        /// <returns>在房间中的id,-1为不成功</returns>
        public RoomState JoinRoom(int roomID, out int playerInRoomID, string password = "")
        {
            JoinRoomC2S joinRoom = new JoinRoomC2S(roomID, password);

            Send(joinRoom);
            //waitTimer.Start();
            wait.WaitOne();
            playerInRoomID = ((JoinRoomS2C)transmit).PlayerId;
            return(((JoinRoomS2C)transmit).Room);
        }
Exemple #2
0
    /// <summary>
    /// 战斗服务器连接回调
    /// </summary>
    private void BattleConnectHandler()
    {
        Debug.Log("连接游戏服务器成功");
        NetMgr.Instance.ConnentionDic[SocketType.BATTLE].OnConnectSuccessful = null;
        var battleProxy = ApplicationFacade.Instance.RetrieveProxy(Proxys.BATTLE_PROXY) as Platform.Model.Battle.BattleProxy;

        battleProxy.isReport = false;
        if (battleMsgNo == NotificationConstant.MEDI_HALL_CUTCREATESCENE)
        {
            NetMgr.Instance.SendBuff <EnterRoomServerC2S>(SocketType.BATTLE, MsgNoC2S.ENTER_ROOMSERVER_C2S.GetHashCode(), 0, new EnterRoomServerC2S());
        }
        else if (battleMsgNo == NotificationConstant.MEDI_HALL_CUTJOINSCENE)
        {
            JoinRoomC2S joinC2S = new JoinRoomC2S();
            joinC2S.seat     = this.HallInfo.Seat;
            joinC2S.roomCode = this.HallInfo.RoomCode;
            NetMgr.Instance.SendBuff(SocketType.BATTLE, MsgNoC2S.JOIN_ROOM_C2S.GetHashCode(), 0, joinC2S);
        }
    }
Exemple #3
0
        private void JoinRoom(UserToken userToken, JoinRoomC2S joinRoomC2S)
        {
            // Cheak if in room
            var linqrooms = from linqroom in id2rooms where linqroom.Value.ContainsPlayer(userToken.PlayerData.Guid) != -1 select linqroom;

            foreach (var Troom in linqrooms)
            {
                Troom.Value.PlayerLeave(userToken.PlayerData.Guid);
            }
            //房间不存在
            if (!id2rooms.ContainsKey(joinRoomC2S.RoomId))
            {
                SendData(userToken, new JoinRoomS2C(-1, null));
                return;
            }
            //通过Id获取Room
            BaseRoom room = id2rooms[joinRoomC2S.RoomId];

            //验证密码
            if (!room.Password.Equals(joinRoomC2S.Password))
            {
                SendData(userToken, new JoinRoomS2C(-1, null));
                return;
            }
            //加入是否成功
            int foundIndex = room.PlayerJoin(userToken);

            if (foundIndex != -1)
            {
                foreach (var playerId in room.Players)
                {
                    if (userToken.PlayerData.Guid != playerId && playerId != Guid.Empty)
                    {
                        //发送玩家加入消息
                        SendData(id2players[playerId], (new PlayerJoinS2C(userToken.PlayerData.Guid)));
                    }
                }
            }
            SendData(userToken, new JoinRoomS2C(foundIndex, room.RoomState));
        }