Esempio n. 1
0
    //매칭 요청
    public void SendLocalMatchingRequest()
    {
        MatchingData matchingData = new MatchingData();

        matchingData.request = MatchingPacketId.MatchingRequest;
        Debug.Log("매칭 데이터 : " + matchingData);
        MatchingPacket packet = new MatchingPacket(matchingData);

        networkManager.SendReliable <MatchingData>(packet);
    }
Esempio n. 2
0
        //서버에 매칭 요청 메시지 송신
        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);
            }
        }
Esempio n. 3
0
        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();
                }));
            }
        }