void Start()
    {
        Assert.IsNotNull(checkerboardView);

        checkerboard = CheckersHelper.MakeDefaultCheckerboard();
        checkerboardView.SetCheckerboard(checkerboard);
        checkerboardView.SetControlsEnabled(true);
        checkerboardView.OnMoveRequest += OnMoveRequest;
        //checkerboard.AddAt(new Vector2Int(3, 3), Checkerboard.TileState.Black);
    }
Exemplo n.º 2
0
    public void On(MakeMove request)
    {
        if (!IsFromPlayersAtThisTable(request))
        {
            return;
        }

        if (!IsFromCorrectPlayer(request))
        {
            Debug.LogWarning("Request to move a piece came from the wrong player.");
            SendAllAtTable(MakeServerChatMessage("Warning: Request to make invalid move."));
            return;
        }

        if (!checkerboard.TryMakeMove(request.origin, request.target))
        {
            Debug.LogWarning("Request to make invalid move.");
            SendAllAtTable(MakeServerChatMessage("Warning: Request to make invalid move."));
            return;
        }

        AnnounceMove(request.origin, request.target);

        Checkerboard.TileState victorColor = checkerboard.CheckVictory();
        if (victorColor != Checkerboard.TileState.None)
        {
            ServerPlayer victor = victorColor == Checkerboard.TileState.White ? playerA : playerB;
            SendAllAtTable(new NotifyVictory(victor.playerId));
            SendAllAtTable(MakeServerChatMessage($"{victor.nickname} wins!"));

            checkerboard = CheckersHelper.MakeDefaultCheckerboard();
            StartNewGame();
            AnnounceNewTurn(GetCurrentPlayer());

            return;
        }

        currentPlayerIsB = checkerboard.currentPlayerColor == Checkerboard.TileState.Black;

        // only change if not double capture
        //currentPlayerIsB = !currentPlayerIsB;

        AnnounceNewTurn(GetCurrentPlayer());
    }
Exemplo n.º 3
0
 private void StartNewGame()
 {
     checkerboard = CheckersHelper.MakeDefaultCheckerboard();
     SendAllAtTable(new NotifyGameStart(checkerboard, playerA.playerId));
     SendAllAtTable(MakeServerChatMessage("The game is starting."));
 }