public void onPlayerMove(object obj, ConnectedClient c) { Game.CommProtocol.StringMessage moveMsg = (Game.CommProtocol.StringMessage)obj; if (gameOver || moveMsg.color != currentPlayer().color) { return; } int[] start = new int[2], target = new int[2]; if (moveHandler.checkIfValidMove(moveMsg.msg, ref start, ref target, playerColorToInt(moveMsg.color))) { logic.makeMove(start, target, playerColorToInt(moveMsg.color)); currentMoveNumber++; broadcastBoard(); gameLog.pushToRawLog(moveMsg.msg); if (logic.winCheck()) { victory(); return; } nextPlayer(); } requestMove(); }
public void onPlayerMove(object stringMsg, ConnectedClient c) { #region init stage Game.CommProtocol.StringMessage msg = (Game.CommProtocol.StringMessage)stringMsg; ConnectedPlayer p = getMatchingPlayer(msg.color); if (currentGameState == GameState.initStage) { theGameLogic.handleInitMsg(msg.msg, p); return; } #endregion if (currentGameState != GameState.running || p != currentPlayer()) { return; } string moveString = msg.msg; int moveTarget; bool validMove = false; if (int.TryParse(moveString, out moveTarget)) { validMove = theGameLogic.playMove(moveTarget, p); } if (currentGameState == GameState.gameOver) //If somebody played a winning move we quit { return; } if (validMove) { nextPlayer(); broadcastStartTimer(currentPlayer().color, maxTimePerMove(), (Game.TurnBasedCommProtocol)protocol); } sendRequestMove(currentPlayer()); }
public void handleBoardInitRequest(NetworkMessage initMsg) { byte[] bytes = initMsg.reader.ReadBytesAndSize(); Game.CommProtocol.StringMessage msg = Game.ClientController.Deserialize <Game.CommProtocol.StringMessage> (bytes); Game.ClientPlayersHandler.onReceiveServerMsg(msg.msg, msg.color); }
public void requestMove(NetworkMessage boardMsg) { byte[] bytes = boardMsg.reader.ReadBytesAndSize(); Game.CommProtocol.StringMessage msg = Game.ClientController.Deserialize <Game.CommProtocol.StringMessage> (bytes); Game.ClientPlayersHandler.onReceiveServerMsg(formatBoard(msg.msg, msg.color), msg.color); }