//매칭 요청 public void SendLocalMatchingRequest() { MatchingData matchingData = new MatchingData(); matchingData.request = MatchingPacketId.MatchingRequest; Debug.Log("매칭 데이터 : " + matchingData); MatchingPacket packet = new MatchingPacket(matchingData); networkManager.SendReliable <MatchingData>(packet); }
//서버에 매칭 요청 메시지 송신 private void SetScreen() { if (!this.isMatching) { MatchingPacket matchingPacket = new MatchingPacket(); matchingPacket.clientID = this.ClientID; matchingPacket.GameID = (byte)KindOfGame.IndianPokser; matchingPacket.matchingMsg = (byte)Matching.StartMatching; matchingPacket.Ack = 0x01; indianPokerClient.SendMessage(Header.Matching, matchingPacket, indianPokerClient.ao.WorkingSocket); } }
private void Instance_MatchingPacketEvent(DataHandler.EventManager.MatchingPacketReceivedArgs e) { //0. 클라이언트 정보 가지고 오기 Param = 클라이언트 아이디 ClientInfo clientInfo = clientManagement.ClientInfoDic[e.Data.clientID]; //매칭요청패킷 저장하기위한 코드, 맘에 안든다 어떻게 고칠지 생각해보자. if (SendUser1MatchingPacket.clientID == null) { SendUser1MatchingPacket = e.Data; } else { SendUser2MatchingPacket = e.Data; } //1. 어떤 게임의 매칭 요청인지 확인 switch (e.Data.GameID) { case (byte)KindOfGame.IndianPokser: //클라이언트로부터 매칭 시작 메세지 받았을 시 if (e.Data.matchingMsg == (byte)Matching.StartMatching) { //2. 매칭 대기 리스트에 담기 WaitingMatchClientList.Add(clientInfo); PrintText("유저 [" + clientInfo.ClientID + "] " + clientInfo.ClientSocket.RemoteEndPoint.ToString() + " 님께서 인디언포커 게임 매칭요청 하였습니다."); } //클라이언트로부터 매칭 멈춤 메세지 받았을 시 else if (e.Data.matchingMsg == (byte)Matching.StopMatching) { //매칭 리스트에서 제거 WaitingMatchClientList.Remove(clientInfo); } break; case (byte)KindOfGame.MazeOfMemory: break; case (byte)KindOfGame.RememberNumber: break; case (byte)KindOfGame.FinishedAndSum: break; default: break; } //count == 2가 되면 두 클라이언트 매칭. //매칭된 클라이언트에게 MessageSend //RoomManager에게 클라이언트 정보 전송 if (WaitingMatchClientList.Count == 2) { //1. 매칭 성사된 클라이언트에게 SendMessage SendUser1MatchingPacket.matchingComplete = true; SendUser2MatchingPacket.matchingComplete = true; indianPokerServer.SendMessage(Header.Matching, SendUser1MatchingPacket, WaitingMatchClientList[0].ClientSocket); indianPokerServer.SendMessage(Header.Matching, SendUser2MatchingPacket, WaitingMatchClientList[1].ClientSocket); //2. RoomManager에게 클라이언트 정보 전송. gameRoomNumber = gameRoomManager.CreateGameRoom(WaitingMatchClientList[0], WaitingMatchClientList[1]); //3. 매칭리스트에서 클라이언트 제거 WaitingMatchClientList.Clear(); //4. 매칭패킷 저장 객체 초기화 SendUser1MatchingPacket = new MatchingPacket(); SendUser2MatchingPacket = new MatchingPacket(); Dispatcher.BeginInvoke(new Action(() => { ListView_ClientListView.Items.Refresh(); })); } }