public void requestMove(NetworkMessage boardMsg) { byte[] bytes = boardMsg.reader.ReadBytesAndSize(); CommProtocol.StringMessage msg = Deserialize <Game.CommProtocol.StringMessage> (bytes); lastRawBoard = msg.msg; string formattedBoard = Connect4JsonParser.formatBoardMsgFromServer(msg.msg, msg.color); ClientPlayersHandler.onReceiveServerMsg(formattedBoard, msg.color); }
public void onPlayerMove(object stringMsg, ConnectedClient c) { CommProtocol.StringMessage msg = (CommProtocol.StringMessage)stringMsg; mainGame.debugPrint(msg.color + " sent: " + msg.msg); ConnectedPlayer p = mainGame.getCurrentPlayer(); if (msg.color != p.color || c.peerID != p.client.peerID || gameOver) { return; } //Parse incoming msg string moveString = msg.msg; int[] move = new int[2]; try{ int chosenMove = int.Parse(moveString); move = new int[] { chosenMove % 8, chosenMove / 8 }; } catch (Exception e) { protocol.requestMove(mainGame.getCurrentPlayer().client.peerID, board.ToString(), mainGame.getCurrentPlayer().color); return; } //See if the move is a legit move if (board.getAvailabeMoves(p.color == Game.PlayerColor.White).Find(x => x[0] == move[0] && x[1] == move[1]) == null) { protocol.requestMove(mainGame.getCurrentPlayer().client.peerID, board.ToString(), mainGame.getCurrentPlayer().color); return; } board.playMove(move [0], move [1], p.color == Game.PlayerColor.White); RPCMove RPCmsg = new RPCMove(move, p.color); mainGame.broadcastRPCMove(RPCmsg); mainGame.switchToNextPlayer(); if (gameIsOver()) { gameOver = true; mainGame.setWinner(getWinColor()); return; } mainGame.startPlayerTimer(); protocol.requestMove(mainGame.getCurrentPlayer().client.peerID, board.ToString(), mainGame.getCurrentPlayer().color); }
public void onPlayerMove(object stringMsg, ConnectedClient c) { CommProtocol.StringMessage msg = (CommProtocol.StringMessage)stringMsg; ConnectedPlayer p = mainGame.getCurrentPlayer(); mainGame.debugPrint("Incoming from: " + msg.color); if (msg.color != p.color || c.peerID != p.client.peerID || gameOver) { return; } string move = msg.msg; int col; if (!int.TryParse(move, out col) || !board.isAllowedMove(col)) { protocol.requestMove(p.client.peerID, board.ToString(), mainGame.getCurrentPlayer().color); return; } //Valid move was made mainGame.pushToRawLog(move); moveCounter++; board.dropPiece(p.color == Game.PlayerColor.Yellow ? BoardLogic.Piece.Yellow : BoardLogic.Piece.Red, col); RPCMove RPCmsg = new RPCMove(int.Parse(move), p.color); mainGame.broadcastRPCMove(RPCmsg); Game.PlayerColor winColor = board.hasWinner(); if (winColor != Game.PlayerColor.None || moveCounter == 42) { mainGame.setGameOver(winColor); return; } mainGame.switchToNextPlayer(); mainGame.startPlayerTimer(); protocol.requestMove(mainGame.getCurrentPlayer().client.peerID, board.ToString(), mainGame.getCurrentPlayer().color); }