private void Instance_HandleGamePacketEvent(DataHandler.EventManager.HandleGamePacketReceivedArgs e) { if (e.Data.startGame) { IndianPokerScreen.SetGameStart(e.Data); } else { this.IndianPokerScreen.IsExitGame = true; this.SetVisible(Screen.SelectedGame); MessageBox.Show("상대방이 게임에서 나갔습니다."); } }
private void Instance_HandleGamePacketEvent(DataHandler.EventManager.HandleGamePacketReceivedArgs e) { ClientInfo clientInfo = clientManagement.ClientInfoDic[e.Data.clientID]; if (e.Data.loadingComplete == true) { if (clientInfo.gameRoom == null) { return; } //else if (clientInfo.GameRoomNumber == ) // 게임이 끝난 후, 5초 안에 매칭이 성사 될 경우 예외처리 해주어야 함. //return; // (1) 두 클라이언트가 로딩이 완료되면 게임 시작 if (clientInfo.IsPlayGame == false) { //게임이 완전히 끝나면 false로 바꿔주어야 함. clientInfo.IsPlayGame = true; //방법 1. clientInfo.gamePlayer.isReadyForGame = true; if (clientInfo.gameRoom.player1.isReadyForGame && clientInfo.gameRoom.player2.isReadyForGame) { clientInfo.gameRoom.SendGameStartMessage += new GameRoom.DelegateSendGameStartMessage(SendGameStartMessage); clientInfo.gameRoom.SendPokerGameMessage += new GameRoom.DelegateSendPokerMessage(SendPokerGameMessage); clientInfo.gameRoom.GameStart(); } //방법 2. #region //결과는 같으나 의미하는 코드가 무엇이 더 정확한지 생각해봐야함. //int playerIndex = clientInfo.gamePlayer.PlyaerIndex; //switch (playerIndex) //{ // case 1: // gameRoomManager.GameRoomDic[clientInfo.gameRoom.gameRoomNumber].player1.isReadyForGame = true; // clientInfo.gameRoom.player1.isReadyForGame = true; // break; // case 2: // gameRoomManager.GameRoomDic[clientInfo.gameRoom.gameRoomNumber].player2.isReadyForGame = true; // clientInfo.gameRoom.player2.isReadyForGame = true; // break; //} //if (gameRoomManager.GameRoomDic[clientInfo.gameRoom.gameRoomNumber].player1.isReadyForGame && // gameRoomManager.GameRoomDic[clientInfo.gameRoom.gameRoomNumber].player2.isReadyForGame) //{ // gameRoomManager.GameRoomDic[clientInfo.gameRoom.gameRoomNumber].SendGameStartMessage += new GameRoom.DelegateSendGameStartMessage(SendGameStartMessage); // gameRoomManager.GameRoomDic[clientInfo.gameRoom.gameRoomNumber].GameStart(); //} #endregion //방법 1-2 / 2-2. #region //Random random = new Random(); //IndianPokerGamePacket player1GamePacket = new IndianPokerGamePacket(); //player1GamePacket.startGame = true; //player1GamePacket.playerTurn = player1.PlyaerIndex; //player1GamePacket.card = (short)random.Next(CARDMINNUM, CARDMAXNUM); //SendGameStartMessage(Header.Game, player1GamePacket, player1.owner); //IndianPokerGamePacket player2GamePacket = new IndianPokerGamePacket(); //player2GamePacket.startGame = true; //player2GamePacket.playerTurn = player1.PlyaerIndex; //player2GamePacket.card = (short)random.Next(CARDMINNUM, CARDMAXNUM); //SendGameStartMessage(Header.Game, player2GamePacket, player2.owner); #endregion } // (2) 승/패 결과진행 후에 새로운 게임 시작 else { clientInfo.gamePlayer.isReadyForGame = true; if (clientInfo.gameRoom.player1.isReadyForGame && clientInfo.gameRoom.player2.isReadyForGame) { clientInfo.gameRoom.GameStart(); } } } // (3) 한명의 클라이언트가 게임방에서 나올 시, 방파괴 및 게임 종료 else if (clientInfo.IsPlayGame == true && e.Data.startGame == false) { clientInfo.gameRoom.EndGame(clientInfo.gamePlayer, e.Data); Dispatcher.BeginInvoke(new Action(() => { ListView_ClientListView.Items.Refresh(); })); } }