//방 입장 -> Server public void EnterRoom(int roomNum) { Debug.Log("방 입장 : " + roomNum); EnterRoomData enterRoomData = new EnterRoomData(roomNum); EnterRoomPacket enterRoomPacket = new EnterRoomPacket(enterRoomData); enterRoomPacket.SetPacketId((int)ClientPacketId.EnterRoom); DataPacket packet = new DataPacket(CreatePacket(enterRoomPacket), null); sendMsgs.Enqueue(packet); }
//방 입장 public void EnterRoom(DataPacket packet) { Console.WriteLine(packet.client.RemoteEndPoint.ToString() + "방 입장"); EnterRoomPacket enterRoomPacket = new EnterRoomPacket(packet.msg); EnterRoomData enterRoomData = enterRoomPacket.GetData(); string id = ""; try { id = loginUser[packet.client]; } catch { Console.WriteLine("현재 로그인 되어있지 않은 아이디 입니다."); return; } int characterId = userState[id].characterId; if (characterId == -1) { Console.WriteLine("캐릭터가 선택되지 않았습니다."); return; } int result = -1; try { Console.WriteLine(enterRoomData.RoomNum + "번 방에 " + packet.client.RemoteEndPoint.ToString() + "유저 입장"); result = roomManager.Room[enterRoomData.RoomNum].AddPlayer(packet.client, database.GetHeroData(id, characterId)); if (result != -1) { userState[id].state = enterRoomData.RoomNum; } } catch { Console.WriteLine("DataHandler::EnterRoom.AddPlayer 에러"); result = -1; } if (result == -1) { return; } RoomNumberData resultData = new RoomNumberData(result); RoomNumberPacket resultPacket = new RoomNumberPacket(resultData); resultPacket.SetPacketId((int)ServerPacketId.EnterRoomNumber); byte[] msg = CreatePacket(resultPacket); packet = new DataPacket(msg, packet.client); lock (sendLock) { sendMsgs.Enqueue(packet); } for (int playerIndex = 0; playerIndex < RoomManager.maxPlayerNum; playerIndex++) { if (roomManager.Room[enterRoomData.RoomNum].Socket[playerIndex] != null && playerIndex != result) { packet = new DataPacket(new byte[0], roomManager.Room[enterRoomData.RoomNum].Socket[playerIndex]); RequestRoomUserData(packet); } } }