private void onFigureMovedDown(object sender, EventArgs e) { if (sender is TetrisGrid) { if (remoteServer != null) { if (remoteServer.ClientSocket.Connected) { TetrisClientInfo info = new TetrisClientInfo(gridPlayerMe); remoteServer.Send(info); } } } }
//Quand on reçoit des données du serveur private void RemoteServer_DataReceived(Client client, object data) { //Si c'est du texte, à ce niveau, c'est soir le serveur qui dit qu'on peut start la game ou un que l'adversaire a perdu if (data is String) { if ((String)data == "start") { TimerHandler p = new TimerHandler(startGameGridMe); this.Invoke(p); } else if ((String)data == "gameOver") { RivalGameOverHandler p = new RivalGameOverHandler(StopGameGridMe); this.Invoke(p); } } else if (data is ChatMessage)//Si c'est un chat message, on l'affiche dans le chat { if (((ChatMessage)data).strMessage != "") { String strMessage = ((ChatMessage)data).strMessage; PrintMessageHandler p = new PrintMessageHandler(printMessageChat); this.Invoke(p, txtBoxChat, strMessage); } } else if (data is TetrisClientInfo) //Si c'est un client info, on rafraichit la grid de l'adversaire. On utilise un TetriClientInfo parce qu'on ne peut pas sérialiser les données graphiques comme les picrutebox { TetrisClientInfo info = (TetrisClientInfo)data; int rows = gridPlayerRival.numLines; int cols = gridPlayerRival.numCols; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) {//Copie des couleurs de la grid de l'adversaire gridPlayerRival.pictBox_Case[i, j].BackColor = info.tbColors[i, j]; } } //Ragrichissement du score gridPlayerRival.score = info.score; onScoreChanged(gridPlayerRival, EventArgs.Empty); } }