Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
 }
Esempio n. 4
0
 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);
 }