コード例 #1
0
        //서버에서 매칭 메시지 수신 시 게임 화면 표시
        private void Instance_MatchingPacketEvent(DataHandler.EventManager.MatchingPacketReceivedArgs e)
        {
            if (e.Data.matchingComplete)
            {
                this.SetVisible(Screen.IndianPoker);

                if (isPlaying)
                {
                    HandleGamePacket handleGamePakcet = new HandleGamePacket();
                    handleGamePakcet.clientID        = this.ClientID;
                    handleGamePakcet.loadingComplete = true;
                    handleGamePakcet.startGame       = false;
                    handleGamePakcet.MyCard          = 0;
                    handleGamePakcet.playerTurn      = 0;

                    indianPokerClient.SendMessage(Header.Game, handleGamePakcet, indianPokerClient.ao.WorkingSocket);
                }
            }
        }
コード例 #2
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();
                }));
            }
        }