/// <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); }
/// <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); } }
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)); }